PDA

Просмотр полной версии : Ленинградский монитор и другие программы для СПЕЦИАЛИСТА



barsik
25.03.2017, 23:14
Решил открыть личную тему. Ранее меня уже просили кое-что выложить для СПЕЦИАЛИСТА. Но ранее это было невозможно по техническим причинам.

Я занимался СПЕЦИАЛИСТОМ очень немного (с января 1988 до осени 1990). Использовался только журнальный вариант СПЕЦИАЛИСТА (MX тогда не было). Из доработок только - пара диодов, чтобы обращения на F800 переадресовывались на C800 и турбирование до 2.5 МГЦ. Плюс внешняя плата эл.диска 256/512К и только в самом конце появился КНГМД от КОРВЕТА. Поэтому наработок было немного. Но даже это не распространилось, т.к иногородних связей не было. Целью темы считаю создание конфигов для двух имеющихся эмуляторов СПЕЦИАЛИСТА, где бы работали хотя бы те программы, что есть.

Имею стандартный СПЕЦИАЛИСТ (и даже в корпусе, не только в виде плат и клавиатуры на столе), а также имею 5 плат СПЕЦИАЛИСТА ЭКСПРЕСС в разных стадиях переделки (в том числе на Z80). Не прикасался к СПЕЦИАЛИСТУ 25 лет, но сегодня решил вспомнить и ради интереса посмотреть в эмуляторе работу программы обслуживания компьютерного класса на базе СПЕЦИАЛИСТА.

И тут меня ждал "полный облом". Можно сказать, что не хватает злобы в адрес авторов эмуляторов. Причём обоих.

Сначала попробовал эмулятор EMU80 V4.0. И тут обнаружилось, что файлы в формате ORD этот эмулятор СПЕЦИАЛИСТА не грузит. Это безобразие, ведь формат ORD - это универсальный формат для 8-ми разрядок, непривязанный к формату на ленте и позволяющий иметь все параметры блока - имя, адреса и контрольную сумму. Поиски в дистрибутивах конвертора ORD в RKS результата тоже не дали.

Тогда решил вручную отредактировать хотя бы один файл в формат RKS, чтобы хоть что-то загрузить. Но, естественно, я уже не помню формат СПЕЦИАЛИСТА. Начал искать ДОК-файл в дистрибутиве, где был бы описан формат СПЕЦИАЛИСТА. Тут меня тоже посетил "полный облом".

По счастью у меня большая коллекция исходников всех ROM-BIOS для всех компьютеров, что у меня были. Пришлось тратить время, конвертировать исходники КР580 в Z80 (иначе ничего не поймёшь, т.к я уже давно забыл мнемоники КР580 и разбираться в них мне очень некомфортно). В итоге, потратив кучу времени, выяснил физический формат СПЕЦИАЛИСТА по сбросу и физический формат МОНИТОРА. Вот формат МОНИТОРА Орлова, он же формат всех остальных мониторов СПЕЦИАЛИСТА:

- Пилотон 256 байтов 00
- Синхробайт E6
- D9
- D9
- D9
- 17 байт имя файла
- Пилотон 768 байтов 00
- Синхробайт E6
- Начальный адрес (в нормальном порядке байтов, не как в РК86)
- Конечный адрес (в нормальном порядке байтов)
- Файл
- Контрольная сумма по C82A

Формат RAMDOS-COMMANDER отличается тем, что после 17-ти байтов имени идёт ещё 7 байтов:

- D9
- SCODE 1 байт
- WBYTE 3 байта
- ADRAM 2 байта

Эти байты не нарушают совместимости (т.к после ввода 17-ти байтов имени монитор ждёт пилотон и синхробайт E6), но они необходимы, чтобы командер мог грузить файлы сразу в эл.диск, минуя ОЗУ (что очень ценно, и не только ускоряет, но и позволяет грузить файлы размером более 36К).

Формат по сбросу отличается тем, что в нём нет заголовка с именем. Поэтому второй пилотон и сделан большим. Можно пропустить заголовок и нажать кнопку сброс в момент второго пилотона в 768 байтов. Тогда получится автозапуск файла.

Начнём с того, что в эмуляторе EMU80, если я правильно понял, вообще не поддерживается формат загрузки по сбросу. То есть коммерческие программы с защитой от записи в нём вообще не загрузить. Точнее можно загрузить только умные защищённые программы, которые при вводе по I, перехватывают управление. Как это делается можно увидеть в защищённых от копирования программах СПЕЦИАЛИСТА и ОРИОНА и прочитать в прилагаемом руководстве программиста. Кстати, конфига и эмулятора СПЕЦИАЛИСТА в варианте КООП SP-580 тоже не нашёл, а его программы тоже грузятся по сбросу, правда в формате MSX.

Естественно, не зная, что набирать, какие синхробайты выбрасывать, какие сохранять, сколько нулей от пилотонов сохранять, - ничего не получилось. Причём с тем ROM-BIOS, что был в дистрибутиве. Это вывело эмулятор EMU80 вне игры, до получения сведений о формате, который вводится по директиве I.

Тогда я перешёл к эмулятору B2M. В нём оказалось всё наоборот. Есть загрузка по сбросу, но нет загрузки файлов в формате монитора. Реальный СПЕЦИАЛИСТ, если нажать клавишу а затем <ВК> переходит в МОНИТОР C800. По-крайней мере, СПЕЦИАЛИСТ с нормальным ленинградским монитором. Если используется загрузчик из ж.МК 03.1987, то там надо нажимать на какие-то кнопки, чтобы выйти в монитор. Естественно, на какие кнопки жать, я не знаю, т.к всегда имел нормальный монитор.

Безуспешно попрыгав вокруг клавиатуры, я решил поставить ленинградский монитор, хотя бы частично, т.е 2 ПЗУ, (полностью надо 6 ПЗУ РФ2). Ленинградский монитор удобнее хотя-бы тем, что в нём видно, что идёт ввод с МГ - по бордюру бегут полосы, а на экране в правом верхнем углу бежит счётчик показывающий адрес ввода. А в эмуляторе и с древним монитором вообще "глухота", даже не понять что происходит - или завис или идёт чтение с МГ. Т.е не понятно "схватился" блок и пошла загрузка или синхробайт пропущен и по-прежнему идёт поиск синхробайта.

Но и ленинградский монитор, даже ранних версий отказался выходить в монитор C800. Посмотрев конфиг-файл, я обнаружил там такую же ерунду как в конфиге РК86, - адреса для перехвата п/п-мм работы с магнитофоном. Ленинградский монитор 100% совместим, и даже по внутренним точкам. Но кто-же мог знать в 1988 году, что для эмуляторов надо совмещать не только точки входа в подпрограммы, но и точки выхода из подпрограмм? С этим тоже "обломилось", т.к возиться, транслировать и выяснять на какой адрес попадает команда RET подпрограммы чтения массива - сегодня неохота (выясню это позже, чтобы получить работающий конфиг). Впрочем, всё-таки можно "вывалиться" в монитор C800, если "остановить ленту" во время чтения файла, тогда происходит BREAK переход по МГ-ошибке.

Обломившись с вводом готовых файлов, решил попробовать ввод WAV-файлов. Это тоже оказалось не тривиально. Недостаточно нажать на сброс (красный кружок), а затем нажать пиктограмму старт магнитофона. Нет, это было бы слишком нормально, поэтому не подходит.

Оказывается надо не так. Сначала надо в окне загрузки файла, появившимся по сбросу, сделать отказ (отмена) и только затем нажать на пиктограмму пуск магнитофона. Причём, если фонограмма не подогнана к самому началу пилотона или прямо с него, то тоже будет облом. На реальном СПЕЦИАЛИСТЕ нажимают на кнопку сброс в момент, как услышали пилотон. А в эмуляторе этого нет, т.к если сделать сброс во время хода ленты, то происходит уход на обычный сброс с загрузкой из готового файла (не из WAV-файла).

А правильно было бы сделать так, чтобы кнопка сброс во-время хода ленты, не приводила к выходу в режим ввода готового блока, а начинало бы читать WAV-файл с текущего места (так, как бы нажали сброс во время пилотона). Заметим, что ленинградский монитор настраивается на скорость ленты по пилотону, а стандартный монитор это не делает. Отчего читать чужие записи на реале (или в эмуляторе из WAV-файла) с монитором Орлова проблематично.

Разобравшись в этом, т.е как грузить WAV-файлы (пусть и без возможности сброса в момент начала записи), я начал загрузку WAV-файлов СПЕЦИАЛИСТА. Естественно в виде WAV-файлов есть только коммерчески защищённые программы (обычные файлы перенесены в виде кодов). Однако и тут оказалось не всё в порядке. WAV-записи, которые без проблем загружались из PC в реальный СПЕЦИАЛИСТ, при загрузке в эмуляторе часто вызывают выскакивание мигающей надписи "TAPE LOADING ERROR". Возможно, если поколдовать в редакторе звуковых файлов (например изменить частотную характеристику эквалайзером или изменить уровень сигнала), то ввод в эмулятор улучшится. Но с другой стороны впечатляет, что возможен ввод из WAV-файла, как из магнитофона. Это очень крутое свойство и в эмуляторе EMU80 его явно не хватает.

У меня есть инсталяторы защищённых программ. Вопрос к b2m: можно ли из эмулятора записать WAV-файл?

Хотел приложить WAV файлы коммерчески защищённых игр СПЕЦИАЛИСТА. Но ничего не получилось - файлы передал, даже несколько раз, но не вложилось. Какие макс.ограничения на размер файлов 7Z и RAR? Из-за Win XP и оттого старыми браузерами не могу воспользоваться файлообменником. Лучше бы отменили ограничение на размер файла, а сделали бы так, чтобы очень большие файлы хранились бы во вложениях лишь сутки. Кто не успел скачать, тот опоздал...

Какой формат WAV (частота дискретизации, число бит) выгодно использовать, чтобы и размер был минимальным и надёжность ввода не падала?




КАК ДЕЛАТЬ ПРОГРАММЫ С АВТОМАТИЧЕСКОЙ ЗАГРУЗКОЙ
===============================================

Все видели, как красиво загружаются с магнитофона игровые программы
ZX-SPECTRUM. Программы для "СПЕЦИАЛИСТА" могут загружаться также эффек-
тно, тем более, что в "СПЕЦИАЛИСТЕ" загрузка осуществляется сразу по
сбросу, т.е нет необходимости набора команды с клавиатуры: запустил маг-
нитофон нажал на кнопку и любуйся "эффектами загрузки". Весьма эффектна
загрузка заставки прямо в экран, бегущий счетчик, отсчитывающий время
загрузки, двигающиеся спрайты и блоки, вывод текста-описания игры во
время ее загрузки с ленты и другие подобные эффекты. Кроме задачи "укра-
шения" процесса загрузки, блочная автоматическая загрузка позволяет ре-
шить задачу защиты от копирования коммерческих программ, т.к при блоч-
ной загрузке появляется возможность изменить формат записи на ленту, тем
самым затрудняя задачу взлома защиты кракеру (нельзя путать 2 разных
термина - кракер и хакер; в то время как хакер, это высококвалифициро-
ванный программист-любитель, не занимающийся пиратством, кракер - прог-
раммист-вредитель "ломающий" защиты с целью "прославиться" и "зарабо-
тать" на пиратстве, т.е понятие кракер равноценно понятию вор).
Данная статья предназначена для начинающих программистов для
"СПЕЦИАЛИСТА" и предполагает то, что читатель уже знает все стандартные
подпрограммы BIOS "СПЕЦИАЛИСТА". Кроме того необходимо заметить, что эта
статья относится только к "настоящему СПЕЦИАЛИСТу", т.е к "СПЕЦИАЛИСТу"
в самой стандартной версии, а именно аппаратура соответствует 48к-бай-
тной версии (МК,1987,N2), BIOS - загрузчик Волкова (MK, 1987,N5) или лю-
бой другой полностью совместимый BIOS (напр: ленинградский МОНИТОР лю-
бой версии). Версии аппаратуры и программ кооп."SP-580", Афанасьева,
"КОЛЕД" и других, совместимы не 100% и имеют другие "стандартные" под-
программы.
Для начала вспомним, что происходит при работе загрузчика сразу пос-
ле нажатия на кнопку "сброс" волковский загрузчик сразу "вылетает" на
адрес C444. Здесь осуществляется инициализация системных переменных BIOS
(и МОНИТОРА в версии Л-89). Для этого вызывается стандартная (и так "го-
рячо" всеми любимая) подпрограмма пересылки блока: C42D- переброска бло-
ка (HL)...(DE) -> (BC). Далее п/п-ма C438 (PRINT) выводит на экран код
"СТР" (очистка экрана) и сообщение: "PROGRAMM?" (в ленинградском монито-
ре выводится надпись "ЛЕНИНГРАД-1989") и вот здесь начинается самое ин-
тересное. Запускается п/п-мма C3F9. Смысл ее работы: сначала на ленте
ищется синхробайт "Е6". Пока он не найден или нет сигнала, эта п/п-ма
"крутится" на одном месте. Как только синхробайт пойман, то вводятся 4
последующих байта. Два первых определяют с какого адреса загружать вво-
димый блок в ОЗУ (адрес начала блока), 2 следующих - адрес конца блока в
ОЗУ. После этого п/п-ма C3F9 вводит блок и заносит его в ОЗУ по задан-
ным адресам. Ввод заканчивается при заполнении последней ячейки. Адрес
начала блока заносится в ячейку 8FE3. И на этом работа п/п-мы C3F9 за-
канчивается. Далее загрузчик с помощью команды PCHL передает управление
введенной программе (по адресу начала блока). Никакого контроля на пра-
вильность ввода не осуществляется. Таким образом блок грузящийся "по
сбросу" имеет вид: цепочка нулевых-байт (пилотон), синхробайт Е6,
нач.адрес блока (мл.байт, старший байт), конечный адрес блока
(мл.б,ст.б) и сам блок. В таком формате работал монитор Волкова (мони-
тор-1985, 8D00). Этот МОНИТОР уже не используется на "СПЕЦИАЛИСТАХ" и
все пользователи с сентября 1988 года используют только "орловский
МОНИТОР" (обычно в комплекте со зверковским загрузчиком МК,89/4) или го-
раздо более совершенный ленинградский монитор (В.Ивинских). Эти монито-
ры имеют директивы R/W работающие в таком-же формате, за исключением то-
го, что сразу-же за блоком следует контр.сумма: сразу-же, а не как в "у-
родском" формате РК-86, где "К.С" идет только после дополнительной це-
почки нулей и еще одного синхробайта Е6 (кроме того в РК-86 "перепутаны"
адреса блока, т.е у них сначала идёт старший, потом младший байты адре-
са). Кроме директив R/W МОНИТОР имеет директивы I/O - формат с именем
файла (имя до 17 символов, запрашивается). Запись имеет следующий вид:
пилотон (256 0-вых байт), синхробайт E6, 3 байта D9, имя файла, длинный
пилотон (768 0-вых байт), синхробайт Е6,нач.адр, кон.адр, файл, кон-
тр.сумма. Т.е по сути добавлен только "заголовок" со своим пилотоном.
Формат RAMDOS-COMMANDERа полностью совместим с таким форматом, т.к
доп.параметры файла (CSUM, SCODE, WBYTE, ADRAM) передаются вслед за име-
нем файла. Это теория. Как же делаются многоблочные автоматически загру-
жающиеся программы? Идея заключается в том, что сначала загружается ма-
ленькая программка, для "раскрутки". Она может грузиться по сбросу или
перехватывать управление при работе директив ввода - R/I/Y/Z. После заг-
рузки этой программки, ей передается управление, а дальше она уже де-
лает, что хочет.
Первый пример. Пусть по сбросу загружается следующая программа:

ORG 0
LXI H,TXT1 ; HL-адрес текста
CALL 0C438H ; выводим текст (C818)
CALL 0C3F9H ; вводим новый блок
LHLD 8FE3H ; и передаем
PCHL ; ему управление
TXT1: DB 1FH,'ПРИВЕТ !'
DB 0DH,0AH,0

Эта программа очистит экран, напишет "ПРИВЕТ !" и будет вводить но-
вый блок, а потом его запустит на исполнение. Пусть второй блок будет
такой:

ORG 1000H
LXI H,TXT2
CALL 0C438H ; вывод TXT2
JMP 0C800H ; выход в монитор
TXT2: DB 'КОНЕЦ ВВОДА',0

После загрузки этого второго блока будет выдано сообщение TXT2 и
"выйдем" в монитор. Такой ввод возможен только в разные адреса, ведь
после ввода второго блока еще продолжает работать первый блок. Однако в
BIOS имеется п/программа C453, которая вводит и автоматически запускает
на исполнение введенный блок. Если использовать эту подпрограмму, то
второй блок можно грузить прямо на место расположения первого (если пер-
вый блок уже не нужен). Это всё для блоков загружаемых по "указанным"
адресам. Но BIOS "СПЕЦИАЛИСТА" позволяет загружать блоки и по адресам,
задаваемых программой. Тогда на ленте должны отсутствовать начальный и
конечный адреса загрузки блока. Итак C422 - п/п-ма, которая загружает
блок по "произвольным" адресам. Ей надо указать, куда загружать блок в
регистрах HL,DE. Вот пример. 1-й блок:

LXI H,TXT1
CALL 0C438H ; вывод сообщения
LXI H,1000H ; указываем нач. И
LXI D,17FFH ; конечный адреса
CALL 0C422H ; вводим 2 к-байт
JMP 1000H ; и запускаем

Таким образом BIOS "СПЕЦИАЛИСТА" предоставляет 4 стандартные подпрог-
раммы ввода блока. Они описаны во всей литературе по "СПЕЦИАЛИСТу" и
должны безусловно поддерживаться на всех его клонах:

C3F9 - ввод блока с поиском синхробайта, адреса
начала и конца блока указаны на ленте

C422 - ввод блока с поиском синхробайта, адреса
начала и конца блока заданы в HL и DE

C414 - то же самое, но без поиска синхробайта,
позволяет иметь синхробайт не равный E6

C453 - ввод блока с поиском синхробайта и авто-
матическим запуском блока на исполнение

Как видите, благодаря наличию этих удобных П/П-м и процедуры загруз-
ки по сбросу делать автоматически загружаемые программы для
"СПЕЦИАЛИСТА" совсем не сложно. Однако теперь теперь перед программис-
том возникает задача - а как же записать на ленту блоки один за другим,
да еще в некоторых не указывать адреса загрузки, а в других указывать.
Также встает задача последующего копирования блочных программ. Обе эти
задачи были блестяще решены еще в 1988 г В.Ивинских. Записывать блоки на
ленту можно используя ранние версии ленинградского МОНИТОРА (до 2.7), в
которых возможности директив работы с лентой существенно расширены (мож-
но вводить/выводить блоки в указанных выше форматах).
Тем не менее специально для создания и копирования многоблочных прог-
рамм В.Ивинских в конце 1988 г разработал две программы: КОМПОНОВЩИК и
КОПИРОВЩИК. Эти программы предназначены для работы с блоками в одном
стандартном двухфазном формате записи на ленту. Поэтому многие пользова-
тели столкнувшись с тем, что КОПИРОВЩИК не позволяет им копировать защи-
щенные форматом записи блочные программы "СПЕЦИАЛИСТА" напрасно ругали
программу КОПИРОВЩИК (SP-COPY). Рассмотрим назначение программы
КОМПОНОВЩИК. Эта программа позволяет загрузить в ОЗУ компьютера с ленты
заранее подготовленные блоки, причем все они должны быть в стандартном
формате монитора (с именем по директиве "О"). При вводе КОМПОНОВЩИК за-
поминает параметры введенных блоков: адреса, длины пилотонов, имена,
константы ввода. Далее можно, установив требуемые параметры вывода,
вновь вывести эти блоки на ленту и получить готовую многоблочную прог-
рамму. Отличительная особенность КОМПОНОВЩИКА - автоматическое определе-
ние константы чтения (для владельцев ленинградского МОНИТОРА это не осо-
бенность, ибо в нем настройка на скорость осуществляется при работе всех
директив ввода, в том числе и ZX!). После запуска КОМПОНОВЩИКА внизу эк-
рана появляется главное меню программы. Выбранный режим отображается пу-
тем "инверсии". В начале надо запустить режим "LOAD" (нажатием <ВК>) и
ввести все заранее подготовленные блоки. Вводимые блоки укладываются в
ОЗУ один за другим (до 8000H), а на экране в виде таблицы отображается
информация о введенных блоках. Когда введены все блоки, выходят в меню
нажатием <СТР>. Режим "EDIT" позволяет корректировать длину цепочки ну-
левых байтов перед блоком при записи на ленту: миним.длина соответ-
ствует 01, максим. - 09 и выбирается нажатием на соотвующую цифровую
клавишу. Каждая единица дает 85 нулевых байтов (поэтому 03 - стандар-
тная длина 256). Далее нажатием <+> и <-> можно определить выводить ад-
реса начала и конца блока или нет. Клавишами управления курсором влево и
вправо можно задать константу записи (25-99). В режиме "DELETE" можно
удалить самый последний введенный блок, нажав на <ПС> (а не <ВК>!), и
так можно удалить все блоки (тут надо осторожнее). Режим "SAVE". Тут все
просто - <ВК> и на ленту пошли блоки один за другим в заданных форматах
и с нужными скоростями. "EXIT" - это выход в МОНИТОР по адресу C800.
Теперь о копировщике "SP-COPY". В.Ивинских сделал его множество вер-
сий. Наибольшее распространение получили версии 1.3/4 и версия 2.0
(MSХ). Эти версии загружаются по сбросу, причем работают прямо из экран-
ной области (как "жаловались" многие пользователи - работает хорошо, но
возникает "грязь" у правого края экрана !). Т.е сама программа разме-
щаясь в экране (4К) не занимает места в ОЗУ для программ, оставляя для
буфера ввода все 36К ровно. Эта программа абсолютно не использует ника-
ких П/П-мм в ПЗУ и даже стек переносит в экранную область. Скопировать
SP-COPY можно "им самим", но не нужно пытаться что-либо менять в прог-
рамме, впрочем вряд ли это у вас получится. Режимов работы всего 3 и всё
очень просто. Режим выбирается "стрелками вверх-вниз" и запускается по
<ВК>. Отмена режима - <СТР>. Последний введенный блок можно удалить в
любом режиме, нажав <НР>/<СТР> (одновременно). Скорость вывода общая для
всех блоков - и устанавливается "стрелками вправо-влево". Скорость вво-
да определяется автоматически и запоминается; "автоматически" вычисляет-
ся и устанавливается соответствующая константа вывода. Режим "EXIT" -
выход в монитор.
А теперь рассмотрим какие блоки применялись в некоторых блочных прог-
раммах "СПЕЦИАЛИСТА", сделанных в Ленинграде, на примере простейшего
блочного загрузчика игры с заставкой. Игра загружается по сбросу (это
наиболее удобно). Первым загружается и сразу запускается маленький стар-
товый блок (100 байт). Он очищает экран, выводит надпись "НЕ ВЫКЛЮЧАЙТЕ
МАГНИТОФОН..." (или по английски - "DO NOT STOP YOUR TAPE NOW..."). Да-
лее определяется константа чтения (так как пользователь может не иметь
ленинградского МОНИТОРА, где это делается по сбросу) и управление пере-
дается программе C453 - загрузка следующего блока с его автоматическим
запуском. Пока всё просто. То есть первый блок на ленте имеет вид:

Нач.адрес
Кон.адрес
Вывод надписи
Опред-е конст.чт.
JMP 0C453H
Контр.сумма

В этом блоке контр.сумма не используется, но в последующих блоках она
имеет значение. Следующий блок - загрузчик всего остального. Его струк-
тура:

Нач.адрес
Кон.адрес
Вывод текста "GAME IS LOADING"
Загрузка программы вывода заставки (бл.3)
Загрузка картинки-заставки (бл.4)
CALL программы вывода картинки
Загрузка блоков игры (бл.5)
JMP игра
Контр.сумма

Таким образом 2-й блок по загрузке и запуску не отличается от первого
- так же загружается и автоматически запускается (хоть так как констан-
та чтения теперь не важна, этот блок можно для повышения надежности гру-
зить со скоростью вдвое медленнее). Вся дальнейшая загрузка осущес-
твляется под управлением этой программы - загрузчика (блока 2). За-
метьте ! - последующие 3 блока уже не имеют начального и конечного адре-
сов. Программа-загрузчик знает их заранее. Этот загрузчик уже не ис-
пользует П/П-мы BIOS "СПЕЦИАЛИСТА", а имеет свою собственную, более со-
вершенную программу ввода с магнитофона, - она осуществляет текущий кон-
троль качества ввода, подстраивается под скорость записи, проверяет кон-
тр.суммы и может делать различные "чудеса", типа бегущего счетчика, по-
лос по бордюру, двигающихся блоков и т.п. Впрочем эти эффекты вовсе не
являются чудесами, а являются обычным делом для владельцев ленинградско-
го монитора (где бегущий счетчик адреса и поддержка бордюра входят пря-
мо в стандартные п/п-мы ввода/ вывода байта). Текущий контроль ввода
сразу-же позволяет определить "останов" магнитофона или провал в записи
(попробуйте остановить ленту - сразу же "запищит" и замигает надпись
"TAPE LOADING ERROR !"). Игру полезно грузить маленькими блоками с кон-
тр.суммами каждого. Во-первых это позволяет сразу же обнаружить сбой, а
во-вторых большое количество блочков загружаемых по разным адресам
(напр-р: задом наперед) не затрудняя копирование копировщиком, сильно
затрудняет работу кракерам, любящим "влезать" в чужие программы. Естес-
твенно стартовый адрес игры не должен быть очевидным и при работе игра
должна проверять "флаги", выставленные загрузчиком, для сообщения "об
отсутствии пиратства". Немного фантазии и "изменять" вашу программу уже
мало кто захочет, ибо время потраченное на взлом сравнится с трудоемкос-
тью создания новой программы. Естественно если ваша программа защищает-
ся от копирования, а не только от изменения, то загрузчик должен изме-
нить и формат записи и конечно от копирования защищать программы нужно
значительно "умнее",так как программу защищаемую от копирования, "кра-
кают гнусные пираты", с целью получения наживы, а не любители для лично-
го удовольствия.
Чтобы сделать описанную выше блочную загрузку игры можно воспользо-
ваться компоновщиком, а если скорость ввода не меняется то можно обой-
тись ленинградским монитором и копировщиком. Все блоки готовятся зара-
нее и записываются на ленту причем первые 2 блока обязательно из тех-же
адресов, где они будут работать! Остальные - всё равно. Эти блоки запи-
сывают на ленту, причем для блоков 1 и 2 нужно выводить адреса загрузки,
а для блоков 3,4 и 5 не надо, и даже нельзя. Иначе весь блок будет счи-
тан со сдвижкой на 4 байта! кроме того между блоком 4 и блоком 5 необхо-
дима пауза побольше - т.е длинный пилотон перед блоком 5. Это необходи-
мо, чтобы успела отработать программа копирования в экран цветной зас-
тавки. Тут уж без компоновщика, одним копировщиком не обойтись кстати
копировщик при копировании всегда &quot;считает" и запоминает длину пилотона,
поэтому если вы будете нажимать <ВК> позже начала пилотона, то пилотон
на копии будет короче, чем на оригинале. Чтобы облегчить вам разработку
собственных блочных загрузчиков, рассмотрим простую 4-х блочную програм-
мку. Проделайте всё сами на компьютере. С помощью редактора и ассемблера
подготовьте на ленте 4 файла (уже в машинных кодах разумеется).

БЛОК 1: ORG 0
LXI H,TXT1
CALL 0C438H
JMP 0C453H
TXT1: DB 1FH,'ЗАГРУЖЕН БЛОК 1',0

БЛОК 2: ORG 0
LXI H,TXT2
CALL 0C438H
LXI H,100H
LXI D,KON3-1 ; конечный адрес блока 3
MVI A,0FFH ; подставьте после трансляции
CALL 0C416H ; программы блока 3
JMP 100H
TXT2: DB 13,10,'ЗАГРУЖЕН БЛОК 2',0

БЛОК 3: ORG 100H
LXI H,TXT3
CALL 0C438H
CALL 0C3F9H
LXI H,TXT4:
LHLD 8FE3H
CALL 0CC6CH ; вывод HL в HEX-виде
PCHL
TXT3: DB 13,10,'ЗАГРУЖЕН БЛОК 3',0
TXT4: DB 13,10,'ЗАГРУЖЕН БЛОК 4 С АДРЕСА: ',0
KON3: ; это адрес конца блока 3

БЛОК 4: ORG 200H
LXI H,TXT5
CALL 0C438H
JMP OC800H ; выход в монитор
TXT5: DB 13,10,'БЛОК 4 ОТРАБОТАЛ !',0

Тут применены все виды загрузки. При компоновке для блоков 1,2 и 4
надо указывать их адреса загрузки (т.е "+" в таблице компоновщика), для
блока 3 - нет. Но в блоке 2 должны быть заданы его начальный и конечный
адреса. Думаю проделать этот простейший пример сможет каждый. Применив
немного фантазии и свои несложные програмки вы можете значительно "укра-
сить" процесс загрузки имеющихся у вас игр (например: сделайте процесс
загрузки с двойным дублированием блоков или с выводом сообщения после
ввода очередного блока: "до конца загрузки осталось XX мин. XX сек.").
Советуем также разобрать стартовые блочки-загрузчики, примененные,
напр-р в копировщике или других наших блочных программах. Изучив их заг-
рузчики, вы сможете "выдрать" надежные п/программы чтения, а из игр вы
можете взять подпрограмму ввода заставки прямо в экран (по
синклеровски). А изучение загрузчиков защищенных от копирования прог-
рамм позволит вам и самим защищать свои программы, что позволит вам да-
же продавать ваши программы, не опасаясь пиратов. К сожалению нарисо-
вать граф.редактором картинку-заставку - невозможно (если вы не худож-
ник). Поэтому выходом здесь может быть использование заставок или спрай-
тов из программ ZX-SPECTRUM. Для этого служит программа В.Ивинских
"ZX-PICTURE". Она позволяет считывать с ленты программы в формате
"СИНКЛЕРА" и использовать графику его программ. Несколько замечаний. Для
"СПЕЦИАЛИСТА" существует несколько версий BIOS и МОНИТОРОВ (конечно ни
один из этих МОНИТОРОВ нельзя даже сравнивать по качеству с ленинград-
ским). Все эти программы большей частью совместимы с BIOS Волкова по
системным п/программам в ПЗУ, но служебные ячейки в ОЗУ обычно ис-
пользуют по-разному. Например в ленинградском МОНИТОРЕ векторизованы все
стандартные п/программы, что означает, что любая из них может быть заме-
нена п/программой пользователя (напр: можно загрузить магн.драйвер, ко-
торый заменив стандартные п/п-мы ввода/вывода байта на МГ, изменит фор-
мат работы с магнитофоном на MSX (2-х частотн.с побайтовой синхр-ей) или
напр-р "синклеровский"), а также в ОЗУ хранятся адреса важных п/п-м са-
мого монитора (CCP), служебные ячейки RAMDOS и т.д. Именно благодаря та-
кому "расширению" количества служебных ячеек BIOS, ленинградский мони-
тор и стал таким "гибким" и удобным. Поэтому, чтобы обеспечить совмести-
мость со всеми используемыми системными программами не стоит использо-
вать для загрузчиков ОЗУ по адресам служебных ячеек (256 байт ниже экра-
на), делать блочные программы использующие "нестандартные" входные точ-
ки разных BIOS-ов, а также "перехватывающие" управление за счет "служеб-
ных" ячеек. Конечно эффектно, когда программа "вышибает" управление у
монитора и Вы при попытке загрузить обычный файл директивой "I", вдруг
видите на экране разные неожиданные "чудеса". Однако это приведет к неу-
добству других пользователей, ведь для "СПЕЦИАЛИСТА" столько-же монито-
ров, сколько крупных городов в стране. Поэтому для "трюков" следует ис-
пользовать лишь стандартные ячейки. Некоторые из этих стандартных ячеек
приведены ниже:

8FE3/E4 - при работе п/п-мы C3F9 сюда заносится
адрес начала введенной в ОЗУ программы

8FE7/E8 - адрес начала знакогенератора сдвинутый
вправо на 3 разряда

8FEC - признак регистра РУС/ЛАТ (8А ИЛИ 3А)

8FEF/F0 - код нажатой клавиши по верхн. Регистру

8FF1/F2 - частота/длительность звука при работе
станд.подпрограммы вывода звука - C170

8FF6/F7 - ячейка временного хранения стека (SP)

8FFA/FB - "маска" при выводе на экран (XRA)

8FFC - вертикальная координата курсора (0...255)

8FFD - горизонтальн.координата курсора (0...191)

8FFE - константа записи. Зависит от такта про-
цессора. Для 2 МГЦ=28H, 2,5=34H, 4,0=5FH

8FFF - константа ввода. При такте 2МГЦ = 3CH.
Для 2,5 МГЦ = 4CH, для 4 МГЦ = 80H. Для
ленинградского монитора при работе п/п-м
с поиском с/б это значение не играет роли
т.к сюда заносится автоматически опреде-
ленная константа ввода, но при работе п/п
ввода байта, эта ячейка ОЗУ также важна.

И еще один совет. В последнее время многие "специалисты" повышают
такт процессора до 2,5-3,5 МГЦ для КР580, и до 4,0-4,5 МГЦ при замене
процессора на "ZILOG-80". При разработке блочных загрузчиков это необхо-
димо учитывать, ибо, если например ваш загрузчик контролирует время до
начала очередного блока (естественно, чтобы "помучить кракера"), а т.к
считать время можно только програмно, то при загрузке на машине с двой-
ным тактом, программа подождав вдвое меньшее время будет вынуждена "у-
ничтожить" всё ОЗУ, полагая что "кракер" пытается "ломать вашу защиту".
Проще всего узнать скорость машины можно "посмотрев" константу записи,
которая также инициализируется по сбросу.


Этот текст был написан в 1989. Сейчас он был лишь немного доработан.
Следует также заметить, что все, что здесь описано, было разработано
В.Ивинских еще в 1988 году. Тем не менее эти материалы могут помочь на-
чинающим сделать первые шаги в программировании, кого-то подтолкнут к
собственным разработкам (возможно и для "ОРИОНА") поэтому этот текст и
был предложен для планируемого журнала для любителей ОРИОНА В.Леонтьева
из Ижевска.

barsik, С-Петербург, апрель 1993


А что за метки и почему у меня нет прав их создавать? Метки - это такое окно при открытии темы. Когда я ввёл свои метки, через запятую, как просили, выдалось сообщение, что я не имею прав.

Вот ещё вложение (добавленное), но почему-то эти файлы не "прилипли" к тем, что были выложены ранее.

NEO SPECTRUMAN
25.03.2017, 23:21
Какие макс.ограгичения на размер файлов 7Z и RAR? Из-за Win XP и оттого старыми браузерами не могу воспользоваться файлообменником.

жмем http://zx-pk.ru/images/styles/asdialup/misc/question_icon.gif при добавление вложений
и смотрим для каких файлов какие ограничения
для архивов 640кб
мало того
теперь ограничение на одного пользователя на все вложения в 20 мегабайт...

и какие еще проблемы в вин хр?
ну не с предустановленного же IE в интернете сидеть


лично я пользуюсь яндекс диском

barsik
25.03.2017, 23:37
жмем при добавление вложений
и смотрим для каких файлов какие ограничения

Да, я помнил, что где-то читал, что есть ограничения, но забыл где. Вообще-то по умному сообщать об ограничениях надо тогда, когда я гружу вложение, а не когда-то давно. Разбил один файл на кусочки по 640К и вставил в предыдущее вложение. Поэтому помните, что для правильной распаковки, надо считать все файлы многотомного архива.

Кстати никто не кинет ссылку на архиватор 7Z для Win XP, такой чтобы умел делать многотомные, а не однофайловые архивы. а то у меня древний 7Z, не умеющий это. А последней версии не годится, т.к не работает в Win XP. Надо примерно 3-х летней давности.


и какие еще проблемы в Win XP?
Проблемы такие. С Win XP не работают новейшие браузеры. Поэтому использую браузеры 3-4 летней давности. Из последних работает лишь Firefox Yandex. Пользуюсь также Opera и Manxthon, не последними, а на несколько лет устаревшими. Но новые браузеры мне не нравятся. Слишком большие по объёму кода и захватывают все ресурсы компьютера. Поэтому часто пользуюсь самой древней Mozil-ой какую смог найти (2005). Она не тормозит. Можно загрузить пару эмуляторов, еще несколько жрущих ресурсы программ и без проблем ходить по сети. И никто никого не тормозит. Недостаток, что накрученные сайты не видит (надпись Готово, но экран пуст). А современные браузеры, дико тормозят одновременно загруженный эмулятор, а часто просто виснут (приходится убивать процесс).

Проблема с Win XP в том, что мало того, что обновлений она зараза закачала в 3 раза больше, чем был исходный размер в 1.5 Гб, причём от этого улучшений нет, - на некоторых сайтах ни хрена не видно. Хуже то, что с теми браузерами, что совместимы с XP, например, не работает Yandex.disk, да и пара других файлообменников, куда я совался.

NEO SPECTRUMAN
26.03.2017, 00:31
А что за метки и почему у меня нет прав их создавать?

Black Cat / Era CG
26.03.2017, 01:53
Метки (тэги) - удобная штука (особенно учитывая странную "работу" поиска), но по сути отключенная на форуме.
https://ru.wikipedia.org/wiki/Тег_(метаданные)

HardWareMan
26.03.2017, 07:42
barsik, у меня надо было спросить (http://zx-pk.ru/threads/21394-portativnyj-pleer-dlya-otsifrovki-kasset-spetsialista.html?p=683434&viewfull=1#post683434):

{================================================= ==========================}
{Загрузчик файлов с ленты разных форматов Специалиста }
{<ADR_BEG>,<ADR_END>,<CHECK_SUM>,<TEXT_SIZE> - 2 байта, младший первый }
{<ASCII_NAME>, <BIN_CODE> - N байт массив }
{<CHECK_SUM> накрывает только <BIN_CODE>, причем у ТХТ и MICRON она своя }
{---------------------------------------------------------------------------}
{Формат бэйсика с именем: }
{0E6H,0D4H,0D4H,<ASCII_NAME>,00H }
{0E6H,0D3H,0D3H,0D3H,<BIN_CODE>,00H,00H,00H,<CHECK_SUM> }
{---------------------------------------------------------------------------}
{Формат бэйсика MICRON (у блока данных раккорд пониженной частоты): }
{0E6H,0D3H,0D3H,0D3H,0D3H,<ASCII_NAME>,00H,00H,00H }
{0E6H,0D3H,0D3H,0D3H,<BIN_CODE>,00H,00H,00H,<CHECK_SUM> }
{---------------------------------------------------------------------------}
{Формат монитора с именем (и без него, имя 16 байт): }
{0E6H,0D9H,0D9H,0D9H,<ASCII_NAME>,00H }
{0E6H,<ADR_BEG>,<ADR_END>,<BIN_CODE>,<CHECK_SUM> }
{---------------------------------------------------------------------------}
{Формат текста с именем: }
{0E6H,0E6H,0E6H,0E6H,0E6H,<ASCII_NAME>,00H }
{0E6H,<TEXT_SIZE>,<BIN_CODE>,0FFH,<CHECK_SUM> }
{================================================= ==========================}
А из "по сбросу" окромя распространенных, вроде Lode Runner, помню кооперативные, которые писали "580 SUPER PROGRAM" тайлами будущей картинки во время загрузки и потом дозакрашивали экран. Правда. потому как символы рисовались 3х5 мы почему-то думали что это "Z80 SUPER PROGRAM", пока тут на форуме я не узнал о SP580.

- - - Добавлено - - -


У меня есть инсталяторы защищённых программ.

Хотел приложить WAV файлы коммерчески защищённых игр СПЕЦИАЛИСТА. Но ничего не получилось - файлы передал, даже несколько раз, но не вложилось. Какие макс.ограничения на размер файлов 7Z и RAR? Из-за Win XP и оттого старыми браузерами не могу воспользоваться файлообменником. Лучше бы отменили ограничение на размер файла, а сделали бы так, чтобы очень большие файлы хранились бы во вложениях лишь сутки. Кто не успел скачать, тот опоздал...
Охотно предоставлю свой личный FTP по такое дело, место и время ограничено диском в 3TB :)

Какой формат WAV (частота дискретизации, число бит) выгодно использовать, чтобы и размер был минимальным и надёжность ввода не падала?
Если мафон стерео, то лучше 44100/16/2, если моно то 44100/16/1. Почему для стерео следует оставлять 2 канала можно посмотреть здесь (http://zx-pk.ru/threads/21394-portativnyj-pleer-dlya-otsifrovki-kasset-spetsialista/page3.html). В моем случае был доступен только 48000/16/2, что тоже нормально.

barsik
26.03.2017, 08:28
помню кооперативные, которые писали "580 SUPER PROGRAM"

Программы КООП SP-580 так просто не считать. Надо сделать переделку. Поставить их монитор на F800, а не на C800. Без этого не работают многие их программы, в частности их крутой бейсик.

Но мы выкрутились, поставив диоды на выходах ИД7, чтобы чип селект для F800...F8FF объединялся с чип-селектом C800. Тогда вызовы на стандартные входы F8xx попадают на C8xx. А т.к в ленинградском мониторе все важные подпрограммы векторизованы, то просто загружался драйвер MSX-формата КООП SP-580 и "вуа-ля" - все их программы грузятся и иногда даже работают на стандартном СПЕЦИАЛИСТЕ. Дешифратор ИД7 и без того имелся на область F800, что даёт 8 чип-селектов с шагом 100, чтобы подключать принтер и эл.диск. Ведь клавиатура в СПЕЦ-ТЕ изначально грамотно адресуется на FF00.


Если магнитофон стерео, то лучше 44100/16/2, если моно то 44100/16/1

Ну конечно... Вы указали самые лучшие параметры оцифровки звука. А вопрос был как минимизировать.

Иногда я писал 44.100 на 8 бит моно. Зачем 16 бит, если и одно-битовой записи хватило бы. Это же цифровой сигнал, он или есть или нет. К сожалению, 8 бит для записи в моём компьютере - минимум. Обычно писал 16 или 22 КГЦ, 8 бит моно. Но сейчас похоже в эмулятор B2M не читаются, ни записи на 16 КГЦ, ни даже на 22 КГЦ. А при выводе на реал читалось. К сожалению, записи СПЕЦИАЛИСТА и ОРИОНА я читал напрямую с МГ, а вот записи ZX-Spectrum оцифровывал, пропуская через его же узел ввода (не родной, что на плате Зона-87, а чуть лучший с гистерезисом на УД6, что описан в МК 02.1988). Это здорово улучшает считывание и позволяет понизить частоту дискретизации. Но как я понял для считывания WAV-файла в эмулятор требования выше, чем для реального компа с МГ-адаптером на СА3, УД6 или КМОП 564. Надо попробовать "поиграть" уровнями записей. Т.е загрузить в программу Windows "Звукозапись" и понизить уровень сигнала вдвое или втрое. Может улучшит.

Записи писались в 80-е на стерео "ЯУЗА-220" (это лучшее, что было в стране в 80-е), японская механника, сендастовые головки, настроенный мной (с помощью генератора пачек и осцилографа) абсолютно линейный сквозной канал 20...20.000. Проблем с МГ-записями никогда не было. Но, лет 15 назад "ЯУЗА" стала непригодной. Т.к в тормозных колодках (это две плоскости, трущиеся друг о друга для подтормаживания подающего узла) высохла смазка. Отчего подающий узел стал подтормаживаться очень сильно. А как известно, если сильное подтормаживание, то МГ-лента "зажёвывается". И исправить никак, не разобрать японскую механику. Поэтому пришлось считывать кассеты на разных отечественных моно аппаратах - на "Весне-305" и др, но в основном на "Легенда-404", хотя и с новой МГ-головкой (запасся отличными венгерскими головками в 80-е, сделанными по японской технологии). Но проблема пассиков. Родные пассики, естественно, сгнили, а заменить нечем. Пришлось ставить бытовые резинки. От этого звук "подплывает". Но компьютерные МГ-записи читались.

Есть ещё импортная мыльница HYUNDAI Radio cassette recorder, абсолютно не запиленная. Специально её купил в 2000, когда "ЯУЗА" сдохла, чтобы оцифровывать компьютерные МГ-записи. Причём специально выбрал МОНО, хотя стерео стоил лишь на копейки дороже. На МОНО всегда записи программ получались лучше. Отличное качество для муз.записей, но компьютерные записи вообще не читает и не пишет. В чём дело так и не понял. Сначала подумал "возбуд" в канале, оттого и не работает "цифра". Смотрел осцилографом - нет, всё чисто. Бился, как мог, но ничего не добился. И дело не в АРУ при записи, т.к чужие записи тоже не читаются. Возможно какая-то чересчур сильная отриц.обратная связь для выравнивания характеристики. Так и не считал и не записал на этой мыльнице ни байта цифровых записей (т.е деньги были потрачены впустую).

Есть куча лентопротягов. Есть от муз центра (типа "Мелодия-102") отличный венгерский лентопротяг. Есть три "Весны" (305,202,205), "Томь-305", магнитола "Радиотехника-МЛ" - на всех весновский лентопротяг. Есть даже убогий лентопротяг "Спутник". Но для них всех сгнили пассики. Есть японский "Walkman" плеер (пассик хоть и японский, тоже сгнил).

Ещё есть 4 новых импортных лентопротяга уже с целыми пассиками (точнее 3, один двойничок, один мотор на двоих). Специально снял с подаренных дохлых аппаратов. И есть крошечная платка узла воспроизведения на 157УЛ1А. Подключаешь её к головке любого лентопротяга и получается плеер.

HardWareMan
26.03.2017, 09:17
Ну конечно... Вы указали самые лучшие параметры оцифровки звука. А вопрос был как минимизировать.
Ну да, потому что это увы стандарт для дешевых звуковух и, в частности, плееров с USB. Понятно, что жуткий оверкил, но с местом то проблем нет - я предоставлю. Все упрется в ваш интернет, у меня 120Мбит безлимита. Но все равно, лучше считать с 44к. Если согласны - пишите, я вышлю логин и пароль. То, что будете выгружать на FTP будет доступно через http.

barsik
26.03.2017, 10:37
с местом проблем нет - я предоставлю. Все упрётся в ваш интернет, у меня 120 Мбит/сек и безлимит

У меня скорость всего 3.6 мбит/сек, а ранее вообще было 0.5 мбит/сек и то вполне хватало. Видео-чаты и скачивание DVD-фильмов мне не нужно. В начале 90-х мне хватало 0.0024 мбит/сек, чтобы посещать BBS.

Так что большие WAV-файлы выгружаются долго. Но вопрос не в этом. Передавать то нечего.

Есть коллекция древних игр из 1990 (~90 минут звона) и программ для СПЕЦИАЛИСТА в WAV-формате, где-то даже, возможно, есть кассеты, с которых это было считано. Но зачем их передавать. Уверен, что 95% этого и так есть у всех. Кроме того, они у меня есть и в DAT-виде на дискетах ОРИОНА в формате 800К (КНГМД на ВГ93) и в формате 560К (РК-КНГМД без ВГ93). Но пока они недоступны. Т.к на этом компе нет флопа. По крайней мере то что в формате 800К можно считать, т.к есть древний комп, где есть возможность подключить флоповод, но это хлопотно, долго и лениво делать и, главное, жаль тратить на это время, т.к не вижу от этого пользы.

В WAV-формате стОит сохранять только защищённые от копирования МГ-программы. Их можно сохранить только в виде WAV-файла или в виде слепка памяти из эмулятора (тогда не будет заставки при вводе, что делает бессмысленным WAV-формат, если код игры уже есть в виде кодов). Т.е нужен эмулятор, который бы надёжно читал WAV-формат с низкой частотой дискретизации. Запись с низкой частотой дискретизации можно попробовать конвертировать в формат 44.100/8 бит и пропустить через какой-нибудь программный фильтр (м.быть ВЧ и НЧ, чтобы убрать короткие помехи). Может быть поможет.

В TAPE-защищённом виде есть только игры SP-580, конвертированные для стандартного СПЕЦИАЛИСТА - из приличных это Тутанхамон и Jet-Set Willy и ещё несколько совсем не стоящих упоминания игр, что были в пакете SP-580 летом 1988 года. Ещё есть Manic Miner. Вот его, возможно, у Вас нет. По крайней мере в оригинальной версии, т.е в том виде, как он был адаптирован в 1989 для СПЕЦИАЛИСТА. Эта версия распространялась мной только в кассетной защите от копирования, хотя несколько людей сообщили мне в 1990, что успешно "кракнули". В начале 1991 Manic-Miner был адаптирован для ОРИОНА. У Вас возможно есть обратная адаптация его от ОРИОНА (версия для ОРИОНА ушла в 1992 без защиты, т.к защищать дискеты я вначале не умел). И предполагаю, что кто-то мог адаптировать его для СПЕЦИАЛИСТА обратно, т.е из версии для ОРИОНА в версию для СПЕЦИАЛИСТА.

Jet-Set я уже выложил (есть ещё 3 дубля). Сообщите, как успехи с загрузкой. Ещё есть SP-Copy СПЕЦИАЛИСТА, тоже в защите от копирования (соответственно, есть адаптация и для ОРИОНА). Кстати, интересно, кто-нибудь на ОРИОНЕ кракнул SP-Copy? Её кракнуть сложно, т.к работает в экране, использует недокумментированные команды, в ходе работы модифицирует код и проверяет не было ли крака.

Защита от копирования по сути заключалась в том, что вторичный загрузчик грузит код программы уже не в двухфазной кодировке, а в кодировке MSX. Которая, несмотря на уверения некоторых, - менее надёжна и очень быстро дохнет на кассетах, не держит времени. Хотя пищит для уха приятнее, звук мызыкальнее, чем шипение двухфазового формата.

Предоставьте мне полный список программ СПЕЦИАЛИСТА и я посмотрю, что есть у меня и нет в списке имеющегося, если таковые вообще найдутся.

Поэтому я и написал, что интерес представляет только монитор, RAMDOS (что требует доп.железа, хотя легко адаптируется, если в ЭВМ есть много ОЗУ), МГ-нортон для RAMDOS, редактор SCREEN (который тоже был адаптирован для ОРИОНА, хотя там он раздулся до 3 кб, в оригинале ровно 2), и, если это кого-то интересует, - то CP/M для обычного СПЕЦИАЛИСТА (грузится на D000...F7FF) с драйверами для Z80 (нет проблем перетранслировать и для КР580). Есть схема замены кварца 8 МГЦ на 10 МГЦ (расход 1 доп.ИМС), а также схема установки Z80 в СПЕЦИАЛИСТ. Эта схема, правда много позднее, появилась у Афанасьева, адаптированная, очевидно от ОРИОНА, т.к одновременно появился и второй вариант схемы Z80, что был уже только на ОРИОНЕ. Исходная схема СПЕЦИАЛИСТА - это с RC-цепочкой, где ёмкость 270 пф.

fifan
26.03.2017, 10:50
Я хотел спросить, а что значит "СПЕЦИАЛИСТ с нормальным ленинградским монитором". Спросил потому что хочу знать может я пользуюсь не нормальным...

HardWareMan
26.03.2017, 11:49
barsik, вот именно записи защищенных программ и интересуют. Тутанхамон помню. Джет Сет тоже (тоже в экране выполнялся же, да?). Поэтому и прошу, сделайте записи таких программ в оригинале, а я их расположу у себя для скачивания на широком канале. Кстати, для передачи WAV можно прилично сжать RARом. Ваш Джет Сет проверю в ближайшее время.

DDp
26.03.2017, 13:01
Однако и тут оказалось не всё в порядке. WAV-записи, которые без проблем загружались из PC в реальный СПЕЦИАЛИСТ, при загрузке в эмуляторе часто вызывают выскакивание мигающей надписи "TAPE LOADING ERROR".
Утверждаю, такая запись (http://rgho.st/6rrqNT48C/image.png) не загрузится ни в реал, ни в эмулятор. :v2_smoke:
http://rgho.st/6rrqNT48C/thumb.png (http://rgho.st/6rrqNT48C.view)

А при выводе на реал читалось. К сожалению, записи СПЕЦИАЛИСТА и ОРИОНА я читал напрямую с МГ, а вот записи ZX-Spectrum оцифровывал, пропуская через его же узел ввода...
Вооот, и эта запись тоже сделана через (этот ваш) узел ввода и убита. Была бы аналоговая запись, пусть и 8 бит на отчет, вероятность ручного восстановления была б гораздо выше. А так, остаётся собирать из кусочков из разных дублей.:v2_dry:


Это здорово улучшает считывание
Ну-ка, загрузите это на реал! :v2_laugh:


Есть ещё импортная мыльница...
Ещё есть 4 новых импортных лентопротяга уже с целыми пассиками... ...И есть крошечная платка узла воспроизведения на 157УЛ1А. Подключаешь её к головке любого лентопротяга и получается плеер.
Сколько возможностей... :v2_wink2:


...не хватает злобы...
Надо излучать добро! :v2_dizzy_heart:

barsik
26.03.2017, 13:10
хотел спросить, а что значит "СПЕЦИАЛИСТ с нормальным ленинградским монитором". Спросил потому что хочу знать может я пользуюсь не нормальным...

Это подколка или вопрос - риторический?

За пару лет было много версий доработанного ROM-BIOS. Были удачные и менее. В тексте речь шла лишь о ленинграском мониторе. Оценки других мониторов в первом посте нет, - она и так ясна. Я не могу дать заключение о Вашем мониторе, т.к я его не видел и не использовал. Но все версии ПЗУ, что я успел увидеть до 1990 были намного хуже, в том числе и днепропетровский монитор. С его авторами я встречался, они приезжали смотреть эл.диск, CP/M и Z80 в конце 1990.

Ваш монитор лучше, если он имеет:

- автоматический выход в монитор, если нет сигнала
- автонастройка на скорость по ракорду
- индикация ввода/вывода на МГ полосками по бордюру
- индикация адреса ввода/вывода в виде бегущего счётчика в правом верхнем углу экрана
- ввод/вывод в формате РК86 с автонастройкой в произвольные адреса
- ввод/вывод в формате ZX-Spectrum с автонастройкой в произвольные адреса
- встроенный драйвер принтера и интерфейса ИРПР в обе стороны
- встроеный драйвер локальной сети
- векторизацию всех важных подпрограмм, что позволяет заменять их драйверами
- встроенное управление режимами (с 3-м ПЗУ на D000): шрифт 8*8 (или КОИ-8) и драйвер MSX
- совместимость одновременно с орловским и барнаульским мониторами !!!
- многие команды монитора лучше, чем у Орлова

Это только то, что я смог вспомнить. Сто лет не включал СПЕЦИАЛИСТ. Прилагаю краткое описание, но не последней версии ленинградского монитора версии 2.7, - сам я больше пользовался версией 3.3.

Если мою инициативу встречает холодный приём и насмешки, то обидно.

Несколько описаний есть только на бумаге, постепенно буду их набирать и выкладывать. Но интерес (в смысле исторический) представляет только то, что я указал. Чужие игры, хотя и с трудом кракнутые и с ещё большим трудом адаптированные для стандартного СПЕЦИАЛИСТА и в другой защите от копирования, не входило в перечень того, что я собирался выложить.

Вот описание монитора одной из популярных версий:



Ленинградский SP-COMPUTER CLUB

представляет новую версию системной

программы ПЭВМ "СПЕЦИАЛИСТ" версии 2.7

! Загрузчик и монитор представляют собой единую программу и работают только
совместно. Все входные точки загрузчика и монитора сохранены, что обеспечи-
вает 100% совместимость всех программ, использующих как стандартные так и
внутренние входные точки. Является наиболее совершенной системной програм-
мой для "СПЕЦИАЛИСТА" на апрель 1990. Является разработкой ленинградского
компьютерного клуба "СПЕЦИАЛИСТ".

C010 - очистка экрана, параметры 8FFA/8FFB

C037 - вывод символа на экран/внешнее устройство. Осуществляет роллинг эк-
рана, на 20% быстрее чем у Орлова, знакоместо предварительно не очи-
щается, если установлен признак эхо-печати, то дополнительно вызы-
вается драйвер принтера, в случае неготовности принтера функция
эхо-печати игнорируется

C170 - вывод звука (параметры 8FF1/2), отличается тем, что сигнал одновре-
менно выводится на выход для записи на магнитофон

C190 - временная задержка, параметр в рег. B
C1A0 - вывод звука высокого тона
C1AB - вывод звука низкого тона
C254 - программирование ППА клавиатуры (FF00)
C25A - ----"----

C337 - ввод символа с клавиатуры с обработкой упр.кодов - установкой черно-
го и белого фона соотв.клавишами. Изменена работа клавиш "НР" и
"РУС/ЛАТ". Введена фиксация нижнего регистра (НР + пробел). С по-
мощью курсора отображается включение НР/ВР, а звуком - РУС/ЛАТ. Ге-
нерирует случайное число в ячейке памяти 8FEBH. Кроме этого эта под-
программма обрабатывает следующие функции:

НР+F1 - выход в монитор из любой программы

НР+F7 - включение эхо-печати на принтер
НР+F8 - выключение эхо-печати

A при наличии ПЗУ D000 поддерживает также и

НР+F2 - вкл/выкл режима КОИ-8 или КОИ-7 с красивым шрифтом (знакоместо 8*8
точек)

НР+F3 - включение двухчастотного формата записи на магнитофон (стандарт MSX)

НР+F4 - включение двухфазового формата записи на магнитофон (это стандар-
тный формат "СПЕЦИАЛИСТА")

НР+F5, НР+F6 - вызов п/п пользователя (см.ниже)

Эти функции в отличие от монитора Савощенко, не занимают клавиши F1-F8
на системные нужды, что неправильно. Большое количество программ их широко
использует. При простом нажатии функцинальных клавиш вырабатываются стан-
дартные коды 0...7.

C377 - RDBYTE, ввод байта с магнитофона
C3D0 - WRBYTE, вывод байта на магнитофон, конст.записи 25-FF

Особенность двух последующих подпрограмм заключается в том, что парал-
лельно с вводом/выводом осуществляется индикация текущей ячейки памяти (э-
того нет ни в одной советской бытовой ПЭВМ). Кроме этого осуществляется ин-
дикация процесса ввода вывода с помощью бегущих по бордюру полос, как в
ZX-Spectrum (см. ниже).

C3F9 - ввод блока с магнитофона с поиском синхро байта, первые 4 байта ад-
реса записи блока в ОЗУ C422 - ввод блока с поиском синхро-байта,
HL,DE - адреса начала и конца блока

C416 - то же, без поиска синхро-байта
C427 - CMPDH, сравнение HL и DE
C42D - пересылка блока в ОЗУ: (HL..DE) --> (BC)
C438 - MSSG, вывод сообщения, последний байт - 00

ВНИМАНИЕ! Особенность подпрограмм вывода на экран, принтер и магнитофон и
ввода с клавиатуры и магнитофона заключается в том, что все они
являются програмно управляемыми, т.е. Эти п/п могут быть замене-
ны соотв. Подпрограммами пользователя. Это возможно за счет раз-
мещения векторов перехода на исполнительные части этих п/п-м в
служебных ячейках ОЗУ. Все директивы монитора тоже являются прог-
рамно управляемыми, т.е. Любая директива может быть заменена ди-
рективой пользователя (сначала проверяется не определена ли ди-
ректива пользователем, а далее управление передается стандартной
п/п обработки директив).

Служебные ячейки монитора для хранения адресов системных подпрограмм:

8FD0 - количество символов в строке (48/56/64)
8FD1/2 - адрес п/п обработки директив монитора
8FD3/4 - адрес п/п записи байта на магнитофон
8FD5/6 - адрес п/п чтения байта с магнитофона
8FD7/8 - адрес (в экранной области) для вывода счетчика текущей ячейки при
вводе/выводе на магнитофон
8FD9/A - адрес драйвера принтера
8FDB/C - адрес п/п вывода символа (на экран)
8FDD/E - адрес п/п ввода символа (с клавиатуры)
8FDF/E0 -адрес п/п обработки кодов клавиш
8FE1/2 - адрес буфера трансляции ассемблера, по сбросу устанавливается 1000H
8FE3/4 - адрес начала блока введенного с магнитофона для автостарта
8FE5/6 - адрес буфера текста редактора (2000H)
8FF5 - признак эхо-печати (=0 печать включена)
8F90 - при работе с КОИ-8 признак большие или маленькие буквы

Все остальные ячейки имеют то же назначение, что и ранее в мониторе
Орлова/Зверкова.

ВНИМАНИЕ! Версии 2.8 - 3.4 кроме этих ячеек используют дополнительные слу-
жебные ячейки до адреса 8F60H, что вызывает несовместимость неко-
торых программ, работающих на версии 2.7 (программы загружаемые
по сбросу - загрузчик которых грузится "прямо" в служебные ячей-
ки, подставляя в них свои вектора переходов).

Кроме этого п/п ввода с магнитофона существенно изменена. Кроме вывода
на экран текущего адреса ввода в ОЗУ, п/п-мма ввода автоматически опреде-
ляет и устанавливает константу чтения, причем сохранена и возможность вво-
да с заранее установленной константой ввода. Функция коррекции константы
ввода исключена за ненадобностью. При нажатии клавиши <СТР> в процессе вво-
да осуществляется выход в монитор. Кроме этого в отличие от предыдущих вер-
сий монитора, клавишей <СТР> прерывается также также процесс вывода на маг-
нитофон.

В отличие от монитора Савощенко процедура инициализации и ввода по
сбросу с автозапуском сохранена как абсолютно необходимая для автоматичес-
кой загрузки блоков в разные адреса ОЗУ и ввода заставок программ. По сбро-
су, после инициализации служебных ячеек ОЗУ, анализируется наличие сигнала
с магнитофона; если сигнал есть, то автоматически определяется константа
чтения, вводится блок и автоматически запускается на исполнение, как в заг-
рузчике-85. Если сигнал с магнитофона не поступает, то управление передает-
ся монитору.

В отличие от других версий монитора введен тимплет символов, т.е режим
повтора предыдущей директивы монитора (до конца буфера или кода 0D) нажа-
тием клавиши "->" (курсор вправо). Забой может осуществляться клавишей "<-"
и в нижнем регистре клавишей <ЗАБОЙ> (в верхнем регистре она как и положе-
но вырабатывает символ "_"). В качестве разделителя в директивах монитора
теперь может использоваться любой символ с кодом меньше 30H (в том числе
"пробел",#,%,*,$,+ и др.)

При работе п/п-рамм ввода/вывода с магнитофона (во всех форматах запи-
си: РК86, ZX-Spectrum, MSX) дополнительно осуществляется индикация цветом
бордюра (аналогично ZX-Spectrum). При этом по бордюру (краям экрана) бегут
хаотические полосы. По ширине полос можно грубо оценить скорость ввода. Для
использования этой функции необходимо соединить выход РС6 ППА (D44/11) со
входом D47/1 (вход последов-х данных выходного сдвигового регистра). Сиг-
нал бордюра удобно подать через резистор на базу выходного эмиттерного пов-
торителя. Резистор подобрать, чтобы синхронизация не срывалась.

Учитывая то, что в стандартном "СПЕЦИАЛИСТЕ" бордюр по горизонтали не
виден (на советских телевизорах не видны даже крайние столбцы символов) ре-
комендуем увеличить такт процессора с 2.0 до 2,5 мгц (требуется установка
одной дополнительной микросхемы 155ТМ2), при этом изображение немного сжи-
мается по горизонтали и становятся видными крайние символы и бордюр по го-
ризонтали. Функция включения двигателя магнитофона с помощью РС6 ППА исклю-
чена.

Собственно монитор располагается в адресах C800 - CFFF. Также сохране-
ны все точки входа, в том числе и внутренние, например CC6C - распечатка HL
в HEX-виде. В качестве директив используются все 26 букв латинского алфави-
та.

Кстати. Версии монитора, начиная с какой-то (но не помню какой) уже нельзя
разделить на загрузчик и монитор С800, а это просто одна программа разме-
ром в 4 кб.


КРАТКОЕ ОПИСАНИЕ РЕЗИДЕНТНЫХ ДИРЕКТИВ МОНИТОРА

А - переход на ассемблер по адресу D800H. Параметры: 1-й адрес текст.буфе-
ра, 2-й параметр - адрес буфера трансляции. По умолчанию старые адреса
(для работы с несколькими текстами одновременно)

B - свободна, предназначена для работы с электронным диском, загрузки с
НГМД и платы расширения ПЗУ. По сбросу заглушена переходом C000.

C - сравнение областей памяти

D - HEX-дамп памяти

E - переход на редактор по адресу E800, параметры как в директиве A

F - заполнение кодом области ОЗУ

G - запуск программы, без обработки точки останова (для этого применяются
отладчики)

H - HEX-калькулятор (сумма и разность 2-х чисел)

I - ввод файла с именем. 1-й параметр константа чтения (если не указан то
константа определяется автоматически), 2,3-й параметры адреса начала и
конца ввода в ОЗУ. Если не указаны, то ввод по адресам указанным в за-
писи. Отображается текущий адрес озу. По окончании ввода выдается зву-
ковой сигнал

J - загрузка блока в формате ZX-SPECTRUM, автоматически определяет констан-
ту ввода (этого нет в самом ZX-SPECTRUM), выводит адреса и контрольный
байт (байт паритета - если не равен 0, то ошибка при вводе)

K - вычисление контрольной суммы блока

L - дамп памяти в HEX- и символьном виде

M - просмотр-модификация ячеек ОЗУ. Выводится HEX- и символьное представле-
ние. Нажатие "АР2"+<клавиша> ввод в ячейку кода клавиши. В случае оши-
бочного ввода - сообщение об ошибке, а не выход из директивы как у
Орлова

N - проверка на несоответствие заданному коду участка памяти

O - вывод файла с заголовком, как раньше, с индикацией текущей ячейки, син-
хро-дорожка перед выводом имеет характерный "чистый" тон, по окончании
вывода на ленту записывается звуковой сигнал, облегчающий поиск прог-
рамм (выводится также на громкоговоритель)

R - ввод файла без заголовка. 1-й параметр константа чтения (если не ука-
зан то константа определяется автоматически), 2,3-й параметры адреса
начала и конца ввода в ОЗУ. Выводит адрес текущей ячейки ОЗУ

S - поиск цепочки байт длиной до 4-х байтов

T - пересылка блока ОЗУ. В отличие от прежних версий монитора возможна пе-
ресылка в любую сторону с любым перекрытием

U - пересылка блока данных из ПЗУ в панельке программатора, подключенного
через ППА по адресу F000 (по схеме SP-COMPUTER CLUB-а, для 573РФ2,
573РФ4). 1-й и 2-й параметры - начальный и конечный адреса в ОЗУ, 3-й
параметр - начальный адрес ПЗУ

Y - чтение файла в формате РК86, 1-й параметр - константа чтения, по умол-
чанию определяется автоматически, 2-й параметр смещение, выводит адрес

V - запись файла в формате РК86, параметры как в директиве 'O', выводит те-
кущий адрес

W - запись файла в формате "СПЕЦИАЛИСТ-85", всё как раньше, выводит теку-
щий адрес

Q - запись файла в формате "СПЕЦИАЛИСТ-85" без указания имени, адресов заг-
рузки (контрольная сумма выводится). Параметры как в директивах O, V,
W. Применяется для создания загружаемых по сбросу программ и заставок

Z - вывод блока в формате ZX-Spectrum, параметры как в директиве W (кон-
станта записи стандарт ZX)

@ - переход на дизассемблер по адресу D000, параметры см. А (при работе с
загружаемым с ленты драйвером применяется для управления вводом/выво-
дом. После запуска драйвера: @1/@2 - вкл/выкл кои-8 (КОИ-7, символы
8*8) @3/@4 - вкл/выкл MSX формата записи)

P - вывод блока на принтер/лок.сеть в стандарте интерфейса ИРПР через ППА
по адресу F000. Параметры: 1-й и 2-й - адреса начала и конца блока в
ОЗУ. Если 3-тий параметр не 0, то выводится блок от начального адреса
до байта FFH, при этом 2-й параметр игнорируется.

X - ввод блока с внешнего устройства (лок.сеть ПЭВМ "СПЕЦИАЛИСТ") через ППА
по адресу F000 параметр - адрес начала ввода в ОЗУ, конец ввода по сня-
тию готовности внешнего устройства

ПОДКЛЮЧЕНИЕ СИГНАЛОВ ИРПР К ППА

ПЕРЕДАЧА:

С0 - готовность источника - И
С1 - строб источника - И
С2 - запрос приемника - П
С3 - готовность приемника - П

ПРИЕМ:

С4 - готовность источника - П
С5 - строб источника - П
С6 - запрос приемника - И
С7 - готовность приемника - И

Директивы P и X позволяют осуществлять двусторонний межмашинный обмен.
По директиве P можно распечатать текст на принтере, указав 1-й пар-р адрес
начала текста,2-й параметр опустить и 3-й параметр не 0. При неготовности
внешнего устройства выдается соотв. Сообщение. По окончании передачи вы-
дается контр.сумма, что позволяет выявлять ошибки при обмене в сети.

Кроме старых подпрограмм в монитор введены новые. Стандартные:

C821 - вывод символа из регистра C на принтер
C82D - приём байта с внешнего устройства в регистр A
CB0E - вывод синхродорожки (перед выводом блока) с характерным звуком

Новые подпрограммы с нестандартными точками входа:

CEDF - определение константы чтения, заносится в ячейку 8FFF и регистр A

C954 - задержка при вводе/выводе байта на магнитофон, регистр B - параметр
задержки (не портится). Выводит после 4-х обращений содержимое
HL-пары на экран по адресу в ячейках 8FD7/8. При необходимости от-
ключения вывода текущего адреса на экран в ячейки 8FD7/8 занести ад-
рес соответствующий не используемым ячейкам ОЗУ или адрес ПЗУ.

Последняя редакция этого текста: март 1990

ПРИМЕЧАНИЕ. Последней версией ленинградского монитора является версия 3.4
(это уже конец 1990 года). В этой версии существенные изменения. В частнос-
ти исключена загрузка многих МГ-форматов (при наличии дисковода, это не
особо надо).



Описание монитора версии 3.3:


+----------------------------------------------+
¦ ¦
¦ МОНИТОР для СПЕЦИАЛИСТА версии 3.0-3.3 ¦
¦ Ленинград, сентябрь-ноябрь 1990 года ¦
¦ ¦
+----------------------------------------------+

По сравнению с версиями 2.5-2.9 отсутствуют директивы Z и X.

Больше нет п/п-ммы приема байта с внешнего устройства (ранее C82D).

Изменена п/п ввода с клавиатуры (стандартный вход C337):

- введен автоповтор.
- увеличено количество системных функций с пяти до восьми: НР+F1... НР+F8
- векторы переходов в адресах D000,D003,D006... Проверяется наличие кода C3

НР + F9 (EDIT) - всегда обеспечивает выход в монитор (C800).

НР + F10 и НР + F11 - включение и выключение эхо-печати на принтер.

Изменена подпрограмма вывода символа на экран:

- введена обработка кодов 8B и 8C - установка цвета экрана (вкл/выкл-е
инверсного вывода).

- Введена обработка кода ESC-последовательности для прямой адресации
курсора: ESC+Y+...

Это обеспечивает совместимость с программами РК86 и программами бар-
наульского кооператива "SP-580".

Введены новые системные переменные для хранения векторов перехода на
исполнительные части подпрограмм:

8FC3...C5 - резерв, но инициализируются по сбросу

8FC6 - признак инвертирования данных выводимых на внешнее устройство (00)

8FC7 - для обработки ESC-последовательности

8FC8/C9 - адрес перехода п/п-ммы C81B (ввод кода нажатой клавиши)

8FCA/CB - адрес перехода п/п-ммы C80F (ввод строки символов в орловском мо-
ниторе; вывод на принтер в барнаульском)

8FCC/CD - адрес перехода п/п-ммы C827 (вывод блока на магнитофон - Орлов;
вывод пилот-сигнала - Барнаул)

8FCE/CF - адрес перехода п/п-ммы C824 (ввод блока с магнитофона - Орлов;
определение константы чтения - Барнаул)

Остальные служебные ячейки - как в ленинградском мониторе версий 2.0 - 2.8.

Указатель стека выставляется равным 8F5F. Изменены адреса всех буферов
монитора. Теперь используется один и тот же буфер для имени считываемого и
записываемого файла. При этом после ввода файла по директиве I - имя ос-
тается в буфере и может быть использовано для вывода по директиве O. Тогда
имя выводится по нажатию "->". По достижении конца имени дает звук - раньше
этого не было.

Введена новая очень полезная директива - верификация записи на ленте:

V - сравнение записи на ленте с данными в ОЗУ, один параметр - константа
чтения (если - нет, то определяется как обычно, автоматически). Имя
можно не указывать (на запрос - <ВК>).

ВНИМАНИЕ! Версии монитора, начиная с 3.0 работают с новым драйвером в ПЗУ
D000. Который теперь содержит новый набор системных драйверов:

НР+F2 - как и ранее вкл/выключение шрифта символов 8*8, однако теперь эта
функция вызывается не только подпрограммой ввода символа, но и под-
программмой вывода, отчего переключать шрифт можно во время вывода
текста на экран без остановки ролика (для останова нажать НР + СТР)

НОВИНКА! ПЗУ D000 содержит полный (!) эмулятор барнаульского монитора, что
позволяет выполнять барнаульские программы без изменений в них!

Для этого в самом компьютере необходимо установить дешифратор (555ИД7),
разбивающий адресное пространство F800-FFFF на 8 участков по 256 байт (для
тех у кого это еще не сделано) и обеспечить выборку ПЗУ C800 при обращении
к ПЗУ F800 - включить два диода анодами к входу /CS ПЗУ C800, катоды к вы-
ходам дешифраторов C800 и F800. После этого все программы барнаульского
кооператива не обращающиеся непосредственно к порту по адресу F000 (это 90%
программ) будут вашими. А для получения 100% совместимости с помощью еще
двух диодов (или одной ИМС 155ЛИ1) обеспечьте выборку порта, как по адресу
FF00 так и по адресу F000.

НР + F3 - включение барнаульского эмулятора

НР + F4 - выключение барнаульского эмулятора (в отличие от старой версии
эмулятора не требуется нажатия <ВК>).

НР+F5 - включение встроенного программатора

После включения работают директивы:

F - без параметров. Проверка чистоты ПЗУ. Выводит список не содержащих код
FF ячеек.

C - <нач.адр.ОЗУ>,<кон.адр.ОЗУ>,<нач.адр.ПЗУ> - сравнение областей ОЗУ и ПЗУ

Z - <нач.адр.ОЗУ>,<кон.адр.ОЗУ>,<нач.адр.пзу> - прошивание ПЗУ. В отличие
от старой версии выводит текущую ячейку (как при вводе с МГ). Выключе-
ние программатора по сбросу.

НР + F6 - включение драйвера электронного диска. Просто передает управле-
ние по адресу D800.

НР + F1 - загрузка из электронного диска программы RAMDOS COMMANDER - гра-
фического интерфейса для работы с электронным диском (смотри опи-
сание RAMDOS)

НОВИНКА! Для работы с 3-ей версией монитора разработан загружаемый в ОЗУ
драйвер ввода/вывода символов, позволяющий редактировать тексты с использо-
ванием таблицы кодов КОИ-8 (коды от 0 до 256), включающие псевдографичес-
кие символы. Применена основная кодировка символов (МПСС, 1986.04). Позво-
ляет оформлять текст красивыми рамками и другими графическими символами.
Используется клавиша Б/М (большие,заглавные/маленькие буквы) - бывшая кла-
виша "ПОВТОР", не используемая в самом мониторе.

Ленинград, 25 ноября 1990 г.





Можно сказать, что не хватает злобы в адрес авторов эмуляторов. Причём обоих.
Надо излучать добро!
Стараюсь.

Это же такое выражение, я постоянно его употребляю. Да и многие люди тоже. Тут ничего личного. Лучше сказать так, чем обижать кого-то. И это абсолютно не значит, что у меня реально есть злоба. Это бессмысленно и невыгодно. Что-то не получилось, не хватило информации или ума. Не радоваться же из-за этого? Есть причины для недовольства за бесполезно потраченные часы. К тому же написано можно сказать. Но не сказано...


и эта запись тоже сделана через (этот ваш) узел ввода и убита. Была бы аналоговая запись, пусть и 8 бит на отчет, вероятность ручного восстановления была б гораздо выше

Конечно я не помню как делалась оцифровка МГ-записи. Это было 17 лет назад. Ответственные файлы всегда для повышения надёжности пропускал через компаратор и делал несколько копий.

Почему никто не сообщает результат считывания WAV-файла игры?

Удачно, что этой игры считано аж 5 вариантов. А т.к это многоблочная загрузка, то дохлота одного блока, - это не трагедия. Например, дохлота в блоке 6. Тогда 5 блоков грузим с одной кассеты, останавливаем магнитофон (сразу перед дохлым блоком, во время паузы), ставим другую кассету перемотанную в то же самое место (после конца 5-го блока) и стартуем магнитофон. И программа загружается и стартует - 5 блоков грузятся с одной кассеты и 3 блока - с другой. Я так грузил в реале, когда была дохлота на защищённых многоблочных МГ-записях.

Понятно, что для эмулятора это ещё проще. Тогда в звуковом редакторе просто отрезаем конец одного файла и подставляем конец от другого.

HardWareMan, в защите я оцифровал только Jet-Set, Manic-Miner и SP-Copy. И их же версии в защите для ОРИОНА. Остальная туфта меня не интересовала. На кассете, если верно помню в такой же защите шли Тутанхамон, Land, нарды и ещё что-то, возможно "Геликоптер" (иногда называется "Душман"). Но эти игры были и без защиты, поэтому я и не стал их оцифровывать. А вот Jet-Set, Manic-Miner и SP-Copy в версии для СПЕЦИАЛИСТА у меня никогда не имелись без защиты. Поэтому я их и вынужден был оцифровывать, т.к кассеты уже "дышали на ладан" и грузились через раз.

HardWareMan
26.03.2017, 13:32
Не надо тему спихивать во флейм. "Правильный" "не правильный" оставьте за порогом. Давайте примем, что есть ПСПЗУ/Монитор лучше или другой. Но это не тема для этого треда. Давайте не мешать Barsik'у делиться с тем, что есть, ведь на Спеце и так мало годного софта.

Автоподбор константы иногда оказывает медвежью услугу, знаем, делали для своего контроллера. Но она удобна для спецпрограммы. А разве у Спеца был бордюр? Или речь об Орионовском экране на Спеце (там есть бордюр, который может быть использован)?

Я бы хотел все же получить записи (соглашусь - лучше без обработки компаратором) всех имеющихся игр и программ, которые загружаются по сбросу. Особенно с нестандартными загрузчиками. Именно с целью сохранения. Я имею одну идею как сохранить их так, чтобы это был не тупой WAV, но который мог бы быть восстановлен в случае необходимости. Но для работы мне нужны записи. И это не TAP/TZX, т.к. те заточены под Спектрум.

fifan
26.03.2017, 13:47
Ну нет так я выразился. Сори. Может стоит начать выкладывать бинарники мониторов, которыми автор темы пользуется. Начато с игры, а в названии темы слова "игра" даже не упомянуто.

Смотрю начата новая тема. Читаю название: Программы 80-х: ленинградский монитор СПЕЦИАЛИСТА. Уже интересно что за монитор такой может выложит автор - нету.
Читаю дальше: RAMDOS, CP/M, 2.5 МГЦ и Z80. Вообще сочетание слов не понятно, barsik и не разъяснил что это значит. А я просто про монитор спросил на меня набросились. И в чём моя крамола?
Может стоило соответственно тему называть. Вот, например название темы Архив кассет для ЛК "Специалист" кружка радиоэлектроники Дома Пионеров г.Павлодар - всё сразу понятно и выложены программы и упомянуты форматы записи файлов. Всё как-то сочетается.

b2m
26.03.2017, 14:51
На реальном СПЕЦИАЛИСТЕ нажимают на кнопку сброс в момент, как услышали пилотон. А в эмуляторе этого нет, т.к если сделать сброс во время хода ленты, то происходит уход на обычный сброс с загрузкой из готового файла (не из WAV-файла).
Можно убрать перехват п/п чтения из конфига (удалив те самые строчки с адресами п/п), тогда поведение эмулятора должно не сильно отличаться от реала. Перехват сделан, т.к. в 90% случаев пользователь будет грузить .rks файл, скачанный из интернета.



Вопрос к b2m: можно ли из эмулятора записать WAV-файл?
Можно. Но это очень неудобно.
Для начала нужно набрать в мониторе команду записи на магнитофон, но не вводить её (чтобы перед пилот-тоном было меньше пустого места).
Потом нужно ткнуть на тёмнокрасную кнопку на тулбаре и обозвать файл.
А потом ещё и Enter нажать.

DDp
26.03.2017, 16:03
Во вложении Jet-Set - идеально ровный wav, прекрасно загружающийся в эмуляторе b2m, :v2_dizzy_dance:
и дампы блоков в RK-формате. (исходник "Jet-Set 4.WAV")

mp3 по ссылке (https://yadi.sk/d/YRZIZbKo3GMPrw).

HardWareMan
26.03.2017, 16:57
HardWareMan, в защите я оцифровал только Jet-Set, Manic-Miner и SP-Copy. И их же версии в защите для ОРИОНА. Остальная туфта меня не интересовала. На кассете, если верно помню в такой же защите шли Тутанхамон, Land, нарды и ещё что-то, возможно "Геликоптер" (иногда называется "Душман"). Но эти игры были и без защиты, поэтому я и не стал их оцифровывать. А вот Jet-Set, Manic-Miner и SP-Copy в версии для СПЕЦИАЛИСТА у меня никогда не имелись без защиты. Поэтому я их и вынужден был оцифровывать, т.к кассеты уже "дышали на ладан" и грузились через раз.
Мне интересна не снятие защиты, а загрузка в оригинале, как оно было с ленты. Поэтому, я прошу: если есть еще что-то с таким же методом загрузки - оцифруйте.

barsik
26.03.2017, 17:12
Во вложении Jet-Set - идеально ровный wav, прекрасно загружающийся в эмуляторе b2m, и образы блоков в RK-формате (исходник "Jet-Set 4.WAV")

У меня Win XP, а она не переносит Yandex.disk. Ничего оттуда скачать не могу. Из вложения в последнем посте я тоже извлечь Jet-Set.WAV не смог, файл распаковался нулевой. Очевидно мой древний 7Z не знает такой более новый алгоритм упаковки 7Z.

А файлы с расширение *.RK. Как их использовать?

Посмотрел дамп первого RK-файла и увидел, что там текст "Не выключайте магнитофон". Это что блоки из Jet-Set или там была другая игра в защите? Мне казалось, что в Jet-Set фазовый формат только в первых блоках. А может и нет, не помню. Вот Manic-Miner и SP-COPY точно в формате MSX.

Встречал два метода защиты форматом. В раннем методе применялся только фазовый формат. Обычно изменялась константа ввода последующих блоков, иногда менялся синхробайт и орловский монитор не мог это скопировать, но когда появился SP-COPY, это перестало быть проблемой. Тогда стал использоваться формат MSX - первый блок в обычной фазовой кодировке - это загрузчик второго блока в формате MSX. Первый блок грузится по сбросу и стартует, после чего загружает второй блок. Понятно вставляются всякие гадости, чтобы затруднить жизнь кракера (например Jet-Set, кажется, грузит байты в обратном порядке) и каждый блок при отработке выставляет флаги. И если блок не считан поблочно с ленты, а оказался в ОЗУ целиком, то не будет работать.

Вообще-то, если нужны игры с защитой от копирования, могу их сделать, когда-то делал. К сожалению, уже нет программы компоновщика. Он облегчал работу. Но теперь могу написать свой компоновщик. МГ-защитами я пытался заниматься уже на ОРИОНЕ в 1991. На ОРИОНЕ еще проще. Там первый блок "вышибает" управление у монитора (неважно по директиве I или в формате ORDOS), а далее обычная раскрутка, как написано в ДОК-руководстве по СПЕЦИАЛИСТУ. Для СПЕЦИАЛИСТА такой трюк был не нужен, т.к там принято грузить программы кнопкой СБРОС.

Скиньте мне Jet-Set, что грузится в эмулятор. Это надо, чтобы я мог удалить все вложения в этой теме, заменив их на максимально маленький WAV-файл, освободив тем самым место для новых вложений, а то до 20 мб, остался всего один мегабайт.

Вот Вам пример инсталляторов защищённых программ. Это программы для СПЕЦИАЛИСТА из конца 1990 или начала 91. Эти программы работают на СПЕЦИАЛИСТЕ и выдают для записи на МГ защищённые копии программ для ОРИОНА. Чтобы программы ОРИОНА нельзя было скопировать. Но не знаю, будет ли работать без ленинградского монитора, т.к иногда инсталляторы использовали драйвер MSX, прошитый в ПЗУ D000 СПЕЦИАЛИСТА. Эти программы можно загрузить монитором СПЕЦИАЛИСТА (не волковским, орловским). Они записаны в формате RAMDOS-COMMANDER. Легко отличить по звуку заголовка. А вообще ленинградский монитор, если я верно, помню тоже легко по звуку отличается от орловского, да и кажется, более музыкальный пилотон (сравните).

Что касается ленинградского монитора СПЕЦИАЛИСТА. Дампов (т.е кодов) я не нашёл (они есть на дискетах и есть сами ПЗУ на платах). Т.к обычно вообще не храню коды тех программ, для которых есть исходник. Когда надо тогда и транслирую. Поэтому мне надо сначала их странслировать. Но они в идиотском виде. Во-первых в трудно понимаемых мнемониках КР580. Но проблема для трансляции не в этом (М80 понимает и мнемонику КР580), а в том, что это написано на ассемблере МИКРОН, отчего двоеточия в EQU и знаки вопроса в именах... но, главное, имена меток - русские. От этого M80 виснет. Поэтому-то и приходится древние программы вручную перерабатывать. Конвертировать в мнемонику Z80, а затем час редактировать вручную.

RAR-файл распаковался нормально. Почему так плотно ужалось? WAV ведь плохо жмутся.
Сейчас все вложения поудаляю... И посмотрю как грузится Jet-Set в эмулятор. Выложил тут ещё пару файлов.

NEO SPECTRUMAN
26.03.2017, 17:18
Мне интересна не снятие защиты, а загрузка в оригинале, как оно было с ленты. Поэтому, я прошу: если есть еще что-то с таким же методом загрузки - оцифруйте.
нужно для эмуляторов РК-шек приспособить расово верный .tzx

DDp
26.03.2017, 18:05
нужно для эмуляторов РК-шек приспособить расово верный .tzx
Напрямую непойдёт, другой формат бита и байта. Но можно сделать свой, "по мотивам". А расширение, например, .TRK


А файлы с расширение *.RK. Как их использовать?
Это ж ваш нелюбимый .RKR и все эти .RK* :v2_laugh:
Это дамп всех байт без пилот-тона и синхро-байта.
Пока не придуман другой формат образа ленты пусть лежит в .RK
Можно конвертировать в wav, например, это утилитой (http://zx-pk.ru/threads/6505-radio-86rk-raznoe.html?p=554635&viewfull=1#post554635). Для скорости Специалиста ключ -k 126 .


Это что блоки из Jet-Set или там была другая игра в защите?
Никакой защиты не увидел. Просто блоки байтов и даже РК-шная контрольная сумма в конце блока.


Очевидно мой древний 7Z не знает такой более новый алгоритм упаковки 7Z.
Ох, :v2_dizzy_facepalm: , выложил для вас rar (http://zx-pk.ru/threads/27540-programmy-80-kh-leningradskij-monitor-spetsialista-ramdos-cp-m-2-5-mgts-i-z80.html?p=906185&viewfull=1#post906185).

NEO SPECTRUMAN
26.03.2017, 18:14
боже

7-Zip работает в Windows 10/8/7/Vista/XP/2012/2008/2003/2000/NT

свежий винрар образца 10-го года свободно хавает
7z образца конца 16-го года прекрасно работает в хр...


хотя по этим причинам я и выкладываю все в zip
пушо хр открывает его из коробки...

barsik
26.03.2017, 18:29
Никакой защиты не увидел. Просто блоки байтов и даже РК-шная контрольная сумма в конце блока

Скопируйте Jet-Set на реале с одной кассеты на другую. Как Вы это сделаете? ПолучИте стартующий обычным образом один файл. Но только честно, на реале, а не на IBM PC.

Если формат записи не менялся, значит особой хитрой защиты и не делали.

Загрузил в эмуляторе B2M Jet-Set. Долго не мог начать игру. <ВК> не нажимался. На оригинале было также, но лучше. Дело в скорости эмулятора. Кстати, все местные фанаты СПЕЦИАЛИСТА имели их с тактом 2.5 МГЦ, отчего и константы в ПЗУ мониторов под это. Так вот эмулятор ведёт себя как будто скорость ~1 МГЦ, даже не 2 МГЦ. Это видно по программам, которые я помню. И в этом Jet-Set управление не курсорными клавишами, а какими-то левыми, надо подбирать более удобные опытным путём. Надо в конфиге эмулятора выставлять в первой строке такт 3 МГЦ (можно написать в герцах или килогерцах).

Закомментировал в конфиге по совету b2m строки с адресами п/п-мм ввода/вывода массива. Теперь стал выходить в монитор по нажатию функц.клавиш и затем ВК. Но если верно помню, загрузчик должен был выходить по нажатию СТР, а иная кнопка меняет константу ввода. В ленинградском мониторе это убрано, т.к константа настраивается сама, поэтому и можно выйти в монитор по <ВГ>, а в оригинале загрузчика так не выйти.

Плохо, что нет никакой индикации идёт загрузка или нет, крутится магнитофон или нет. И какой WAV-файл читается тоже не видно.

Файл RC (auto) - тоже многоблочный, для загрузки по сбросу. Первый блок загрузившись делает CALL D800, это инициализация эл.диска RAMDOS (проверяет есть ли на D800 код C3, чтобы не было улета, если ПЗУ не стоит). Если инициализация успешно, то грузит остальные блоки. Если в ПЗУ D800 ничего нет, то выходит из загрузки.

Чего-то и файлы в формате монитора тоже плохо грузятся. Или записи дерьмовые или это свойство эмулятора? Надо попробовать выгружать из эмулятора в WAV-файл, а затем это читать в эмуляторе. Тогда будет яснее.

NEO SPECTRUMAN
26.03.2017, 19:02
Напрямую непойдёт, другой формат бита и байта.
ну дык он же заточен
под любые турбо загрузчики и защиты от копирования
с любым своим форматом бита и байта...



нужен просто формат который будет хранить не биты а байты
а длительность 0 и 1 на входе матафона

хранить в wav это...

- - - Добавлено - - -


Почему так плотно ужалось? WAV ведь плохо жмутся.
вав шикарно жмутся
а если сигнал сферический в вакууме то и подавно...
я офигел когда получилось эффективно жать jpg о_О

- - - Добавлено - - -


Сейчас все вложения поудаляю...
пусть сейчас наступит хотя бы через неделю

HardWareMan
26.03.2017, 19:22
Скопируйте Jet-Set на реале с одной кассеты на другую. Как Вы это сделаете? Получите стартующий обычным образом один файл. Но только честно, на реале, а не на IBM PC.
У Lode Runner'а в загрузчике встроен копировщик. Нужно просто загрузить с шифтом, ЕМНИП. Тогда, после загрузки всего он не запустит игру а начнет циклически выгружать по нажатию любой кнопки. Причем в полном формате, с загрузчиком и картинкой. Это я просто к слову.

А в чем причина удаления вложений?

barsik
26.03.2017, 22:07
У Lode Runner'а в загрузчике встроен копировщик.

Кажется, у RAMDOS-коммандера сделано также, после загрузки задаётся вопрос сделать-ли копию или стартовать.

Чтобы эмулировать RAMDOS придётся ввести банки ОЗУ в эмулятор B2M. Иначе откуда взять ОЗУ для эл.диска. Видимо придётся сделать конфиг, в котором в окне 4 кб (на месте редактора и ассемблера E000...EFFF будет прокачиваться сколько-то ОЗУ. Это только для эмулятора, чтобы получить работающий код RAMDOS, не для реала. На реале у СПЕЦИАЛИСТА совсем нет излишнего ОЗУ, что и обусловило переход его пользователей на ОРИОН, где излишнее ОЗУ есть.

Если-бы эмулятор мог читать звуковой сигнал прямо с линейного входа, куда подключить магнитофон, то считывание и оцифровка кассет была бы удобной. Тогда включил RAMDOS-COMMANDER на ввод, поставил в магнитофон кассету МК-90 и ушёл. Через 45 минут пришёл и все файлы уже в эл.диске. Тогда можно пометить файлы (задать порядок выгрузки) и запустить запись, которую в эмуляторе можно сделать не на МГ-ленту, а в WAV-файл. Так это использовалось в реале, позволяяя удобно перекомпоновывать кассеты. А то, что записал в WAV-файл сам эмулятор, он же и должен хорошо считывать.


А в чём причина удаления вложений

Зачем дублирующие вложения, к тому же плохо сжатые WAV. Тем более половина дохлых и уже выложен исправный тот же файл. Место для вложений ограничено. К тому же я не знаю, читается или нет, то что я выкладываю. Может зазря трачу время.

HardWareMan
27.03.2017, 08:25
Зачем дублирующие вложения, к тому же плохо сжатые WAV, тем более если они дохлые и уже выложен исправный тот же файл. Место для вложений ограничено. К тому же я не знаю, читается или нет, то что я выкладываю. Может зазря трачу время.
А, а я грешным делом подумал, что совсем удалить хотите. Это хорошо. Текущее зазеркалил здесь. (http://hwm.us.to/barsik/)

barsik
28.03.2017, 17:08
Ну вот, наконец-то. Получите ленинградский монитор. Антиквариат из 1990 года. Предполагаю, что с тех пор сделали много более крутых мониторов. Но это историческая вещь и лучшая в своё время.

Замучился переделывать исходники из формата ассемблера МИКРОН в формат для макро ассемблера М80. Затруднения в переделке из-за русских имён меток в КОИ-7, причём с недопустимыми символами "знак вопроса" в метках. Из-за этого кракнутый M80 вешается, а не кракнутый - не берёт русские буквы в КОИ-8. Если просто сбросить бит D5, то потеряются комментарии. Вот и приходится "трахаться" вручную. К сожалению все древние исходники, примерно до 1992 года, в основном, именно в идиотском формате ассемблера МИКРОН.

Странслировал, и думаю, получился почти полный оригинал. Отличия только, возможно, в фонтах 6*8 и 8*8, т.к нашёл какие-то подходящие, предположительно те (архив 'Фонты' у меня - 2.8 мб, так что легко подобрать нужный фонт).

Вот как-раз из-за фонтов этот архив вскоре заменю, т.к в листингах нет дампов фонтов. Их приходится вручную подставлять HEX-редактором. Так уж было принято в 80-е. Но теперь легко дизассемблировать фонт с помощью ИДА и встроить полученный исходник фонта прямо в исходник ROM-BIOS, так что сразу будет получаться готовый дамп для прошивки ПЗУ.

В этом ROM-BIOS на месте дампа D800...DFFF стоят коды FF. Здесь должен быть RAMDOS. Но бессмысленно его туда "совать", если на реале ни у кого нет эл.дисков 512 кб, а в эмуляторе нет соответствующей поддержки. Но эмулятор B2M допускает банки ОЗУ, поэтому не проблема сделать конфиг, чтобы было хоть 16 мб ОЗУ с цельно банковой коммутацией (точнее по 48 кб). Тогда можно сделать версию RAMDOS для эмулятора. А т.к программы для RAMDOS не работают на физическом уровне, а лишь стандартными подпрограммами, то без разницы как физически устроен эл.диск. Через пару дней постараюсь набрать текст руководства программиста (это интересно лишь программистам).

Но есть проблема. С этим ROM-BIOS нет проблем с эмулятором B2M при чтении/записи WAV-файлов. Что говорит о том, что сам монитор исправен. Но мне не удалось считать RKS-файлы, т.е уже готовые коды (не звуки WAV). Возможно, по причине того, что "подсовываю" неверный формат RKS, т.к формат RKS представляет большой секрет, отчего пока не смог достать ИНФО по нему. Но даже когда загрузил волковский монитор, работающий в формате РК86, то это тоже не помогло. Хотя С377 - точно вход чтения байта и этот адрес подставлен в конфиге. Но эмулятор B2M не хочет выводить окно с запросом имени файла. Это говорит о том, что на эту точку нет перехода, что странно... Как же тогда грузится. Вряд-ли я посадил "ляп" при конверсии исходника. Надо смотреть отладчиком эмулятора - куда идёт переход по директиве I. Может кто-то разберётся.

А вообще, т.к здесь п/п-ммы ввода/вывода векторизованы, отчего подпрограмм ввода/вывода не одна, - их много, то возникает проблема с эмулятором. Например, когда Вы включили MSX-формат, то по команде I будет работать совсем другая п/п-мма чтения байта и адрес выхода из неё - другой. Отчего эмулятор B2M просто виснет при попытке работать с магнитофоном.

Для начала прочтите все файлы READ_ME.TXT. Прочитайте описания директив и обоих версий монитора. Для V3.3 нет описания команд, но на 80% соответствует описание M27.TXT. А отличия описаны в файле M33.TXT. Зато для V3.3 есть полное описание попрограмм и ячеек, нужная вещь для программиста. Но это есть только на бумаге.

Вот минимальные указания для некомпетентных. Запустите в эмуляторе версию ONLY WAV. Нажмите функциональную клавишу. Появится курсор, - нажмите <ВК> или ещё лучше сразу НР+F2 (НР у B2M это SHift). Это одновременно включит большие буквы. Наберите E<ВК>. Войдёте в редактор, на вопрос NEW (Y/N)? нажмите <Y>. Затем нажмите <F1>. Нажмите АР2 (это Escape у B2M), затем <I>. Запустите магнитофон с записями в формате ED-MICRON и нажмите <ENTER>. Следите за счётчиком в правом верхнем углу. Если он не бежит, значит ввода нет. Первая цифра появлятся по захвату пилотона.

Естественно старые программы надо запускать со шрифтом 6*8, для чего снова нажмите НР+F2 (триггерный эффект). Очень удобно, что есть команда НР+F9 - это выход в монитор из любой программы, что пользуется ПЗУ. Например, если у Орлова запустить большой дамп, то выйти из него нельзя... Если что-то зависло при вводе с МГ тоже жмите НР+F9. Из редактора не читайте и не пишите файлы в эл.диск. Результат не предсказуем (т.к в пустом ПЗУ код FF - команда RST 38H). Чтобы этого не было можно заполнить входы RAMDOS D800...D83F кодом C9 (команда RET), тогда по крайней мере улёта не будет. Полосы по бордюру, Вы увидеть не сможете, т.к в эмуляторе бордюр не отображается.

Если записей в формате ED-MICRON нет, то загружайте в формате монитора Орлова по директиве I, в формате РК86 по директиве Y, или в формате ZX-Spectrum по дирктиве J. Для загрузки записей кооператива SP-580, перед их загрузкой нажмите НР+F3, чтобы включился барнаульский эмулятор. Большинство барнаульских программ будет работать. Для тех что не работают придётся поставить ВИ53 и сделать некоторые доработки железа.

Игры Manic-Miner в виде WAV-файла не нашёл, а инсталлятором или дампом его вообще не было. Много WAV-файлов погибло при крушении винта в конце 90-х, отчего весь архив пришлось считывать заново. Естественно при повторном считывании в 2000 году что-то не нашёл, что-то забыл. Жалко, если Manic-Miner пропал. Попробую поискать кассету, но велика вероятность что на неё была перезапись, т.к все 100 кассет я истратил на другое. В многоблочном виде есть только SP-Copy и RC для RAMDOS. Для них даже есть инсталяторы.

А есть у кого-то Manic-Miner СПЕЦИАЛИСТА одним файлом? Тогда могу сделать новую версию с многоблочной автозагрузкой. Если бы был компоновщик, то это была бы работа на 15 минут. Впрочем, так же сильно защитить от копирования, как было в оригинале, - вряд-ли смогу. Завтра попробую поискать кассеты и считать SP-Copy, чтобы узнать сумеет его кто-нибудь кракнуть или нет. Я в 1989 не сумел кракнуть, хотя специалистовская версия защищена очень слабо.

HardWareMan
28.03.2017, 17:41
Замучился переделывать исходники из формата ассемблера МИКРОН в формат для макро ассемблера М80. Затруднения в переделке из-за русских имён меток в КОИ-7, причём с недопустимыми символами "знак вопроса" в метках. Из-за этого кракнутый M80 вешается, а не кракнутый - не берёт русские буквы в КОИ-8. Если просто сбросить бит D5, то потеряются комментарии. Вот и приходится "трахаться" вручную. К сожалению все древние исходники, примерно до 1992 года, в основном, именно в идиотском формате ассемблера МИКРОН.
Пожалуйста, предоставьте оригиналы для Микрона! Это очень важно для меня.

barsik
28.03.2017, 18:18
Догадался, что возможно эмулятор B2M не отлавливает точку входа в подпрограмму RDBYTE из-за того, что переход туда делается не по JMP, а по JP (HL) [что в мнемонике КР580 - PCHL], а также командой RET (после EX (SP),HL). Чтобы это узнать, если автор B2M ничего не сообщит, то придётся попробовать изменить исходник, чтобы сделать переход по JMP и перетранслировать.

HardWareMan, Вас устроят точно такие же исходники, как и выложенные, но в мнемонике КР580 (т.е до прогона исходника КР580 через программу конверсии ZTR 1991 года, чтобы сделать тексты понятнее)?

Из чего легко сделать формат МИКРОНА. Это делается с помощью TRC (конвертора кодировок) и редактора UltraEdit. Сначала делается замена '^TEQU' на ':^TEQU' (что вставит двоеточие в имена меток и переменных с EQU). ^T - это регулярное выражение заменяющее TAB. После конверсии в КОИ-7, сначала все сдвоенные пробелы и табуляции заменяются на один пробел. SCREEN и мой редактор (аналогичный, только с блоками) понимает и использует табуляции, а вот редактор МИКРОН и производные от него от табуляций улетают. Затем коды 0D 0A заменяются на один код 0D (проще просто удалить все 0A). После чего остаётся после слова END вставить байт FF.

Подскажите, пожалуйста как исправить грамматическую ошибку в заголовке сообщения.
Также подскажите, как переименовать тему, в которой я топик-стартер?

Слышал, что можно сделать отсрочку появления сообщений в форуме. Что даёт время на исправление ошибок. А то постоянно получается, что я не успеваю исправить ошибки, как предложения уже утаскивают в цитаты, до того, как я отредактировал и исправил ошибки, отчего возникают отличия в сообщениях и цитатах оттуда. Никто не слышал о отсрочке публикаций. Это полезно. Прочитал, исправил, если не понравилось, то вообще удалил.

HardWareMan
28.03.2017, 20:04
HardWareMan, Вас устроят точно такие же исходники, как и выложенные, но в мнемонике КР580 (т.е до прогона исходника КР580 через программу конверсии ZTR 1991 года, чтобы сделать тексты понятнее)?
Да, устроит. Чем больше будет оригинального тем лучше для истории.

Подскажите, пожалуйста как исправить грамматическую ошибку в заголовке сообщения.
Также подскажите, как переименовать тему, в которой я топик-стартер?
ТС такой же пользователь. И если он не модератор раздела то ничего сделать нельзя.

Слышал, что можно сделать отсрочку появления сообщений в форуме. Что даёт время на исправление ошибок. А то постоянно получается, что я не успеваю исправить ошибки, как предложения уже утаскивают в цитаты, до того, как я отредактировал и исправил ошибки, отчего возникают отличия в сообщениях и цитатах оттуда. Никто не слышал о отсрочке публикаций. Это полезно. Прочитал, исправил, если не понравилось, то вообще удалил.
Возможно полезно, но все это сильно зависит от движка форума. Конкретно здесь я пытаюсь вычитывать свои сообщения в предпросмотре (подключенные словари грамматики помогают). И, кстати, именно из-за этого сделали автосохранение сессии (если браузер вылетит) и предупреждение если попытаться покинуть страницу ввода с не сохраненным текстом. Раньше этого не было.

fifan
28.03.2017, 20:46
Пиши мне название темы я исправлю.

NEO SPECTRUMAN
28.03.2017, 23:04
Прочитал, исправил, если не понравилось, то вообще удалил.
Ну есть предварительный просмотр в расширенном режиме...

хотя я сам долго потом дописываю посты
так как опечатки сразу и не видно
а через час они уже кидаются в глаза

- - - Добавлено - - -


(подключенные словари грамматики помогают)
ага нажал исправить
а потом просмотрел что оно заменило каким то левым похожим словом...
а ошибка больше не светится...

- - - Добавлено - - -


И, кстати, именно из-за этого сделали автосохранение сессии (если браузер вылетит) и предупреждение если попытаться покинуть страницу ввода с не сохраненным текстом. Раньше этого не было.
кстате полезная функция...
но чот часто у меня выскакивают куски уже запощщенного текста...

HardWareMan
29.03.2017, 06:28
ага нажал исправить
а потом просмотрел что оно заменило каким то левым похожим словом...
а ошибка больше не светится...
Я не знаю как пользоваться автоисправлением и не желаю знать. Мне достаточно подчеркивания сомнительных слов, а исправлять или нет я принимаю решение сам, т.к. словари не идеальны. И исправления ввожу руками.

barsik
29.03.2017, 09:29
Клавиши управления для Джет-Сет-Вилли:

Влево: 7,8,9,G,Rt,X
Вараво: 6,Ш,Z,O,L,V,<
Прыжок: -,*,CR,Hm,ТАБ,Up,Lf,Dn и др.
Инверсия: H,ПС,7,?
Стоп/Пуск: 5,N,T,АР2,T,R

Удобно управлять клавишами Г и Ш, как раз влево и вправо. Была кракнутая версия, в которой количество человечков не сокращается и была оригинальная. Обе грузились многоблочно по сбросу и не отличались по виду. Не знаю какая это версия.

Почему никто не сообщил, работает ли у них ввод/вывод WAV-файлов? А также разобрались ли, как включить барнаульский эмулятор, чтобы грузить и использовать барнаульские программы? Об этом написано в файле M33.TXT. Вообще-то из барнаульских программ был ценен только их бейсик и игра Тутанхамон. Остальное дублировалось программами для стандартного СПЕЦИАЛИСТА.

Прилагаю рекламу КООП SP-580 из 1988 кода, что присылалась на запрос каталога.



.
Перечень программ с кратким описанием

1. MONITOR - объём 4 кб (2 шт.573РФ2), располагается в адресах C000...C7FF F800...FFFF. Включает в себя базовый набор команд для подобных систем. Соблюдена совместимость с ЗАГРУЗЧИКОМ из МК 05.1987 по наиболее часто используемым точкам входа в подпрограммы, а также совместим с программным обеспечением ПК РАДИО-86РК (используются аналогичные подпрограммы).

Применён новый формат записи на магнитную ленту - метод двухчастотного кодирования (предусмотренный в стандарте MSX), что позволило на порядок повысить надёжность хранения информации на МГ-ленте с сохранением прежней скорости ввода программ. При вводе программ с МГ-ленты осуществляется автоматическая настройка на частоту записи и скорость носителя, побайтовая синхронизация, анализ ошибок. В MONITOR входит команда чтения в прежнем формате (двух фазное кодирование). При записи/чтении программ производится ввод/вывод имени программы, загрузка по адресам указанным при записи, контроль правильности введённой программы, автоматический пуск программы по адресу указанному при записи (т.е не обязательно с адреса начала блока), что даёт также возможность многоблочной загрузки - т.е последовательный ввод нескольких блоков информации по разным адресам.

Есть встроенный программатор для чтения/записи микросхем РПЗУ типа 573РФ2 (РФ5), 573РФ4 и 573РФ6.

Ввод и работа команд аналогичны ПК РАДИО-86РК (но возможно редактирование строки при ошибке), а также есть тимплет символов (т.е есть режим автонабора предыдущей команды). Работа с подпрограммой ввода с клавиатуры более удобна, чем в ЗАГРУЗЧИКЕ. Поддерживается клавиша РУС/ЛАТ (инидикация звуком и светодиодом) в триггерном режиме, НИЖНИЙ/ВЕРХНИЙ регистр. После длительного удержания какой-либо клавиши автоматически включается режим автоповтора (неудобная клавиша ПОВТОР вообще не используется).

Все функции и адреса рабочих ячеек ЗАГРУЗЧИКА остались без изменений. Кроме того введена возможность программной замены основных п/п-рамм монитора определяемыми пользователем п/п-раммами, размещение своего знакогенератора (фонта) и таблицы кодов клавиш в любом месте ОЗУ (т.е фонт и код клавиш, прошитые в ПЗУ можно изменить).

MONITOR поставляется "зашитым" в РПЗУ заказчика (2 шт 573РФ2) с подробным описанием команд, рабочих ячеек, стандартных п/п-рамм и необходимых схемных усовершенствований. Программа MONITOR является некоммерческой и разрешена для свободного распространения.

2. BASIC - объём 8.5 кб, аналогичен BASIC "МИКРОН". Но дополнительно введены команды рисования окружности (ли дуги), команды работы с блоками графических изображений и музыкальные команды бейсика.

3. Пакет редактор, ассемблер и дизассемблер ( 2К * 3 шт) - прошиваются и работают в ПЗУ РФ2.

4. Отладчик - аналогичен недавно описанному в журнале "РАДИО".

ИГРОВЫЕ ПРОГРАММЫ В МАШИННЫХ КОДАХ

5. Шахматы - 8 кб, хорошая графика.

6. Тенис для двоих игроков.

7. Тетрис. Аналог известной игры от ДВК.

8. Воздушный бой для двоих игроков.

9. Striker - бой с вертолетами

10. Land - собирание сокровищ, убегая от чертей.

11. Sex-альбом (2 части по 24 кб), руководство по любви.

12. Tutakhamun - программная новинка !!! Захватывающий сюжет - собрать всякие штучки, убить различную ходящую, прыгающую нечисть, пройти более десятка сложных лабиринтов.

13. Jet-Set - программная новинка !!! На сегодняшний день самая лучшая, мощная программа для ПК "Специалист" по объёму граф.объектов, количеству и разнообразию игровых ситуаций и персонажей.

Все игровые программы используют качественную графику и различные звуковые имузыкальные эффекты. Причём, используются стандартные точки входа в MONITOR.

Программы записываются на кассету заказчика в формате двух частотного кодирования и для своей загрузки требуют нашей версии MONITOR. Стоимость всего комплекта ПО вместе с описанием MONITOR, BASIC и "зашивкой" MONITOR в РПЗУ (2 шт 573РФ2) - 50 рублей. Дополнительно и бесплатно мы можем записать в РПЗУ ассемблер, редактор и дизассемблер (3 шт 573РФ2).

Адрес для заказа программ:

656099 г.Барнаул, а/я 108, Титков Евгений Леонидович.
.


Подскажите какой тэг делает центровку заголовка. И вообще как сохранить формат (хотя бы красные строки, т.е пробельные отступы в начале строк). Тэг 'code' не годится, т.к переводит весь текст в окно и другие тэги перестают действовать.

Формат записи MSX применённый в барнаульском мониторе уж не на порядок повышает надёжность (это рекламное преувеличение). Если у Вас хороший МГ аппарат высшего класса (Яуза-220 или Яуза-221) , то разницу в надёжности Вы даже не заметите (лишь звук поприятнее, вместо шипения - тональный сигнал). Кроме того, как я обнаружил, этот формат "плохо держит время", с одной и той же кассеты записанной 27 лет назад записи в двух-фазке считываются без проблем, тогда как из записей в MSX считываются единицы файлов.

Однако, если Вы применяете дешёвый МГ аппарат VI-го класса, с растянутыми пассиками и запиленной головкой, то этот формат, по-крайней мере пока не пересохнет лента, будет существенно надёжнее. Хочу пояснить, чем объясняется повышение надёжности записей на аппаратах с плохой механикой.

Каждый барнаульский файл имеет следующий формат:

Пилотон
Заголовок
Пилотон
Собственно файл

Пилотон - меандр 2400 Гц. В заголовке указываются адреса начала, конца, адрес запуска, контрольная сумма и имя до 9 символов. По обоим пилотонам определяется константа чтения

Двух частотное кодирование формат MSX Барнаул (но не "Канзас-Сити", как в ИРИШЕ и APPLE-II):

Кодировка 0: ________Г~~~~~ .......... период 1200 ГЦ

Кодировка 1: ____Г~~L___Г~~ ........... два периода 2400 ГЦ

Каждый байт имеет свой "ракорд" из 2-х единиц и одного нуля. Так записывается байт:

____Г~~L___Г~~L___Г~~L___Г~~L______Г~~~~~... далее собственно байт

\_____________________________/ \_____________/ \_____________________/
............. это 2 единицы .................... это ноль ........ 8 битов самого байта

Благодаря наличию перед байтом 2-х единиц при чтении производится синхронизация по каждому байту. Причём начало байта фиксируется по первому периоду и ещё остаётся время для рисования картинки без всяких ухищрений (как это приходится делать в лениградском мониторе за счёт прозрачной задержки для рисования счётчика при вводе/выводе). При чтении в таком формате даже больших программ в 48 кб (с заставкой) на дерьмовом МГ-аппарате с "плывущим" звуком, мало пригодном для музыки, - проблем не возникает. Т.к есть побайтовая синхронизация, то между байтами можно сделать любую паузу (до определённого предела, инача возникает ошибка "тайм-аут при вводе", что не свойство формата, а сделано специально во избежание зависа при вводе). Поэтому запись может давать паузы для программы загрузки, чтобы та успевала рисовать заставку или бегущий счётчик.

Барнаульский МОНИТОР намного грамотнее, чем орловский и появился раньше, также как и орловский, на смену убогого волковского монитора. Он, в отличие от орловского монитора реально позволяет использовать программы от РК86 без их переделки. А Орлов лишь спародировал монитор РК86, - что толку от похожести адресов стандартных входов, ведь если программы всё-равно надо переделывать, то программисту всё-равно на какие адреса заменять вызовы F803, F806, F809.... и без разницы похожи эти адреса или нет. А формат с именами файлов можно было ввести и без пародии на ПЗУ РК86 но по другим адресам.

Увы, А.Орлов "влез" в журнал МК со своим дурацким монитором, отчего барнаульцам настал кирдык. Как видите, против силы печатного слова невозможно бороться. Если туфта напечатана в журнале, то она побеждает даже самые крутые программы, разработки и идеи. Это ещё более наглядно продемонстрировал ОРИОН.

Кстати, ленинградский монитор имел вектора, формат РК и ZX, загружаемые драйвера и шрифт 8*8 задолго до того, как был получен ДОК и программы от SP-580. Хотя идея бегущего счётчика была введена именно, когда увидели, как бежит на экране счётчик (не адрес ячеек ввода, а оставшееся время в секундах) при вводе защищённых от копирования программ SP-580. Кстати все программы SP-580 были защищены от копирования и те, программы что не были кракнуты приходилось копировать с магнитофона на магнитофон. А кракнуты были только Тутанхамон и Jet-Set. Причём и их, человек который их кракнул, продавал только в защите от копирования (ему же надо было компенсировать свои затраты в 50 рублей на покупку и труд по краку и адаптации игр).

Кстати, после выхода орловского монитора стали появляться программы от идиотов, которые использовали вызовы не загрузчика, а вызовы на C800, т.е в монитор Орлова. Это в корне неверно, т.к ROM-BIOS это загрузчик на C000, а монитор на C800, - это лишь командный монитор, необязательный сервис для пользователя, т.е он может как быть, так и не быть на реальной мишине. Кроме того, какой смысл делать вызовы на C800, C803, C806, C809... если эти входы всё-равно переадресуется в загрузчик. Т.е, кроме вредительства от этого нет никакого прока.

Кстати, поясню почему исправляю грамматические ошибки в сообщениях на форуме. Не люблю пользоваться "предварительным просмотром", т.к он работает не на всех браузерах, что я использую. А т.к для этого сайта я обычно пользуюсь самым древним браузером, что мне удалось достать (потому что он самый быстрый, экономный по трафику, и главное не тратит ресурс CPU, так что одновремнно можно загрузить эмулятор и кучу других программ), то в нём, если я забуду и нажму "предварительный просмотр", то происходит завис. И с трудом набранный большой текст теряется навсегда, что очень обидно. Так потерял уже кучу сообщений, ведь набирать второй раз пропадает всякое желание.

HardWareMan
29.03.2017, 09:48
Кажется, у RAMDOS-коммандера сделано также, после загрузки задаётся вопрос сделать-ли копию или стартовать.
У Lode Runner'а это очень интересно сделано. Там загрузчик маленький и он самомодифицируется (подменяя процедуру загрузки байта на процедуру выгрузки, в коде выделено 6 байт для этого). А так как он загружается "выгруженным", то на входе выгрузка меняется на загрузку:
http://savepic.ru/13417518.png
Для этого по адресу 8134H есть 2 варианта, для загрузки и выгрузки:
http://savepic.ru/13408302.png
Так вот, установив режим "загрузка", проверяется шифт и при нажатии устанавливается признак по адресу 8150H (этот байт входит в тело загрузчика и равен 0). Когда все загружено (картинка на экране и игра в памяти), происходит проверка контрольной суммы игры (но не картинки, к сожалению) и если она с ошибкой в цикле выводится надпись *ERROR*, иначе проверяется флаг, в результат либо происходит переход на игру, либо на начало выгрузки:
http://savepic.ru/13375534.png
Программа выгрузки является бесконечным циклом. Сначала он ждет кнопку, потом восстанавливает команду выгрузки а потом выгружает все так, как оно было загружено. Контрольная сумма, кстати, передается на манер РКшки: с микрораккордом и синхробайтом:
http://savepic.ru/13407265.png
http://savepic.ru/13429792.png
Кстати, именно из-за того, что целостность картинки не проверяется, наша кружковая копия имела косяки в картинке (несколько рандомных точек и отсутствовала одна линия). Я не знаю, на каком этапе они появились. Но через пару лет посещения кружка я провел целое занятие за исправлением этого косяка, что руководитель рассматривал как практику осваивания ассемблера и магнитофона, поэтому не препятствовал. Вызов был не сильный, по моим меркам, но интересным.

uart
29.03.2017, 10:02
А описание бейсика от SP-580 есть?
Ну и заодно прошивки "Пакет редактор, ассемблер и дизассемблер ( 2К * 3 шт) - прошиваются и работают в ПЗУ РФ2"

HardWareMan
29.03.2017, 10:29
Почему никто не сообщил, работает ли у них ввод/вывод WAV-файлов? А также разобрались ли, как включить барнаульский эмулятор, чтобы грузить и использовать барнаульские программы? Об этом написано в файле M33.TXT.
Я, к сожалению, сейчас не имею достаточно свободного времени, чтобы крутануть все на реале, а эмульгаторы мне не интересны. Ближе к выходным постараюсь продавить.

Вообще-то из барнаульских программ был ценен только их бейсик и игра Тутанхамон. Остальное дублировалось программами для стандартного СПЕЦИАЛИСТА.
Тутанхамон в кружке был, и вроде грузился по сбросу. Только в отличии от LodeRunner'а, картинка грузилась прямо, как блок данных экрана Специалиста, а не построчно, как в Спектруме.

Прилагаю рекламу КООП SP-580 из 1988 кода, что присылалась на запрос каталога.
Монитор и доработка Специалиста под монитор SP-580 тут пролетали, у меня схоронено. Вот, например, карта внешних устройств:
http://savepic.ru/13429796.jpg

- - - Добавлено - - -


Хочу пояснить чем объясняется повышение надёжности записей на аппаратах с плохой механникой.
Не нужно объяснять Спектрумщикам, почему двухчастотка надежнее манчестера. Ведь тут важно отношение времени периодов, поэтому при большом отличии периода 0 и 1 (а обычно отличие в 2 раза) получаем достаточно большое окно корретно распознаваемых данных. При этом, детонация практически нивелируется (не влияет на качество), если она достаточно плавная (мятый ролик или растянутый пассик). Я помню как загружал без проблем в Спектрум записи с такой детонацией, что полосы бордюра постоянно меняли свое направление вверх-вниз а звук раккорда был УОУОУОУО вместо тона. А если сделать константу чтения адаптивной, то можно будет загружать этот формат без сбоев даже если скорость протягивания будет плыть со временем (высохший электролит в РЧВ) в достаточно широких пределах.

- - - Добавлено - - -

Хочу добавить, что кассеты кружка я распознаю не по принятому алгоритму (ждем перепад, отмеряем время, считываем бит, в конце корректируем инверсию), а измерением каждого отдельного полупериода. Работает это так:
Есть "следящий" бит, который в начале равен 0.
2 подряд коротких полупериода это сохранение значения следящего бита, который вдвигается в приемный байт.
1 длинный полупериод это смена значения бита на противоположное, значение которого так же вдвигается в приемный байт.
В итоге мы более корректно отслеживаем разность времени, мы не имеем инвертированного приема (прием всегда позитивный), мы можем без проблем сделать подстройку под константу, причем с корректным опознаванием сложного (красивого на слух) раккорда. Метод работает, кассеты считываются. ;)

barsik
29.03.2017, 12:56
А описание бейсика от SP-580 есть? Ну и заодно "Пакет редактор, ассемблер и дизассемблер"

Увы, у меня нет описания бейсика SP-580. Оно, кажется, было только на бумаге. Так как заказывал и оплачивал программы в КООП SP-580 не я, то у меня его никогда и не было. Да и самого этого бейсика нет. Бейсиками я никогда не пользовался, ни на РК86, ни на СПЕЦИАЛИСТЕ, ни на ОРИОНЕ, ни на ИРИШЕ. Хотя всегда хотел адаптировать для ОРИОНА крутые бейсики от ГДР-овских компьютеров. Но было лениво набирать дампы в 20 кб (и даже был один 24 кб).

Для ОРИОНА есть отличный MSX-бейсик А.Вакуленко (это и есть адаптированный оригинал, переделана графика и работа с джойстиком, сделано как в оригинале). Можно адаптировать для СПЕЦИАЛИСТА в версии на Z80. Работу с файлами, конечно придётся заглушить (т.к в СПЕЦИАЛИСТЕ нет излишнего ОЗУ для эл.диска), а вот работу с экраном почти не придётся переделывать, т.к экраны СПЕЦИАЛИСТА и ОРИОНА организованы одинаково. Увы, цвет тоже придётся заглушить.

Пакет редактор, ассемблер и дизассемблер был, но я его даже не видел и никогда не использовал. Т.к его надо было прошивать в ПЗУ C800...EFFF, а у меня в этих ПЗУ уже стояло то же самое (редактор другой, а ассемблер и дизассемблер - журнальные). Но мне говорили, что это туфта, всё от РК86, просто перетранслированное на адреса ПЗУ. Оригиналов, естественно, давно нет. Но можно восстановить, по крайней мере, ассемблер и дизассемблер. Редактор от РК - совсем туфта, SCREEN намного лучше (при тех же 2-х кб). Чтобы странслировать ассемблер на другие адреса достаточно пары минут труда. Для этого мне надо зайти в эмулятор ОРИОНА и странслировать там исходники, что в формате для ассемблера МИКРОН.

Но Вы можете сделать это и сами. Исходник ассемблера есть в моем посте#28, а исходник дизассемблера вкладываю сюда. Как тот, так и другой, - не для макро ассемблера М80, а лишь для ассемблера МИКРОН. Не знаю какие ассемблеры были в моде на СПЕЦИАЛИСТЕ после 90-го года, но если у Вас нет ассемблера МИКРОН, т.е не на чем странслировать, то это можно сделать в эмуляторе B2M с BIOS_33.DAT, что я ранее выложил. Тогда сначала грузите исходник на 2000, затем выходите в редактор командой E<ВК> или E2000<ВК>. Там редактируете адрес ORG. Затем переходите в ассемблер командой АР2 + А. А в ассемблере надо нажать 1,2 или 3 и программа будет странслирована.

Учтите, что как ассемблер, так и дизассемблер, не вполне журнальные. В них адреса буфера трансляции и адреса буфера текста, не жёстко фиксированы (что неудобно, если есть версия для ПЗУ и версия для ОЗУ, отчего адреса буферов меняются), а берутся из двух служебных ячеек - BEGTXT и OBJCOD, что в ленинградских мониторах имеют адреса 8FE5 и 8FE1 соответственно. Версия с редактором и ассемблером в ПЗУ позволяет транслировать тексты с размером объёмом в 0800...8F00. Если надо чтобы ассемблер и дизассемблер работали на орловском или волковском мониторе, то подставьте вместо LHLD BEGTXT команду LXI HL,nnnn где nnn - это адрес буфера текста принятый для используемого Вами редактора текстов. Аналогично и с буфером трансляции, подставьте желаемый адрес.


Не нужно объяснять спектрумистам, почему двухчастотка надежнее манчестера

А разве у ZX-Spectrum такой же формат? По звуку записи ZX отличаются от записей MSX. И что у ZX тоже есть побайтовая синхронизация? Или байты как и в формате РК идут впритык бит к биту?

На мой взгляд всё наоборот - формат РК самый надёжный и устойчивый при условии, что механика без растянутых резиновых пассиков, или когда вместо настоящих пассиков стоят бытовые резинки. Кстати рекомендую не только резинки для упаковки, но и извиняюсь, резинки от гондонов. Они неплохо себя зарекомендовали для замены пассиков древних дисководов.

Когда я в 2000 году оцифровывал МГ-записи, то обнаружил, что все записи для РК86, СПЕЦИАЛИСТА и ОРИОНА читаются без проблем. А вот все записи ИРИШИ (где MSX) и часть записей игр ZX сдохла. В том числе сдох Commando, в который я только и играл, причём обе копии. По счастью с помошью копировщика удалось из двух копий, обьединив блоки из разных копий, восстановить игру.

Кстати, где можно найти WAV-файлы игр для XZ-Spectrum 48К? Дисковода у меня нет, отчего могу использовать только игры с кассет.

HardWareMan
29.03.2017, 14:54
А разве у ZX-Spectrum такой же формат? По звуку записи ZX отличаются от записей MSX. И что у ZX тоже есть побайтовая синхронизация? Или байты как и в формате РК идут впритык бит к биту?
Конечно отличается на транспортном уровне. Но вот на физическом - тот же самый двухчастотный сигнал с полным периодом для каждого бита. 0 малый период, 1 большой период. У раккорда еще бОльший период.

На мой взгляд всё наоборот - формат РК самый надёжный и устойчивый при условии, что механика без растянутых резиновых пассиков, или когда вместо настоящих пассиков стоят бытовые резинки. Кстати рекомендую не только резинки для упаковки, но и извиняюсь, резинки от гондонов. Они неплохо себя зарекомендовали для замены пассиков древних дисководов.
Зачем же так грубо? Есть же вполне легальное слово: презерватив. Ну, или, если вам угодно: Резиновое изделие №2 (https://www.factroom.ru/facts/wp-content/uploads/2012/02/n2.jpg). :) А так да, использовали в ЛПМ, было дело.

Когда я в 2000 году оцифровывал МГ-записи, то обнаружил, что все записи для РК86, СПЕЦИАЛИСТА и ОРИОНА читаются без проблем. А вот все записи ИРИШИ (где MSX) и часть записей игр ZX сдохла. В том числе сдох Commando, в который я только и играл, причём обе копии. По счастью с помощью копировщика удалось из двух копий, объединив блоки из разных копий, восстановить игру.
Все дело в несущей частоте. Я помню, что у RAMFOS такой же формат (там еще четность в каждом байте есть), тоже пищит высоко. И из-за этого на некоторых дубовых старых кассетах МЭК даже 4 дубля не хватало для надежности хранения. Кстати, у нас на кружке было несколько кассет долгого хранения (в жестяной коробочке). Их периодически перематывал руководитель и записи там были строго с половинной плотностью. Считывались все и всегда 100%.

Кстати, где можно найти WAV-файлы игр для XZ-Spectrum 48К? Дисковода у меня нет, отчего могу использовать только игры с кассет.
Качаем TAPки. Берем любой воспроизводящий TAPки софт (есть даже под смартфоны, можно с выхода наушников напрямую заливать). Профит! Я даже лет 8 назад свой софт писал. Защищенные программы хранят в TZX. Это расширение TAP файла. Подробнее в worldofspectrum.

- - - Добавлено - - -

Я вижу что этот *SCREEN* дизассемблер на базе микрона. В чем заключается его улучшение? Да, я разбирал и собирал ассемблер и дизассемблер Микрон в кружке на самом Специалисте. Делал некоторые исправления а позже переносил в 0B000H для Ориона (в A000H у меня сидел Специалистовский ED^7000).

barsik
29.03.2017, 15:14
вижу что этот *SCREEN* дизассемблер на базе микрона. В чем заключается его улучшение?

Естественно на базе МИКРОН-а. А какие ещё дизассемблеры бывают, - других и не бывает (на отечественных 8-ми разрядках). Точнее это и есть дизассемблер МИКРОН. Изменения только в методе загрузки в регистры адресов кода и результируещего текста. Я об этом уже писал выше. Вот цитата (после это сообщение удалю).



Учтите, что как ассемблер, так и дизассемблер, не вполне журнальные. В них адреса буфера трансляции и адреса буфера текста, не жёстко фиксированы (что неудобно, если есть версия для ПЗУ и версия для ОЗУ, отчего адреса буферов меняются), а берутся из двух служебных ячеек - BEGTXT и OBJCOD, что в ленинградских мониторах имеют адреса 8FE5 и 8FE1 соответственно. Версия с редактором и ассемблером в ПЗУ позволяет транслировать тексты с размером объёмом в 0800...8F00. Если надо чтобы ассемблер и дизассемблер работали на орловском или волковском мониторе, то подставьте вместо LHLD BEGTXT команду LXI HL,nnnn где nnn - это адрес буфера текста принятый для используемого Вами редактора текстов. Аналогично и с буфером трансляции, подставьте желаемый адрес.

Есть вопрос.

Имеется ли стандарт на расширение ОЗУ обычного СПЕЦИАЛИСТА за счёт цельно банковой коммутации, или быть может за счет сквозь-оконного доступа к излишнему ОЗУ в дополнительных банках? Вопрос потому, что я сделал конфиг для эмулятора B2M, с помощью которого, даже не притронувшись к паяльнику, я поимел на СПЕЦИАЛИСТЕ 16 мб ОЗУ. Вопрос только, как принято расширять ОЗУ в СПЕЦИАЛИСТЕ? Не хочу нарушать уже существующие стандарты, чтобы конвертированные для такой архитектуры программы могли работать и на реале.

Сам я уже имел цельно-банковую коммутацию в СПЕЦИАЛИСТЕ в 1990 году, когда заменил РУ5-тые на РУ7-мые (естественно пришлось перекинуть 2 адреса на мультиплексоре (точнее адрес А8), иначе РУ7-мые не регенерировались. Вначале я поставил две банки РУ5-тых в 2 этажа. Коммутация по /CAS, потому никаких лишних буферов АП16 не надо. Имеющиеся и так греются как печки, вторым этажом вторую АП16 нельзя припаять (перегреются). Так я имел 96 кб. А потом, в конце 1990, поставил и РУ7 и получил 48*4=192 кб.

В качестве порта управления банками я использовал F900. Во-первых, этот чип-селект уже имелся и был свободен. А во-вторых, этот порт совпадает с портом коммутации банок в ОРИОНЕ, отчего можно просто заимствовать программы (что я и делал, пока сам не перешёл на ОРИОН). Сейчас этот СПЕЦИАЛИСТ утрачен, - в начале 1991 года этот СПЕЦИАЛИСТ я конвертировал в ОРИОН, что было очень просто сделать - около 6-7 микросхем вторым этажом и на слепыше второй ППА для ROM-диска.

Поэтому адрес F900 самый удобный, а адрес F800 можно использовать для управления режимом экрана (например цвета и размера экрана). Кстати, размер экрана, при желании, можно увеличить до 13,14 или 16 кб. Чтобы не терять, а наоборот увеличить ОЗУ для программ, можно закрывать участок памяти 8000...BFFF куском ОЗУ из верхних 16-ти кб (или из доп.банки РУ6-тых, если всё ОЗУ на РУ3-тьих)). Я хотел это сделать когда то, но не успел.

Заметим, что увеличение экрана до 16 кб, вопреки ожиданиям, не тормозит вывод на экран, а наоборот ускоряет, т.к байтовые драйвера работают намного быстрее. Удивляюсь, отчего такой талантливый человек как А.Волков это не понял в 1985 году, когда писал ROM-BIOS СПЕЦИАЛИСТУ.

Установка РУ7-мых обходится всего в 2 ИМС - дополнительный КП2 для мультиплексора удобно напаивается на КП2 на плате, часть ног в параллель. И любой регистр для номера банки. Работа делается за полчаса. Думаю, что такие варианты расширения ОЗУ имели многие фанаты СПЕЦИАЛИСТА. Поэтому хотелось бы узнать подробности установившегося стандарта на расширение ОЗУ.

uart
29.03.2017, 15:47
barsik, а RAMDOS предполагал свой вариант или он существовал только в единственном экземпляре?

HardWareMan
29.03.2017, 15:55
Лучше использовать карту памяти расширения МХ (http://spetsialist-mx.ru/index18.html). Получится 60*256=15360КБ доп ОЗУ.
http://spetsialist-mx.ru/images/pages.png
Мой МХ2 так же ее использует.

barsik
29.03.2017, 16:22
barsik, а RAMDOS предполагал свой вариант или он существовал только в единственном экземпляре?

RAMDOS не была в единственном экземпляре. RAMDOS бесполезна без эл.дисков. Это я мог паять такие платы проводками (они были нужны для компьютерных классов на базе СПЕЦИАЛИСТА), но для неэнтузиастов нужны были печ.платы. Я это прекрасно понимал. Первая партия плат 256К выпущена зимой 89/90 тиражом всего 20 штук. Не скажу, что печатные платы RAM-дисков расходились как горячие пирожки, т.к всего пользователей СПЕЦИАЛИСТА в Ленинграде было не более 20 человек, хотя печ.платы ЭКСПРЕСС 1.5 года продавались в магазине "Электроника". Но к началу 1991 я продал все платы (одну, естественно, оставил себе).

Все эти платы использовались только с RAMDOS, т.к дисководы, до, примерно, лета 1991 были недоступны, как по дефицитности, так для новых флопов, и по цене. Поэтому мой первый дисковод был древний 5088 (новый) с улиткой и резиновым пассиком. Обошёлся в 1989 всего в 200 рублей (это даром, если 5305 стоил 500).

Оказалось, что эл.диски очень полезны программистам. Так В.Ивинских только благодаря RAMDOS смог адаптировать Manic-Miner от ZX для СПЕЦИАЛИСТА на КР580 всего за неделю. Так что к 1991, всего за год я продал все 20 плат, что значит, что у RAMDOS было 20 пользователей.

Следующая партия плат была весной 1991 и имела 512 кб. А 1995 была плата эл.диска в 1 мб. Но это уже другая история. Эти платы никогда не работали в RAMDOS, а только в CP/M и не на СПЕЦИАЛИСТЕ, а на ОРИОНЕ.

Оценивая теперь идею платы внешнего эл.диска, я считаю, что это была большая ошибка. Просто, когда разрабатывался эл.диск, ещё не были доступны РУ7-мые, отчего расширение ОЗУ СПЕЦ-ТА до 256К на банках РУ5-тых считалось громоздким.

А история самого эл.диска следующая. Когда я собрал РК86 и убедился, что он не может выводить графику, то был разочарован. Польза от компьютера для меня заключалась в том, чтобы иметь компьютерную программу для изучения иностранного языка (любительское программирование как хобби было ещё неизвестно). А т.к английский и немецкий, к тому времени я уже изучил, были актуальны буквы с аксантами и умляутами из французского языка.

Поэтому я спаял платку графического адаптера из журнала RFE 10.1987 (~30 корпусов), что давала монохромную графику 384*256. Но написать драйвер вывода для РК86 я не успел, т.к в феврале 1988 настроил свой первый СПЕЦИАЛИСТ (плата с 3-мя банками РУ3-их, прилагаю фото её отпилка, часть с ПЗУ и CPU отпилена). Естественно, для СПЕЦИАЛИСТА внешняя графическая плата с разрешением 384*256 не нужна.

Впоследствии, выяснилось, что плата граф.адаптера может работать как электронный диск на 64 кб. Получив на этом первый опыт, я смог разработать эл.диск, который изначально предназначался именно как эл.диск на 128 кб из двух банок РУ5-тых. В 1989 стали доступны и 565РУ7. Так что на готовые платы ставили уже их.

Но всё это слишком сложно. Гораздо выгоднее просто поставить РУ7 в СПЕЦИАЛИСТ. А я сдуру уже "вложился" в электронные диски. К тому же в 1989-м стали доступны 62256, так что по цене эл.диск на них обходился в ту же цену, что и на РУ7-мых. Но главное, такой диск был энерго независим и имел гораздо меньший размер. Я знал пользователей, которые имели такой RAM-диск. Вот это победительная идея! Впоследствии, я сделал RAM-диск из 62256 для РК86 и убедился, что это удобнее и грамотнее.

HardWareMan
29.03.2017, 16:28
barsik, а может быть остались схемы? Мы бы сделали реплику. Да и эмуляторы бы подтянулись. Время показывает, что железо легче всего создать или исправить. ПО исправлять никто не спешит. Поэтому, легче подогнать железо под ПО.

barsik
29.03.2017, 18:21
Время показывает, что железо легче всего создать или исправить. ПО исправлять никто не спешит. Поэтому, легче подогнать железо под ПО

В данном случае - всё наоборот.

Изготовить платы сложнее, чем перетранслировать имеющиеся исходники. Т.к речь идёт о ДОС, все программы для которой (сколь мало бы их не было) работают только функциями ДОС. Поэтому без разницы как физически устроен RAM-диск. Достаточно переписать в RAMDOS две подпрограммы (чтение и запись байта) и RAMDOS будет прекрасно работать с любым типом быстрого носителя.

Важен именно быстрый носитель, т.к в отличие от дискетных, это RAM OS и она не использует дефрагментацию файлов. Отчего при удалении файла все последующие файлы "схлопываются", сдвигаясь и закрывая собой пустое место. Это делается быстро, за счёт использования автоинкремента адреса и свопинга в ОЗУ. С дисководом так не сделать, дискета изотрётся и сдохнет за пару часов, да и долго переписывать гигантские блоки на дискете.

Кроме того, ради чего стараться? Из программ есть только две версии RAMDOS и два RAMDOS-COMMANDER-а, это что-то типа однопанельного МГ-нортона, который позволяет читать/писать с МГ и даёт сервис по работе с файлами (скоро это увидим, когда я сделаю RAMDOS для ОЗУ). Также в редактор SCREEN встроено чтение и запись целого файла. Можете сами посмотреть в листинге, - это всего пара строк на ассемблере: вызов функции "запись файла". Таким же простейшим способом можно любую программу сделать дисковой.

RAMDOS была актуальна для своего времени, когда не был доступен код CP/M и даже не было дисководных носителей, а работа с МГ была дико непродуктивной для программиста. Кстати слышал, что кто-то в 1994 адаптировал RAMDOS для ОРИОНА, используя его излишнее ОЗУ.

Но даже эл.диск, если он при выключении компьютера гибнет, - это полумера. А вот эл.диск на 62256 или w24512 - вот это вещь. Поставив резервное питание в виде пуговичной батарейки, имеем энергонезависимый эл.диск. Если для работы в RAMDOS всякий раз надо полчаса грузиться с магнитофона, а по окончании работы выгружать результаты на ленту, то тут это отпадает. А если на эл.диск падает утюг, или случайно задеть болтающийся на косе эл.диск, отчего тот коротнёт что-то на плате, то все результаты погибнут, что и случалось на практике часто.

Поэтому я считаю, что для всех 8-ми разрядок надо пропагандировать эл.диски на статике. У меня как раз "завалялось" 640 кб статики. Хочу сделать на них эл.диск для РК86. Ну а в СПЕЦИАЛИСТ надо ставить одну или 2 банки РУ7. Тогда и RAMDOS может пригодиться, хотя теперь я могу поставить на эл.диск и более лучшие ДОС.

fifan
29.03.2017, 18:33
Фотки Специалиста Экспресс и доработки хорошие, но к сожалению изображение размыто. А то б поместил бы на свой сайт - такую красоту нужно помнить.

HardWareMan
29.03.2017, 19:54
barsik, я делал свой вариант МХа ЛУТом, там было 512К ЭД (8шт 64КБ статики). Фотки сплыли, лет 10 назад было, а по новой сфотать не ранее выходных. Использовать DRAM в ЭД с внешним интерфейсом через ВВ55 это круто, прям по букварю "Микросхемы памяти и их применение" от Лебедева.О.Н.

- - - Добавлено - - -

fifan, данные фотки уже пролетали тут, в дискуссии про Орион, вроде. В качестве образца хэндмэйда да, пособие отличное.

fifan
29.03.2017, 20:44
Фотки сплыли, лет 10 назад было, а по новой сфотать не ранее выходных.
Если эта фотка - то я сохранил.

barsik
30.03.2017, 00:55
Использовать DRAM в ЭД с внешним интерфейсом через ВВ55 это круто, прям по букварю

ВВ55 оказалось лучшим решением, т.к позволило нагружать шину только одним н-МОП входом и сократить число корпусов. В любом случае нужны регистры для хранения адресов и управляющих сигналов. А т.к в СПЕЦИАЛИСТЕ шина не буферизовано, длинная соединительная коса вносит паразитную ёмкость и при повышении скорости шины до 2.5 МГЦ это стало очень важно. И кстати, в первых вариантах ВВ55 не было, из-за чего были проблемы с перегрузкой шины.

Электронный диск на статике делается также, только без узла регенерации. Расход деталей (не считая ОЗУ + ИД7) - ВВ55 и ИР22. Порт А - для передачи данных туда-сюда. Через порт В сначала защелкивается старший байт адреса в ИР22 по стробу PC4. Затем в порт B засылается младший байт адреса, а на PC0...PC3 хранятся адреса A16...A19, что даёт адресацию до 1 мб. Затем сигналами PC5...PC6, что формируют /CS, /WR и WR_Enable записывается байт. Далее адрес увеличивается командой INC (HL), адресуемой в порт B, и читается/пишется следующий байт. Изменять старшие адреса в ИР22 приходится только при переходе адреса через границу в 256 байт. Таким образом чтение происходит быстро. Конечно наличие цепочки счётчиков позволяет автоинкремент адреса (поэтому в RAM-диске стоялло 5 ИЕ7), отчего скорость обмена ещё выше. Но простота схемы важнее скорости. ВВ55 без WAIT работает на такте до 6 МГЦ, если только не писать в неё словом (командой LD (port),HL) и не делать с её портами INC (HL).

HardWareMan
30.03.2017, 07:23
Если эта фотка - то я сохранил.
Да, это одна из них. Именно про него я и говорил.

- - - Добавлено - - -

barsik, в противовес я бы предложил поставить 245 буфер, например. Но если есть ВВ55 то почему бы и нет? А методику подключения большого ОЗУ и/или ПЗУ мы уже обкатали.
http://savepic.ru/13374402m.jpg (http://savepic.ru/13374402.jpg)
http://savepic.ru/13430725m.jpg (http://savepic.ru/13430725.jpg)
4 5ти вольтовых 512КБайт флешки (2МБайта) с возможностью записи. Подключается ко второму ППА. Запоминается средний байт адреса (A[15:8]), так же как и у вас. Детали проекта где-то у fifan'а.

Pyk
30.03.2017, 10:56
Не следил за обсуждением с самого начала, так что подключаюсь к обсуждению только сейчас.
Во-первых, спасибо за интересные материалы, ну и несколько комментариев.


Сначала попробовал эмулятор EMU80 V4.0. И тут обнаружилось, что файлы в формате ORD этот эмулятор СПЕЦИАЛИСТА не грузит. Это безобразие, ведь формат ORD - это универсальный формат для 8-ми разрядок, непривязанный к формату на ленте и позволяющий иметь все параметры блока - имя, адреса и контрольную сумму. Поиски в дистрибутивах конвертора ORD в RKS результата тоже не дали.
Я никогда не работал с реальным Специалистом, даже не думал, что для него может понадобиться орионовский формат ORD. Какой софт для Специалиста использовал ORD? В каком виде сделать нужно его загрузку в эмуляторе?



в эмуляторе EMU80, если я правильно понял, вообще не поддерживается формат загрузки по сбросу
В эмуляторе по умолчанию для удобства подключен патченый Монитор, в котором заблокирована загрузка по сбросу. Если подключить оригинальный, то загрузка rk(s)-файлов по сбросу будет доступна. Но тогда для выхода в Монитор каждый раз после сброса придется нажимать функциональную клавишу для прерывания попытки загрузки. С другими Мониторами, надеюсь, тоже будет работать, нужно только при необходимости поправить адреса перехвата процедур работы с магнитофоном (адрес ret в emu80 не нужен, только адрес начала).


стати, конфига и эмулятора СПЕЦИАЛИСТА в варианте КООП SP-580 тоже не нашёл,
Пока вообще ничего про этот вариант знаю, не видел даже в эмуляторах. Буду благодарен, если подскажете ресурсы, где можно узнать поподробнее про SP-580.



впечатляет, что возможен ввод из WAV-файла, как из магнитофона. Это очень крутое свойство и в эмуляторе EMU80 его явно не хватает.
Будет. Чуть позже - когда руки дойдут.

- - - Добавлено - - -


Я имею одну идею как сохранить их так, чтобы это был не тупой WAV, но который мог бы быть восстановлен в случае необходимости. Но для работы мне нужны записи. И это не TAP/TZX, т.к. те заточены под Спектрум.

нужно для эмуляторов РК-шек приспособить расово верный .tzx

Напрямую непойдёт, другой формат бита и байта. Но можно сделать свой, "по мотивам". А расширение, например, .TRK

Очень интересная тема, тоже давно уже думаю об этом.
В принципе, можно и TZX использовать с ID блока, кажется, 15 - direct recording. Но TZX все-таки больше спектрумовский, некрасиво это. Можно создать свой. Или, быть может, уже существуют какие-то подобные форматы для замены WAV? В общем, хотелось бы обсудить...

uart
30.03.2017, 12:27
Буду благодарен, если подскажете ресурсы, где можно узнать поподробнее про SP-580.
http://www.spetsialist-mx.ru/schemes/SP580.png
http://www.spetsialist-mx.ru/Soft/SP580.rar

barsik
30.03.2017, 13:23
Привожу описание эл.диска из документации для ACP/M 1.55E ОРИОНА. Это версия ДОС позволяющая обходиться без дисковода. С МГ-ленты грузится файл, он автоматически стартует, форматирует эл.диск и записывает на него программу обмена с МГ и выходит в CP/M 60К. Здесь вся необходимая программисту информация. Вообще-то это текст из письма пользователю ACP/M 1.55E, но использовался как ДОК к эл.диску (потому сохранился).



............... ЭЛЕКТРОННЫЙ ДИСК, УСТРОЙСТВО И ИСПОЛЬЗОВАНИЕ

Электронный диск представляет собой узел регенерации ОЗУ типа 565РУ7 и интерфейсную БИС типа 580ВВ55 для связи с центральным компьютером. Плата обладает своим задающим генератором и все сигналы для своей работы вырабатывает сама. Тем самым плата полностью независит от основного компьютера, что позволяет выключать его питание, без потери информации на диске. Потребление при отсутствии обращений к диску не превышает 300 мА (на 555, при 155 серии намного больше). При наличии буферной ёмкости в 50.000 МКФ не страшны провалы питания до 2 секунд.

На плате эл.диска установлены две банки ОЗУ 565РУ7 и ещё две банки могут быть напаяны сверху (методос "PACK-UP), позволяя иметь в максимуме 1 мбайт. Также на плате располагается панелька под ПЗУ 27127/27256 (16/32 кб). Кроме такой платы варианта 1990 года, была выпущена партия плат 1989 года, без ПЗУ и с всего одной банкой РУ7.

Данная конструкция разрабатывалась для СПЕЦИАЛИСТА , где во-первых нет излишних портов (как на ОРИОНЕ) и не буферизованы шины процессора. Поэтому весь интерфейс осуществляется через одну единственную ППА 580ВВ55, нагружая шину (D0-D7, A0,A1) нагрузкой всего одного входа порта. На СПЕЦИАЛИСТЕ с тактом 2.0 МГЦ допускается длина соединительного кабеля до 35 см, без ухудшения надёжности. На СПЕЦИАЛИСТЕ с тактом 2.5 или 2.75 МГЦ длина кабеля не должна превышать 15 см, причём в случае применения ИМС 155-й серии и большого количества ПЗУ РФ2 (более 3-х) шина будет перегружена и нельзя будет одновременно подключить контроллер НГМД.

Рекомендуется установка 580ВК28, благодаря чему удаётся поднять такт на 580-м процессоре (!) до 3.75 МГЦ и даже 4.0 МГЦ (это достигается за счёт ВК28, а также понижения питания КР580 до 4.75 В, - только процессора, питание ОЗУ: >= 5.0 В). Длину кабеля при ВК28 можно сделать 35 см. При применении в СПЕЦИАЛИСТЕ Z80 проблем с перегрузкой шин не наблюдалось до частоты 4.25 МГЦ. Что касается ОРИОНА, то здесь проблем подключения меньше - у некоторых работает уже несколько месяцев и на такте 5.0 МГЦ.

Исходя из вышеизложенного, рекомендуется применять в СПЕЦИАЛИСТЕ Z80 с большей мощностью выходов, а именно 'GOLDSTAR' с буквой А. Можно также - GOLDSTAR-B или даже SHARP с любой буквой, что конечно решает все проблемы с перегрузкой шин, но глупо из-за их печкообразности. На ОРИОНЕ наоборот, целесообразно применять Z80 с хилыми выходами: ZILOG, TOMPSON, NEC, MME, TOSHIBA или их КМОП-варианты (8C0004) или даже SU880 (10 мА), т.к процессор в ОРИОНЕ буферизован.

Для интерфейса с компьютером используются следующие сигналы системной магистрали:

D0-D7 ... шина данных
A0,A1 ... шина адреса
/WR ..... запись (в память, т.е /MEMW)
/RD ...... чтение (/MEMR)
/CS ...... чип-селект (СПЕЦИАЛИСТ - FD00, ОРИОН - F780)
RESET .. сброс (прямой не инверсный)
GND ..... GROUND, системная земля.

Всего в кабеле 15 проводков МГТФ-0.03 (для земли лучше провод потолще).

Принцип работы: Для адресации в 512К требуется 19 адресов A0...A18. Для хранения этого адреса на плате имеются 3 регистра: младшего байта адреса (N байта в секторе), старшего байта адреса (N сектора в банке), и регистр хранящий адреса A16...A18 (N банки). Эти регистры непрерывно сохраняют этот текущий адрес (даже после сброса), - тем самым процессор может читать или писать данные из этой ячейки диска. Первые два из этих регистров 8-ми разрядные, выполнены на счётчиках с переносом 155ИЕ7.

С помощью сигнала с выхода PC3 ППА формируется так называемый строб инкремента адреса, от которого счётчики увеличивают свое состояние на 1. Таким образом при чтении/записи в пределах 64-х кбайт (одной условной банки) существует возможность не устанавливать при обращении к последующей ячейке новый адрес. Достаточно выдать строб инкремента и читать/писать далее.

Установка старшего и младшего байта адреса (А0-А15), т.е запись в эти счётчики также осуществляется стробами адреса: старшего (PC5) и младшего (PC4). Что касается адресов A16...A18, то они формируются по разному для вариантов 256/512К и для варианта 1 мбайт, а именно: в варианте 1 мбайт также используется регистр на ИЕ7 и строб для его записи (PC6). В вариантах же диска 1989 и 1990 годов на 256 и 512К эти адреса формируются непосредственно портом (это позволяет с'экономить одну ИЕ7). Т.е в твоей плате адресам A16...A18 соответствуют выходы PC0...PC2.

Все данные вводятся в диск через порт A, а считываются через порт B БИС ВВ55. Выходы порта C формируют управляющие сигналы. Таким образом назначание портов и разрядов такое:

PA0-PA7 - данные для ввода в диск (ВВ55 - на вывод)
PB0-PB7 - данные с диска (ВВ55 всегда на ввод)

Порт 'C' программируется на вывод и управляется поразрядно:

PC0-PC2 - это адреса A16...A18
PC3 - строб инкремента адреса
PC4 - строб записи младших 8-ми разрядов адреса (A0-A7)
PC5 - строб записи старших 8-ми разрядов адреса (A8-A15)
PC6 - блокировка записи диска 256К и сигнал ROM/RAM в дисках 512К (с ПЗУ 27256)
PC7 - строб записи в ячейку

Сигналы стробов должны быть постоянно в 1. При формировании строба на эти выходы выводится на короткое время 0, затем возврат в 1. Запись осуществляется по уровню, т.е если держать стробы =0 и менять данные в порту A, то в регистрах будет то же, что на выходах порта A. Если адреса равны, то стробы можно выдавать одновременно (т.е установить адреса A0-A18=0 и записать в эту ячейку 0, - можно всего одной командой STA PORTC,040H). Строб инкремента (PC3) работает по переднему фронту.

Рассмотрим работу с диском. Для записи надо:

1. Вывести в порт A адреса A0-A7
2. Выдать строб PC4
3. Вывести в порт A адреса A8-A15
4. Выдать строб PC5
5. Вывести в разрядах PC0-PC2 адреса A16-A18
6. Вывести в порт A подлежащие записи данные
7. Выдать строб записи

При этом, если сигнал ROM/RAM (или защита от записи) был равен 1, то данные будут записаны. Если надо записывать в следующую ячейку, то пункты 1-5 не выполняются, а выдаётся строб инкремента.

Для чтения надо:

1-5. Установить адреса (как при записи, см.выше)
6. Просто считать с порта B данные

Далее можно выдать строб инкремента и считать следующий байт и т.д. Для диска 256К значение разряда PC6 не важно - это просто блокировка и защита от записи, на чтение не влияет. В диске 512К значение сигнала на выходе PC6 определяет считывается ROM или RAM. При PC6=0 считывается ПЗУ 27256, при PC6=1 считывается ячейка RAM-диска. Естественно этот сигнал выполняет и старую вункцию, т.к записать в ROM нельзя.

Пара слов о программах для RAM-диска. Немного истории. Первый RAM-диск появился в конце 1988 и имел всего 64К. В 1989 использовались эл.диски на 128К (уже именно такой конструкции, с ППА в качестве интерфейса). В конце 1989 удалось изготовить партию печ.плат на 128/256К.

Первую простую файловую систему написал А.Кузнецов. RAMDOS версии 1.0 была написана легендарным программистом В.Ивинских в конце 1989. Также был доработан для работы с файлами его редактор SCREEN и уже в начале 1990 была сделана первая версия программы RAMDOS-COMMANDER. Летом 1990 В.Ивинских доработал RAMDOS до версии 1.4 и коммандер версии 1.3, ставшие классикой программирования для КР580. И вскоре, пользуясь RAMDOS, В.Ивинских адаптировал для СПЕЦИАЛИСТА MANIC-MINER от Синклера, работу которую без эл.диска сделать было бы невозможно. В дальнейшем В.Ивинских в конце 1990 разработал новую версию RAMDOS-COMMANDER, использовав специально написанный им графический интерфейс с открывающимися окнами (получить представление о нём можно посмотрев ROM-WRITER В.Ивинских, есть его и ОРИОН-версия).

К несчастью, наступили времена дисководов. Осенью 1990 уже 5 пользователей СПЕЦИАЛИСТ-а имели CP/M, хотя платы КНГМД были выпущены только в конце 1990 года (потому достались уже орионщикам). Несмотря на это, эл.диски нашли отличное применение и в среде CP/M, т.к до появления первых программ копирования на одном НГМД (А.Новгородов 08.1991) эл.диск был единственным способом скопировать файл размером более TPA (36К).

Для RAMDOS, из-за полного упадка СПЕЦИАЛИСТА, ухода в начале 1991 В.Ивинских в профессиональные программисты, и появления CP/M, - ничего серьёзного создано не было. К 1992 "спецов" осталось ~5 человек и они не пишут сами (чисто пользователи). Можно упомянуть форт-систему работающую с файлами RAMDOS, граф редактор Е.Якубовского V4.0, DISK DOCTOR Максима Белова и мои программки TX_FORM (делает 2 колонки по 48/60 символов с выравниванием краёв для печати текстов мелкошрифтом), FILE MANAGER и SPRITE_EDITOR. Хотя планируется адаптировать ассемблер Z80 А.Балдина для ОРИОНА для RAMDOS (его орионовские ассемблеры для КР580 и Z80 позволяют, при наличии в ОРИОНЕ 256К, транслировать программы с объёмом исходника до 180К за счёт использования INCLUDE). К сожалению, владельцы ОРИОНА используют эл.диски исключительно для CP/M, не имея никакого представления о RAMDOS.

На мой взгляд, наличие эл.диска обьёмом в 512К и турбо-среды программирования на ассемблере (прошитой в ПЗУ ЭД) для программиста полезнее, чем наличие CP/M и КНГМД. В турбо-среде переход между программами (редактор-ассемблер-отладчик) осуществляется мгновенно (загрузка 32К - 0.3 сек).

Сравните, в RAMDOS, закончив редактирование программы, - хлоп на кнопку - и Вы в ассемблере и уже идёт ассемблирование, через 30 секунд (тест в 36 кб) - готово, хлоп по кнопке - программа загружена в рабочие адреса, текст программы записан в файл и Вы в отладчике, можете начинать прогон или отладку.

А как то же делается в CP/M? В редакторе, закончив редактирование, записываете файл на диск. Запускаете ассемблер, ждёте (лязг дисковода 10 минут), и если дискета не сдохнет (что бывает часто с дискетами ИЗОТ и ГМД), то вскоре выясняется, что в тексте куча ошибок. Опять загружаете редактор (каждый раз пишете имя редактора, затем имя файла). Редактирует и снова трранслируете. Если наконец ошибок нет, загружаете компоновщик, - опять 10 минут износа дискет и головок и... бац. Готово. Теперь с помощью программы LOAD делаете из HEX-файла COM-файл. Затем запускаете ZSID3, командой R загружаете Ваш файл и, наконец, начинаете отладку и... - конечно ничего не работает. В злобе Вы вырываете последние волосы с головы... Надо снова запускать редактор и загружать исходник на редактирование. Но прошло 25 минут и Вы уже забыли, какие изменения Вы делали в тексте и потеряли нить Вашей программистской мысли.

Писать программы, когда на один цикл изменения и проверки уходит пол-минуты, или когда на то же самое тратится пол-часа? Мы выбираем первое, даже если в RAMDOS ассемблере нет макро-команд, отладчик сильно уступает ZSID3 или ZBUG, а редактор не имеет команд работы с блоками. Всё это искупается скоростью работы и отсутствием потерь времени. Именно так можно работать с RAM-диском, а не для копирования файлов при одном НГМД.

Кстати, подобную среду турбо-ассемблирования можно иметь и на ОРИОНЕ, если адаптировать RAMDOS для внутреннего эл.диска ОРИОНА из излишнего ОЗУ. На Вашу кассету я записал Вам базовые подпрограммы чтения и записи байта и сектора, а также ещё несколько полезных подпрограмм для работы с диском на физическом уровне (выдранные из RAMDOS В.Ивинских). Если необходимо могу прислать Вам исходники RAMDOS, для её конверсии на ОРИОН. Что сделать совсем просто. Но вот конвертировать программы RAMDOS, сделанные под железо СПЕЦИАЛИСТА - так просто не получится. Версия CP/M 1.55E поддерживает, кроме эл.диска и дисковод. Потому рекомендую Вам купить плату КНГМД для ОРИОНА.

(c) barsik. Текст написан, предположительно, в середине 1992.
.



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

А разве формат ORD Вы где-то поддерживаете? В эмуляторе ОРИОНА формат ORD только на дискетах.

Я предпочёл бы, чтобы формат ORD читался бы как основной TAPE-формат данного компьютера. Это избавит меня и всех остальных пользователей эмулятора от необходимости вручную заносить адреса, считать КС блоков и подставлять их в TAPE-файл (GAM, RKS, RKA, RKP, RKO, RKR). А файл ORD остаётся пригодным и для дисководной версии, отчего число копий файла в разных форматах не плодится.

Формат ORD лишь изначально был орионовским в 1991, когда его впервые стали использовать на дисководах. Но ОРИОН не единственный компьютер, у которого адреса старта файлов произвольные, а не ровно 100H. Вместо того чтобы "разводить" море разных форматов для разных компьютеров удобно использовать один единственный формат ORD, что я и делаю. У меня на винте все файлы разных компьютеров - в формате ORD.

Любая команда загрузки с ленты должна понимать формат принятый на данном компьютере, а также формат ORD. Поэтому, если в эмуляторе СПЕЦИАЛИСТА при загрузке по I выбрать ORD-файл, он тоже должен загрузиться и стартануть, как RKS файл с именем. Эмулятор должен сам конвертировать файл ORD в формат RKS. Тогда мне не придётся это делать вручную. Т.е по умолчанию, ORD формат должен соответствовать формату с именем принятому на данном компьютере, а если такого формата нет, как например для РК86, то естественно, единственному формату, что принят для РК86. Тогда мне не придётся вручную считать КС блоков и подставлять их в GAM-файл.

Кстати, какое расширение имеют файлы СПЕЦИАЛИСТА в формате без имени? Т.е те файлы, что грузятся по сбросу (это файлы созданные древним волковским монитором и те, что используются командами R/W орловского монитора). Такой формат тоже должен быть. Т.к, если я по сбросу попытаюсь загрузить файл в формате RKS (т.е с именем), то будет улёт. Если особого имени ещё нет, то для таких файлов в имени можно вставлять слово (auto), что значит, что это программа и она грузится по сбросу.

Как я понимаю, загрузка TAPE-файлов работает так:

При первом (за 5 секунд) обращении к RDBYTE запрашивается имя и открывается файл. Затем по каждому вызову RDBYTE из открытого файла читается очередной байт, пока файл не кончится или пока после последнего обращения к RDBYTE не пройдёт 5 секунд. Тогда файл закрывается. Потому если за 5 секунд запустить новую загрузку, то происходит чтение из конца открытого файла (когда размер файла не точно равен размеру блока указанному в заголовке).

Как поведёт себя эмулятор в такой ситуации? ROM-BIOS загрузив блок по сбросу, запускает его. Этот блок включает другой формат МГ-ленты, двухчастотку и начинает загрузку второго блока, записанного в реале в формате MSX. По первому же вызову RDBYTE мы попадём уже на другую точку отлова (для формата MSX). Что произойдёт? Эмулятор будет продолжать чтение из открытого файла, или запросит имя нового файла (файла второго блока идущего в другом формате записи)? Правильно читать из первого файла.

PS. Раз уж зашла речь о формате ORD, то очень неудобно реализовано в трёх эмуляторах ОРИОНА использование ROM-диска и квазидисков ORDOS.

Требуется с помощью хитроумных ухищрений вручную формировать ROM/RAM диски (а также дискеты), что крайне неудобно и неоперативно. В моём эмуляторе ОРИОНА это сделано удобнее. Файлы с расширением ORD автоматически грузятся из каталогов ORDOS.A, ORDOS.B, ORDOS.C, ORDOS.D (и точно также формируется и "дискета" - все файлы автоматически перегружаются туда из каталога FILES.DOS). Поэтому легко набить все 4 квазидиска ORDOS-файлами и менять набор файлов в квазидисках оперативно.

Кстати, у Вас и оперативной замены ПЗУ ROM-BIOS без разрушения ОЗУ тоже нет. Это неудобно.


В эмуляторе по умолчанию патченый Монитор, в котором заблокирована загрузка по сбросу. Если подключить оригинальный, то загрузка RKS-файлов по сбросу будет доступна

Это хорошая новость, т.к плохо переношу стандартные мониторы.


Если поставить оригинальный монитор, то тогда для выхода в Монитор каждый раз после сброса придется нажимать функциональную клавишу для прерывания попытки загрузки по сбросу

Но так и должно быть. Так и есть на реальном СПЕЦИАЛИСТЕ. Хотя есть мониторы, которые сами (без нажатия клавиш) выходят на C800, если нет сигнала.


С другими Мониторами, надеюсь, тоже будет работать, нужно только при необходимости поправить адреса перехвата процедур работы с магнитофоном (адрес возврата из подпрограмм RDBYTE/WRBYTE в EMU80 не нужен, только адрес начала)

То, что адрес возврата не нужен это хорошо, т.к адрес входа у меня один C377 (это же стандартный вход), а выходы меняются в зависимости от формата. Получается, что эмулятор B2M удобно использовать для WAV-файлов а EMU80 для обычных RKS файлов.



впечатляет, что возможен ввод из WAV-файла, как из магнитофона... этого свойства в эмуляторе EMU80 явно не хватает
Будет. Чуть позже.

При этом нельзя ли сделать так, чтобы я видел WAV-файл при работе магнитофона. Не имя файла (хотя имя тоже надо видеть), а картинку его частотно-временной диаграммы (или осцилограммы на медленной развертке), также как это выглядит в программе "Звукозапись" Windows. Можно в отдельном окне отображать картинку стилизованного аудио магнитофона, как это делают в программах проигрывателях MP3 и WAV. Можно отображать счётчик ленты и в отдельном окне, как 'Play list' в проигрывателях список файлов данной кассеты. Тогда вообще всё будет выглядеть близко к реалу.

И кстати, в реальном магнитофоне есть клавиша ПАУЗА. И иметь её и в эмуляторе не помешает. Например, у меня есть блоки WAV-файлов (неизвестно что). Так вот, чтобы не пришлось нарезать большой файл на фрагменты (а как это сделать, если идёт многоблочная загрузка, отчего не ясно, - это новый файл или блок от предыдущей многоблочной программы). Тогда и нужна пауза. Считал WAV файл в ОЗУ, нажал на паузу, выгрузил считанный файл в обычном виде (в смысле байтами, не звуками), а затем снова запустил команду ввода и "отпустил" клавишу ПАУЗА для считки очередного файла.

barsik
27.12.2017, 18:34
В связи с попытками доработать эмуляторы СПЕЦИАЛИСТА для верной работы с магнитофоном полезно почитать эту древнюю инструкцию для программистов для СПЕЦИАЛИСТА. Здесь есть информация и про копировщик программ СПЕЦИАЛИСТА.


КАК ДЕЛАТЬ ПРОГРАММЫ С АВТОМАТИЧЕСКОЙ ЗАГРУЗКОЙ
===============================================

Все видели, как красиво загружаются с магнитофона игровые программы ZX-Spectrum. Программы СПЕЦИАЛИСТА могут загружаться также эффектно, тем более, что в СПЕЦИАЛИСТЕ загрузка осуществляется сразу по сбросу, т.е нет необходимости набора команды с клавиатуры: запустил магнитофон нажал на кнопку и любуйся эффектами загрузки. Весьма эффектна загрузка заставки прямо в экран, бегущий счетчик, отсчитывающий время до конца загрузки, двигающиеся спрайты и блоки, вывод текста описания игры во время ее загрузки с ленты и другие подобные эффекты.

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

Данная статья предназначена для начинающих программистов для СПЕЦИАЛИСТА и предполагает то, что читатель уже знает все стандартные подпрограммы ROM-BIOS-а СПЕЦИАЛИСТА. Кроме того необходимо заметить, что эта статья относится только к настоящему СПЕЦИАЛИСТУ, т.е к СПЕЦИАЛИСТУ в базовой стандартной версии. А именно, - аппаратура соответствует 48-ми кило байтной версии (МК,1987,N2), ПЗУ - загрузчик А.Волкова (MK,05.1987) или любой другой полностью совместимый ROM-BIOS (напр: ленинградский МОНИТОР любой версии). Версии аппаратуры и программ КООП SP580, Л.Афанасьева, МП "КОЛЕД" и других, совместимы не 100% и имеют другие "стандартные" подпрограммы.

Для начала вспомним, что происходит при работе загрузчика.

Сразу после нажатия на кнопку СБРОС волковский загрузчик сразу вылетает на адрес C444. Здесь осуществляется инициализация системных переменных BIOS (и МОНИТОРА в версии ПЗУ Ленинград-89). Для этого вызывается стандартная подпрограмма пересылки блока: C42D- переброска блока (HL)...(DE) -> (BC). Далее п/п-ма C438 (MSSG) выводит на экран код очистки экрана и сообщение: "PROGRAMM ?" (в ленинградском мониторе выводится надпись "ЛЕНИНГРАД-1989"), и вот здесь начинается самое интересное.

Запускается п/п-мма C3F9. Смысл её работы в следующем. Сначала на ленте ищется синхробайт Е6. Пока он не найден или нет сигнала, эта п/п-ма крутится на одном месте. Как только синхробайт пойман, то вводятся 4 последующих байта. Два первых определяют с какого адреса загружать вводимый блок в ОЗУ (адрес начала блока), 2 следующих - адрес конца блока в ОЗУ. После этого п/п-ма C3F9 вводит блок и заносит его в ОЗУ по заданным адресам. Ввод заканчивается при заполнении последней ячейки. Адрес начала блока заносится в ячейку 8FE3 (ASTART). И на этом работа п/п-мы C3F9 заканчивается.

Далее загрузчик с помощью команды PCHL передает управление введенной программе (по адресу начала блока). Никакого контроля на правильность ввода не осуществляется. Таким образом блок грузящийся по сбросу имеет вид:

- цепочка нулевых-байт (пилотон),
- синхробайт Е6,
- нач.адрес блока (мл.байт, старший байт),
- конечный адрес блока (мл.б,ст.б)
- и сам блок.

В таком формате работал монитор Волкова (монитор-1985, загружаемый на 8D00). Этот МОНИТОР уже не используется на СПЕЦИАЛИСТАХ и все пользователи с сентября 1988 года используют только орловский МОНИТОР (обычно в комплекте со зверковским загрузчиком МК,04.1989) или гораздо более совершенный ленинградский монитор разработанный В.Ивинских.

Эти мониторы имеют директивы R/W работающие в таком-же формате, за исключением того, что сразу-же за блоком следует контр.сумма: сразу-же, а не как в "уродском" формате РК-86, где "К.С" идет только после дополнительной цепочки нулей и еще одного синхробайта Е6 (кроме того в РК-86 "перепутаны" адреса блока, т.е у них сначала идёт старший, потом младший байты адреса). Кроме директив R/W МОНИТОР имеет директивы I/O - формат с именем файла (имя до 17 символов, запрашивается). Запись имеет следующий вид:

- пилотон (256 нулевых байтов)
- синхробайт E6
- 3 байта D9
- имя файла (до 17 символов считая и завершающий 0)
- длинный пилотон (768 нулевых байтов)
- синхробайт Е6
- нач.адр
- кон.адр
- сам файл
- контрольная сумма.

Т.е по сути к волковскому формату добавлен только заголовок со своим пилотоном. Формат RAMDOS-Commander-а полностью совместим с таким форматом, т.к дополнительные параметры файла (CSUM, SCODE, WBYTE, ADRAM) передаются вслед за именем файла до начала второго пилотона, потому игнорируются орловским монитором.

Это теория. Как же делаются многоблочные автоматически загружающиеся программы? Идея заключается в том, что сначала загружается маленькая программка, для раскрутки. Она может грузиться по сбросу или перехватывать управление при работе директив ввода - R/I/Y/Z. После загрузки этой программки, ей передается управление, а дальше она уже делает, что хочет.

Первый пример. Пусть по сбросу загружается следующая программа:



.
ORG 0
LXI H,TXT1 ; HL-адрес текста
CALL 0C438H ; выводим текст (C818)
CALL 0C3F9H ; вводим новый блок
LHLD 8FE3H ; и передаем
PCHL ; ему управление
TXT1: DB 1FH,'ПРИВЕТ !'
DB 0DH,0AH,0

Эта программа очистит экран, напишет "ПРИВЕТ !" и будет вводить новый блок, а потом его запустит на исполнение. Пусть второй блок будет такой:



.
ORG 1000H
LXI H,TXT2
CALL 0C438H ; вывод TXT2
JMP 0C800H ; выход в монитор
TXT2: DB 'КОНЕЦ ВВОДА',0

После загрузки этого второго блока будет выдано сообщение TXT2 и "выйдем" в монитор. Такой ввод возможен только в разные адреса, ведь после ввода второго блока еще продолжает работать первый блок. Однако в BIOS имеется п/программа C453, которая вводит и автоматически запускает на исполнение введенный блок. Если использовать эту подпрограмму, то второй блок можно грузить прямо на место расположения первого (если первый блок уже не нужен).

Это всё для блоков загружаемых по "указанным" адресам. Но BIOS СПЕЦИАЛИСТА позволяет загружать блоки и по адресам, задаваемым программой. Тогда на ленте должны отсутствовать начальный и конечный адреса загрузки блока. Итак C422 - п/п-ма, которая загружает блок по "произвольным" адресам. Ей надо указать, куда загружать блок в регистрах HL,DE. Вот пример. 1-й блок:



.
LXI H,TXT1
CALL 0C438H ; вывод сообщения
LXI H,1000H ; указываем начальный и
LXI D,17FFH ; конечный адреса
CALL 0C422H ; вводим блок в 2 кбайта
JMP 1000H ; и запускаем

Таким образом BIOS СПЕЦИАЛИСТА предоставляет 4 стандартные подпрограммы ввода блока. Они описаны во всей литературе по СПЕЦИАЛИСТУ и должны безусловно поддерживаться на всех его клонах:



.
C3F9 - ввод блока с поиском синхробайта, адреса
начала и конца блока указаны на ленте

C422 - ввод блока с поиском синхробайта, адреса
начала и конца блока заданы в HL и DE

C414 - то же самое, но без поиска синхробайта,
позволяет иметь синхробайт не равный E6

C453 - ввод блока с поиском синхробайта и авто-
матическим запуском блока на исполнение

Как видите, благодаря наличию этих удобных п/п-рамм и процедуры загрузки по сбросу делать автоматически загружаемые программы для СПЕЦИАЛИСТА совсем не сложно. Однако теперь теперь перед программистом возникает задача - а как же записать на ленту блоки один за другим, да еще в некоторых не указывать адреса загрузки, а в других указывать. Также встает задача последующего копирования блочных программ. Обе эти задачи были блестяще решены еще в 1988 году программистом В.Ивинских.

Записывать блоки на ленту можно используя совсем ранние версии ленинградского МОНИТОРА (до 2.7), в которых возможности директив работы с лентой существенно расширены (можно вводить/выводить блоки в указанных выше форматах).

Тем не менее, специально для создания и копирования многоблочных программ В.Ивинских в конце 1988 года разработал две программы: компоновщик и копировщик SP-COPY. Эти программы предназначены для работы с блоками в одном стандартном двухфазном формате записи на ленту. Поэтому многие пользователи столкнувшись с тем, что копировщик не позволил им скопировать защищенные форматом записи блочные программы СПЕЦИАЛИСТА, напрасно ругали программу копировщик SP-COPY.

Рассмотрим назначение программы компоновщик. Эта программа позволяет загрузить в ОЗУ компьютера с ленты заранее подготовленные блоки, причем все они должны быть в стандартном формате монитора (с именем по директиве "О"). При вводе компоновщик запоминает параметры введенных блоков: адреса, длины пилотонов, имена, константы ввода. Далее можно, установив требуемые параметры вывода, вновь вывести эти блоки на ленту и получить готовую многоблочную программу. Отличительная особенность компоновщика - автоматическое определение константы чтения (для владельцев ленинградского монитора это не особенность, ибо в нем настройка на скорость осуществляется при работе всех директив ввода, в том числе и ZX !).

После запуска компоновщика внизу экрана появляется главное меню программы. Выбранный режим отображается путем "инверсии". В начале надо запустить режим LOAD (нажатием <ВК>) и ввести все заранее подготовленные блоки. Вводимые блоки укладываются в ОЗУ один за другим (до 8000H), а на экране в виде таблицы отображается информация о введенных блоках. Когда введены все блоки, выходят в меню нажатием <СТР>. Режим EDIT позволяет корректировать длину цепочки нулевых байтов перед блоком при записи на ленту: миним.длина соответствует 01, максим. - 09 и выбирается нажатием на соотвующую цифровую клавишу. Каждая единица дает 85 нулевых байтов (поэтому 03 - стандартная длина 256). Далее нажатием <+> и <-> можно определить выводить адреса начала и конца блока или нет. Клавишами управления курсором влево и вправо можно задать константу записи (25-99). В режиме DELETE можно удалить самый последний введенный блок, нажав на <ПС> (а не <ВК>!), и так можно удалить все блоки (тут надо осторожнее). Режим SAVE. Тут все просто - <ВК> и на ленту пошли блоки один за другим в заданных форматах и с нужными скоростями. EXIT - это выход в МОНИТОР по адресу C800.

Теперь о копировщике SP-COPY. В.Ивинских сделал его множество версий. Наибольшее распространение получили версии 1.3/4 и версии 2.0...2.2 (MSХ). Есть также версия для ОРИОНА (3.0). Эти версии загружаются по сбросу, причем работают прямо из экранной области (как жаловались некоторые пользователи - работает хорошо, но возникает "грязь" у правого края экрана !). Т.е сама программа размещаясь в экране (4К) не занимает места в ОЗУ для программ, оставляя для буфера ввода все 36К ровно. Если бы был цвет как в ОРИОНЕ, то экранные байты можно было бы сделать невидимыми. Эта программа абсолютно не использует никаких п/п-рамм в ПЗУ и даже стек переносит в экранную область. Скопировать SP-COPY можно им самим, но не нужно пытаться что-либо менять в программе, впрочем вряд ли это у вас получится.

Режимов работы всего 3 и всё очень просто. Режим выбирается "стрелками вверх-вниз" и запускается по <ВК>. Отмена режима - <СТР>. Последний введенный блок можно удалить в любом режиме, нажав <НР>/<СТР> (одновременно). Скорость вывода общая для всех блоков - и устанавливается "стрелками вправо-влево". Скорость ввода определяется автоматически и запоминается; "автоматически" вычисляется и устанавливается соответствующая константа вывода. Режим EXIT - выход в монитор.

А теперь рассмотрим какие блоки применялись в некоторых блочных программах СПЕЦИАЛИСТА, сделанных в Ленинграде, на примере простейшего блочного загрузчика игры с заставкой. Игра загружается по сбросу (это наиболее удобно). Первым загружается и сразу запускается маленький стартовый блок (100 байт). Он очищает экран, выводит надпись "НЕ ВЫКЛЮЧАЙТЕ МАГНИТОФОН..." (или на иностранном языке - "DO NOT STOP YOUR TAPE NOW..."). Далее определяется константа чтения (так как пользователь может не иметь ленинградского монитора, где это делается по сбросу) и управление передается подпрограмме C453 - загрузка следующего блока с его автоматическим запуском.

Пока всё просто. То есть первый блок на ленте имеет вид:

- Нач.адрес
- Кон.адрес
- Вывод надписи
- Опред-е конст.чт.
- JMP 0C453H
- Контр.сумма

В этом блоке контр.сумма не используется, но в последующих блоках она имеет значение. Следующий блок - загрузчик всего остального. Его структура:

- Нач.адрес
- Кон.адрес
- Вывод текста "GAME IS LOADING"
- Загрузка программы вывода заставки (бл.3)
- Загрузка картинки-заставки (бл.4)
- CALL программы вывода картинки
- Загрузка блоков игры (бл.5)
- JMP игра
- Контр.сумма

Таким образом 2-й блок по загрузке и запуску не отличается от первого - так же загружается и автоматически запускается (хоть так как константа чтения теперь не важна, этот блок можно для повышения надежности грузить со скоростью вдвое медленнее). Вся дальнейшая загрузка осуществляется под управлением этой программы - загрузчика (блока 2). Заметьте ! - последующие 3 блока уже не имеют начального и конечного адресов. Программа-загрузчик знает их заранее. Этот загрузчик уже не использует п/п-раммы BIOS "СПЕЦИАЛИСТА", а имеет свою собственную, более совершенную программу ввода с магнитофона, - она осуществляет текущий контроль качества ввода, подстраивается под скорость записи, проверяет контр.суммы и может делать различные "чудеса", типа бегущего счетчика, полос по бордюру, двигающихся блоков и т.п.

Впрочем эти эффекты вовсе не являются чудесами, а являются обычным делом для владельцев ленинградского монитора (где бегущий счетчик адреса и поддержка бордюра входят прямо в стандартные п/п-ммы ввода/вывода байта). Текущий контроль ввода сразу-же позволяет определить "останов" магнитофона или провал в записи (попробуйте остановить ленту - сразу же запищит и замигает надпись "TAPE LOADING ERROR !").

Игру полезно грузить маленькими блоками с контр.суммами каждого. Во-первых, это позволяет сразу же обнаружить сбой, а во-вторых, большое количество блочков загружаемых по разным адресам (например: задом наперед) не затрудняя копирование копировщиком, сильно затрудняет работу мерзким кракерам, любящим влезать в чужие программы. Естественно стартовый адрес игры не должен быть очевидным и при работе игра должна проверять флаги, выставленные загрузчиком, для сообщения об отсутствии попытки взлома.

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

Чтобы сделать описанную выше блочную загрузку игры можно воспользоваться компоновщиком, а если скорость ввода не меняется то можно обойтись ленинградским монитором и копировщиком. Все блоки готовятся заранее и записываются на ленту причем первые 2 блока обязательно из тех-же адресов, где они будут работать! Остальные - всё равно. Эти блоки записывают на ленту, причем для блоков 1 и 2 нужно выводить адреса загрузки, а для блоков 3, 4 и 5 не надо, и даже нельзя. Иначе весь блок будет считан со сдвижкой на 4 байта! Кроме того между блоком 4 и блоком 5 необходима пауза побольше - т.е длинный пилотон перед блоком 5.

Это необходимо, чтобы успела отработать программа копирования в экран цветной заставки. Тут уж без компоновщика, одним копировщиком не обойтись. Кстати копировщик при копировании всегда считает и запоминает длину пилотона, поэтому если вы будете нажимать <ВК> позже начала пилотона, то пилотон на копии будет короче, чем на оригинале. Чтобы облегчить вам разработку собственных блочных загрузчиков, рассмотрим простую 4-х блочную программку. Проделайте всё сами на компьютере. С помощью редактора и ассемблера подготовьте на ленте 4 файла (уже в машинных кодах разумеется).



.
БЛОК 1: ORG 0
LXI H,TXT1
CALL 0C438H
JMP 0C453H
TXT1: DB 1FH,'ЗАГРУЖЕН БЛОК 1',0

БЛОК 2: ORG 0
LXI H,TXT2
CALL 0C438H
LXI H,100H
LXI D,KON3-1 ; конечный адрес блока 3
MVI A,0FFH ; подставьте после трансляции
CALL 0C416H ; программы блока 3
JMP 100H
TXT2: DB 13,10,'ЗАГРУЖЕН БЛОК 2',0

БЛОК 3: ORG 100H
LXI H,TXT3
CALL 0C438H
CALL 0C3F9H
LXI H,TXT4:
LHLD 8FE3H
CALL 0CC6CH ; вывод HL в HEX-виде
PCHL
TXT3: DB 13,10,'ЗАГРУЖЕН БЛОК 3',0
TXT4: DB 13,10,'ЗАГРУЖЕН БЛОК 4 С АДРЕСА: ',0
KON3: ; это адрес конца блока 3

БЛОК 4: ORG 200H
LXI H,TXT5
CALL 0C438H
JMP OC800H ; выход в монитор
TXT5: DB 13,10,'БЛОК 4 ОТРАБОТАЛ !',0

Тут применены все виды загрузки. При компоновке для блоков 1,2 и 4 надо указывать их адреса загрузки (т.е "+" в таблице компоновщика), для блока 3 - нет. Но в блоке 2 должны быть заданы его начальный и конечный адреса. Думаю проделать этот простейший пример сможет каждый. Применив немного фантазии и свои несложные програмки вы можете значительно украсить процесс загрузки имеющихся у вас игр (например: сделайте процесс загрузки с двойным дублированием блоков или с выводом сообщения после ввода очередного блока: "до конца загрузки осталось XX мин. XX сек."). Советую также разобрать стартовые блочки-загрузчики, примененные, например, в копировщике или других блочных программах.

Изучив их загрузчики, вы сможете выдрать надёжные п/программы чтения, а из игр вы можете взять подпрограмму ввода заставки прямо в экран (по синклеровски). А изучение загрузчиков защищенных от копирования программ позволит вам и самим защищать свои программы, что позволит вам даже продавать ваши программы, не опасаясь пиратов.

К сожалению нарисовать граф.редактором картинку-заставку - невозможно (если вы не художник). Поэтому выходом здесь может быть использование заставок или копий экрана из программ ZX-Spectrum. Для этого служит программа В.Ивинских "ZX-Picture". Она позволяет считывать с ленты программы в формате СИНКЛЕРА и использовать графику из его программ.

Несколько замечаний. Для СПЕЦИАЛИСТА существует несколько версий BIOS и мониторов (конечно ни один из этих мониторов нельзя даже сравнивать по качеству с ленинградским). Все эти программы большей частью совместимы с BIOS Волкова по системным п/программам в ПЗУ, но служебные ячейки в ОЗУ обычно используют по-разному. Например, в ленинградском мониторе векторизованы все стандартные п/программы, что означает, что любая из них может быть заменена п/программой пользователя (напр: можно загрузить магнитофонный драйвер, который, заменив стандартные п/п-ммы ввода/вывода байта на МГ, изменит низкоуровневый формат работы с магнитофоном на MSX (2-х частотн.с побайтовой синхр-ей) или напр-р "синклеровский"). А также в ОЗУ хранятся адреса важных п/п-м самого монитора (CCP), служебные ячейки RAMDOS и т.д.

Именно благодаря такому расширению количества служебных ячеек BIOS, ленинградский монитор и стал таким гибким и удобным. Поэтому, чтобы обеспечить совместимость со всеми используемыми системными программами не стоит использовать для загрузчиков ОЗУ по адресам служебных ячеек (256 байт ниже экрана), делать блочные программы использующие нестандартные входные точки разных BIOS-ов, а также перехватывающие управление за счет служебных ячеек.

Конечно эффектно, когда программа "вышибает" управление у монитора и Вы при попытке загрузить обычный файл директивой I, вдруг видите на экране разные неожиданные чудеса. Однако это приведет к неудобству других пользователей, ведь для СПЕЦИАЛИСТА столько-же мониторов, сколько крупных городов в стране. Поэтому для трюков следует использовать лишь стандартные ячейки. Некоторые из этих стандартных ячеек приведены ниже:



.
8FE3/E4 - при работе п/п-мы C3F9 сюда заносится
адрес начала введенной в ОЗУ программы

8FE7/E8 - адрес начала знакогенератора сдвинутый
вправо на 3 разряда

8FEC - признак регистра РУС/ЛАТ (8А ИЛИ 3А)

8FEF/F0 - код нажатой клавиши по верхн. Регистру

8FF1/F2 - частота/длительность звука при работе
станд.подпрограммы вывода звука - C170

8FF6/F7 - ячейка временного хранения стека (SP)

8FFA/FB - "маска" при выводе на экран (XRA)

8FFC - вертикальная координата курсора (0...255)

8FFD - горизонтальн.координата курсора (0...191)

8FFE - константа записи. Зависит от такта про-
цессора. Для 2 МГЦ=28H, 2,5=34H, 4,0=5FH

8FFF - константа ввода. При такте 2МГЦ = 3CH.
Для 2,5 МГЦ = 4CH, для 4 МГЦ = 80H. Для
ленинградского монитора при работе п/п-м
с поиском с/б это значение не играет роли
т.к сюда заносится автоматически опреде-
ленная константа ввода, но при работе п/п
ввода байта, эта ячейка ОЗУ также важна.

И еще один совет. В последнее время многие "специалисты" повышают такт процессора до 2,5-2,75 МГЦ для КР580, и до двойного Турбо в 4,0 МГЦ при замене процессора на Z80. При разработке блочных загрузчиков это необходимо учитывать. Ибо, если например, ваш загрузчик контролирует время до начала очередного блока с целью защиты от копирования, а т.к из-за отсутствия прерываний считать время можно только програмно, то при загрузке на машине с двойным тактом, программа, подождав вдвое меньшее время будет вынуждена уничтожить всё ОЗУ, полагая что мерзкий кракер пытается ломать вашу защиту. Проще всего узнать скорость машины можно "посмотрев" константу записи, которая также инициализируется по сбросу.

Этот текст был написан в 1989 году. Сейчас он был лишь немного отредактирован. Следует также заметить, что все, что здесь описано, было разработано В.Ивинских еще в 1988 году. Тем не менее эти материалы могут помочь начинающим сделать первые шаги в программировании, кого-то подтолкнут к собственным разработкам (возможно и для "ОРИОНА") поэтому этот текст и был предложен для планируемого журнала для любителей ОРИОНА В.Леонтьева из Ижевска.

Чистяков Владимир, С-Петербург, апрель 1993

barsik
29.12.2017, 21:25
Чтобы не применять хитроумных трюков в КНГМД на базе ВГ93 нужно немножко повысить быстродействие СПЕЦИАЛИСТА. При этом и другие программы работают пошустрее, а экран сплющивается по горизонтали. Что хорошо для телевизора, но нехорошо для видео монитора (экранчик плющенный как в ОРИОНЕ).

Эта схема была разработана мной в 1988 году, т.к в экран телевизора не умещался весь растр целиком, что неприятно. Впоследствии оказалось, что такая доработка необходима и для подключения дисковода. Кроме того небольшим изменением схемы получается экран 512*256, что позволяет иметь 64 символа шрифта 8*10 в строке или 80 символов 6*10. Но это уже другая тема, т.к тогда получается почти другой компьютер.

Если тупо использовать инструкцию типа "здесь разрезать здесь соединить", то это затруднит поиск ошибок, если ошибиться в проводах. Да и всегда лучше понимать суть схемы. Т.к нумерация выводов вентилей в схеме МК 02.1987 и в схеме ЭКСПРЕСС не совпадает, то в скобках, когда названия вентилей отличаются, приводится нумерация ЭКСПРЕСС. Не совпадают выводы DD1.4, DD11.1, а вентили DD9.1 и DD9.2 в базовой схеме в схеме ЭКСПРЕСС это D6.2 и D1.5.

Для начала следует знать, как устроен видеогенератор СПЕЦИАЛИСТА. Цепи с выходов счётчиков с номерами 1,2,3,4,5,6 следовало правильно назвать H1, H2, H4, H8, H16, H32 (т.к соответствует сдвигу позиций экр.байтов по горизонтали), а на мультиплексоре эти веса соответствуют адресам A8...A13.

Эта группа счётчиков в базовой схеме считает до 63, а при поступлении 64-го импульса от ЗГ сбрасывается в 0. Вентиль D6.1 формирует гашение по строкам при весах счётчиков от 0 до 15, что приводит к видимости 48-ми экранных байтов при весах счётчиков от 16 до 63 и экрану с 9000.

Задача, заменить кварц 8 МГЦ на 10 МГЦ. Чтобы частота строк не изменилась коэффициент деления счётчика строк надо изменить с 64 до 80. Для этого надо ввести еще один каскад деления на ТМ2. Этот триггер взводится по заднему фронту цепи H32 (это цепь 6, D3/12), формируя вес H64.

Перенос в счётчик линий растра, т.е на вход D3/1, который раньше делался по ССИ (при весе 52), теперь удобно делать по взводу доп.триггера, т.е при весе 64. Когда конкретно делается перенос в счётчики по вертикали - не важно, лишь бы он был до начала следующей строки.

При этом в каждой строке старые счётчики по достижении веса 64 обнуляются и начинают снова считать пока не достигнут веса 16. По достижении веса 16 (при взведённом триггере, т.е при весе H64=1) схемой совпадения на вес 64 и 16 вся цепочка счётчиков сбрасывается, обеспечивая коэфф-т деления 80. Схему совпадений можно сделать на логике (даже на 2-х диодах), но удобнее и чтобы избежать "опасных гонок" это делается на второй половинке триггера.

В базовой схеме ССИ формируется комбинаторной схемой, которая формирует 1 при весах от 4 до 9. Это элементы DD6.1, DD1.4, DD6.3, DD11.1. В схеме ЭКСПРЕСС нумерация вентилей та же, но сами вентили иные, т.е не совпадают надписи на входах и выходах вентилей. Т.к при повышении коэфф-та деления до 80-ти, веса от 0 до 15 пробегают дважды, то теперь и веса от 4 до 9 также пробегают дважды. Это значит, что формируется два ССИ.

Если доп.логикой просто запретить второй ССИ, что формируется при весах выше 64, то всё будет работать, но т.к ССИ будет уже не по центру сигнала гашения по строками, растр съедет влево. Легко отцентровать растр задержав ССИ на RC-цепочке (именно так и делалось в первом варианте схемы), но грамотнее просто применить иную схему совпадений для формирования ССИ при весах от 72 до 79, что простейшим образом и делает вентиль D11.1.

RC цепочка служит для удлинения сигнала сброса триггеров и счётчиков и вообще-то работает и без неё, но грамотно удлинить сигнал сброса, т.к могут попасться счётчики работающие медленнее, чем триггер. Элемент D6.3 после переделки освобождается. Понятно, что при применении ТМ2 не из 155-той серии, оставлять висящие входы не стоит. После доработки, если загрузчик зверковский, то МГ-константы 28 и 3С надо заменить на 3C и 4C. Если же Ваш загрузчик сам настраивается на скорость записи, то менять константы не обязательно.

1. Заменить кварц 8 МГЦ на кварц 10 МГЦ.
2. D3.14 отрезать от D2/7 и проводом соединить с D2/12
3. Освободить D1.4, т.е отрезать DD1/11,DD1/10 (D6/4, D6/5)
4. Установить доп.триггер (на ЭКСПРЕССЕ напаивается на 155ЛА2 D10) и смонтировать по схеме
5. Подключить D1.4/11 к D3/12 (цепь 6), а D1.4/10 к 3-й ноге доп.триггера
6. DD11.1/9 (D11.1/12) отрезать от D2/2 и подключить к D2/6
7. DD11.1/10 (D11.1/13) отрезать от D6.3/10 и подключить к TM2/5

Таким образом с помощью одного триггера повышается такт СПЕЦИАЛИСТА до 2.5 МГЦ. Но если подключать КНГМД с ВГ93 не требуется и используется не телевизор, а монитор, то чтобы экран не особо плющился, а в то же время быстродействие увеличилось на 12.5%, лучше применить кварц 9 МГЦ, изменив коэффициент пересчёта на 72.

fifan
30.12.2017, 08:35
Я не пойму каким образом связаны последние два поста с названием темы? Удаляю.

barsik
30.12.2017, 11:23
Зачем сразу удалять? Уже один раз Вы эту инструкцию удалили. Пришлось набирать второй раз. Если удалите снова, то набирать тот же самый текст в третий раз не стану.

А посты как раз таки непосредственно связаны с темой. Первый пост про подпрограммы монитора и их использование и про другие программы. Зашла в другой теме речь о доработках эмуляторов для ввода по сбросу и понадобилось выложить это руководство по использованию подпрограмм ПЗУ. Чего тут оффтопного? Гораздо бОльшие отклонения от тем игнорируются модераторами, хотя действительно отводят от темы.

Модераторы вообще не должны лезть по поводу тем, по-крайней мере пока речь идёт о железе и программах, а не о погоде и политике. А уж тем более удалять чужие посты, в которых нет ни мата, ни оскорблений - это неправильно. Модераторы должны чистить темы только по просьбе топик стартера. Произвол модераторов ничем не ограничен, но и он должен быть в рамках порядочности. Почему-то совершенно бесполезные и не содержащие вообще никакой информации посты в виде междометий тщательно сберегаются, хотя как раз именно от таких постов следует чистить темы.

А последний пост тоже не вне темы. Дисководные DOS тоже являются программами, а чтобы эти программы работали нужно заменить кварц в СПЕЦИАЛИСТЕ. Значит перед тем как выложить дисковую DOS, я просто вынужден опубликовать эту схему. Всё логично и нет никакого нарушения. А если уж так раздражает, то можно переименовать тему, сделав её ещё более длинной. "Ленинградский монитор и другие программы для СПЕЦИАЛИСТА, а также разные доработки железа СПЕЦИАЛИСТА, которые требуются для работы этих программ". Разве такое длинное название будет лучше?

Скоро нарисую схему и напишу инструкцию как расширять ОЗУ заменой на РУ7 и путём напайки второй банки РУ5 вторым этажом. Но боюсь, что за выкладку ещё одной схемы в этой теме меня снова забанят на полгода "за злостный оффтоп". Так что потерпите немного. Примерно через неделю эту схему отсюда удалю и создам какую-нибудь другую тему. Но никак не могу придумать название, чтобы модераторы не доставали за оффтоп. Пока придумал название темы "Обо всём, что связано со СПЕЦИАЛИСТОМ".

fifan
30.12.2017, 12:20
Уговорил. Всех с наступающим!

HardWareMan
30.12.2017, 12:23
barsik, прекрати быть таким унылым. Алсо твоя тяга к стаскиванию всех околотемных (и иногда, кстати, не очень околотемных) вещей в одну кучу (а чаще даже в один пост) утомляет и хочется бросить все и уйти.

Сделай тему "Доработка xxx, необходимая для запуска программы yyy" и там описывай. Людям будет понятнее и никакого загромождения. И ты всегда можешь дать внутреннюю ссылку на тему любому спрашивающему. Научись уже сортировать и упорядочивать свои мысли наконец.

Касаемо твоих мыслей относительно модерирования данного ресурса: ты уже очень давно (во время первого своего пришествия) нам всем все предельно ясно разьяснил. Не нужно повторять это по поводу и без повода.

zx_
06.01.2018, 17:23
barsik, а вот эту картинку пояснить подробнее

http://zx-pk.ru/attachment.php?attachmentid=60388&d=1490799069

разьем РК-КНГМД на отдельной платке с некой панелькой дип рядом - зачем и что было в панельке.
как платка с разьемом соединялась с основной платой Спеыиалист Экспресс

barsik
06.01.2018, 20:31
Панелька на 40 ног на данной плате вообще не распаяна. Вероятно предназначалась для установки AY-8910 или ППА для ROM-диска.

На плате РК-КНГМД видны два кварца и генератор на 555 ЛН1 напаянной вторым этажом. Это потому что надо было иметь кварц 10.5 МГЦ для формата 560 кб на DD-дисках и 16.5 МГЦ для формата 880 кб на HD-дисках. Но СПЕЦИАЛИСТ без турбирования с любым КНГМД потянет не более 640 кб. На плате напаяно 5 доп.ИМС вторым этажом, т.к эта плата турбирована до 3 МГЦ

Из 5-ти моих плат ЭКСПРЕСС - на 3-х ОЗУ расширено одной или двумя доп.банками РУ5-тых. Но теперь предпочитаю ставить РУ5 в 2 или 3 этажа, для того чтобы плата оставалась маленькой. Это нормально работало на ОРИОНЕ, так что не нужны доп.платки с ОЗУ. Эту панельку на этой плате скорее всего использую для ППА ROM/RAM-диска - одна 27256 и две 62256. Схему такого ROM-RAM-диска уже нарисовал. Но сейчас использую другую плату, где пока смонтировал лишь волковский цвет и вторую банку ОЗУ. Слота для КНГМД на ней нет, - расчитываю использовать с винчестером. Сейчас решаю проблему клавиатуры, т.к имеющаяся плохая.

Слот здесь составлен из двух отпилков отечественного слота СНП15-96/140x10P. Важно чтобы на концах разъёма были упоры, потому от длинного разъёма берутся только концевые отпилки по 12 и 13 контактов. Удобны были бы эпловские слоты на 50 контактов, но у них, увы, дюймовый шаг, а на плате КНГМД метрический. Можно составить метрический слот и из трёх отпилков дюймового слота шины ISA для PC. Я так тоже делал, получается даже лучше, чем из отечественных разъёмов, т.к контакты импортных слотов золочёные. В любом случае важно чтобы на концах самодельного укороченного слота были упоры.

Тип разъёма не принципиален, но раз уж на плате есть краевой врубной разъём, то выгодно это использовать. Если используется не врубной разъём из самой платы КНГМД, а на плату КНГМД впаивается разъём как в МИКРОШЕ (или АГАТЕ), что на 60 контактов, то укорачивать 60 ламелей до 50-ти на плате КНГМД не требуется, а на ламели припаивается разъём. Практика показала, что хотя ламели не золочёные, а просто лужёные, контакт вполне нормальный. Изредка полезно почистить контакты жёсткой стирательной резинкой.

Можно слоты или разъёмы не ставить, а просто закрепить платку КНГМД и соединить с шиной компьютера проводами. Это ничуть не хуже. Т.к интерфейс через ППА, то достаточно снять ППА и ПЗУ с платы КНГМД и уже не будет нагрузки шины. У СПЕЦИАЛИСТА шина гораздо мощнее, чем у РК86, т.к ОЗУ буферизовано.

Платка с слотовым разъёмом, как и другие платы крепятся с помощью маленьких текстолитовых пластинок (желательно тонких) и винтов М1.5 или М2. Пластинки соединяют платы снизу, так что внешний вид не портится. Желательно чтобы пластинка крепилась не двумя винтами, а тремя, тогда соединённые платы не могут смещаться. На таком принципе из отпилков разных компьютеров я свинчивал платы целого компьютера размером 400*400 из десятка фрагментов. Внешний вид получается отличный, но проблема доставать большое число маленьких гаек М2 или М1.5.

Для монтажа я использую не МГТФ. Ранее - термо-залуживающийся ПЭПЛОТ, а позднее, ввиду его отсутствия, - обычный ПЭЛ-02...0.25. Трудоёмкость вдвое выше, т.к для залуживания надо соскабливать эмаль острым ножом, но зато никакого вороха проводов снизу платы. На монтаж целого компьютера уходило несколько недель или даже месяц. КНГМД на ВГ93 с помощью ПЭЛ я спаял за 2 дня. Просто нужен достаточно сильный энтузиазм.

zx_
06.01.2018, 21:18
а ПЭЛ не коротит потом между собой? лак хороший ?
а ПЗУ с ДОС можно же поставить в основную плату Экспресса? на место РФ4

barsik
07.01.2018, 07:23
а ПЭЛ не коротит потом между собой? лак хороший ?
ПЭЛ применяю с 1989 года, опробовано на десятке плат. Замыканий не бывает. Сейчас в качестве провода удобно использовать импортный высоковольтный ПЭЛ из размагничивающей рамки телевизоров. Это рамка диаметром полметра надетая на кинескоп, обмотанная изолентой. Есть в каждом импортном телевизоре. Там провод как раз нужного диаметра. Но и советский ПЭЛ не хуже.

Преимущество монтажа одножильным тонким проводом в том, что получается как бы метод накрутки, но без шприца с продетым в него проводом. Метод накрутки шприцом хорош только, если есть самозалуживающийся провод ПЭВТКЛ. А я накручиваю пинцетом заранее залуженный обычный провод на выводы ИМС со стороны монтажа. Потому отверстия с металлизацией не нужны. Не нужен слепыш, достаточно просто сверлённого неметализированного текстолита.

Для маленьких плат (типа КНГМД или контроллера апп.клавиатуры) питание удобно развести метализацией, а монтаж проводами. Проводники питания выполненные металлизацией на плате не травятся в хлорном железе или в аптечной соляной кислоте с гидроперитом и даже не в растворе медного купороса, а просто вырезаются ножом. Вырезая печать ножом я делал даже полноценные печатные платы, а тут достаточно оставить лишь прямые линии земли и +5В между рядами микросхем, удалив всю остальную печать.

А если текстолит не фольгированный, то питание разводится проводом 0.5 мм со стороны монтажа, по типу как питание разводится на линёвской плате. На выводы земли и питания у ИМС (или в пустотелых заклёпках рядом) впаиваются Г-образные стойки высотой 8-9 мм, соединяемые прямым лужёным проводом.


А ПЗУ с ДОС можно же поставить в основную плату Экспресса? На место панельки РФ4
Если нужна только оригинальная RK-DOS, то можно использовать ПЗУ, причём как на плате РК-КНГМД, так и на основной плате ЭКСПРЕСС. Там 4 панельки. Можно ставить 3 ПЗУ для ROM-BIOS, C000, C800 и D000 и 2764/27256 для RK-DOS на адреса E000...EFFF.

Если две напаянные друг на друга РФ2, как это и положено по конструктиву, ставят в плату РК-КНГМД, то на основной плате остаются 4 панельки, куда можно поставить 4 РФ2 с чем угодно. До 1990, я всегда ставил 6 штук РФ2, в 3 панельки двумя этажами. Но установка CP/M потребовала оставить только две РФ2, открыв ОЗУ D000...F7FF, т.к туда грузится BDOS+BIOS CP/M (а CCP грузится в основное ОЗУ на 8700).

В любом случае ОЗУ всегда выгоднее, чем ПЗУ, т.к даёт гибкость. А т.к, если нет дисковода или винчестера, лишнего ПЗУ на основной плате нет, а откуда-то разные DOS надо грузить, то тут и становится актуальным ROM-диск от ОРИОНА. Это имеет преимуществом, что разгружается шина (нет кучи РФ2 на шине) и появляется альтернатива. В ROM-диск на одной 27256 вмещается как минимум несколько разных DOS, драйвер VT52 и программа загрузки с линии из IBM PC. Но для начала достаточно лишь RK-DOS в 4-5 кб, редактор, макро ассемблер (не Микрон) и отладчик. А другие DOS можно грузить с дискет RK-DOS или иметь их загрузчик с системных треков, как принято в CP/M.

RK-DOS в оригинальном виде стОит использовать только в начале, до появления лучшей версии. Если RK-DOS навсегда иметь в ПЗУ на E000, то уже нельзя будет загрузить другую версию той же RK-DOS в ОЗУ на эти же адреса и использовать ОЗУ в этих адресах для других целей с большей пользой.

- - - Добавлено - - -

Раз в СПЕЦИАЛИСТЕ возможны прерывания, то появляется возможность сделать совместимость с программами РК86, что лезут в экран. А именно, сделать визуализацию наглых программ РК на прерываниях. Для этого понадобится ОЗУ в области F800...F8FF. Т.е не надо делать аппаратное совмещение ПЗУ C800...C8FF и F800...F8FF с помощью 2-х диодов. Для совместимости по вызовам достаточно скопировать ПЗУ C800...C8FF в ОЗУ F800...F8FF. А для визуализации РК-программ сюда можно грузить более полноценный заменитель ПЗУ РК86, работающий один в один как ПЗУ РК86 и использующий прерывания для визуализации.

Тогда несколько раз в секунду экран РК86 копируется в экран СПЕЦИАЛИСТА. Это позволит использовать все системные в т.числе и дисковые программы РК86 и даже игры РК86, причём даже графические (но лишь те что сами не лезут в матрицу клавиатуры, а читают её через F81B). В СПЕЦИАЛИСТЕ такт 2 или 2.25 МГЦ, а РК86 намного тормознее, потому запаса быстродействия кое-как хватает для визуализации экрана РК несколько раз в секунду.

Вот тогда SE.COM для RK-DOS и другое дисковое ПО от Е.Седова тоже будет работать без переделки. Точнее, всё-же надо будет в каждой наглой программе делать коррекцию, освобождать три ячейки по адресу 0038 и ставить туда JMP на адрес обработчика прерываний. Но это даже нельзя сравнивать по сложности с полной переделкой программ РК.

Причём, такой трюк по адаптации РК-программ годится не только для использования программ работающих в режиме 64 символа на 25 строк, - чисто текстовых программ, т.е игр из сезона 1986-1989. К сожалению, более поздние игры РК научились использовать режим псевдографики 128*60. При этом отображается 30 строк высотой в 8 линий растра.

По счастью на СПЕЦИАЛИСТЕ это тоже можно отобразить сократив размер знакоместа с 6*10 до 6*8 (загрузкой драйвера на 32 строки). Также нет никаких проблем для визуализации игр РК работающих с альтернативным фонтом 6*6 в 64 графических символа (плюс 32 двух-знакоместных буквы), что даёт псевдо-графику 128*135.

Цветные программы РК86 также визуализируются. Однако это потребует большего ресурса процессора и без турбирования может получиться тормознуто. Зато, если это получится сделать, то число программ СПЕЦИАЛИСТА возрастёт на все игры от РК86 и клонов.

Удивительно, но это даст текстовый режим в СПЕЦИАЛИСТЕ, можно будет писать программы для СПЕЦИАЛИСТА и они будут работать и на РК86. К сожалению, чтобы это работало со скоростью текстового адаптера необходимо турбирование СПЕЦИАЛИСТА хотя бы до 3 МГЦ.

HardWareMan
07.01.2018, 11:45
а ПЭЛ не коротит потом между собой? лак хороший ?
Я паял (и паяю) ПЭЛом в виду отсутствия МГТФ в наших краях. Это требует сноровки, но согласен с barsik'ом - трассы аккуратнее в виду меньшего диаметра. МХ2 был прототипирован именно так, однако картинки сдохли давно.

fifan
07.01.2018, 12:52
МХ2 был прототипирован именно так, однако картинки сдохли давно.
Не сдохли - я всё храню.

63644

HardWareMan
07.01.2018, 13:22
fifan, а обратная сторона осталась?

fifan
07.01.2018, 17:34
fifan, а обратная сторона осталась?

Нет, только с этой же стороны подальше вместе с клавиатурой.

barsik
21.01.2018, 07:05
Т.к в связи с нехваткой быстродействия СПЕЦИАЛИСТА для КНГМД на ВГ93 с уже имеющимся для этого ПО, пользоваться СПЕЦИАЛИСТОМ в МГ-варианте, т.е без внешнего носителя поддерживаемого DOS, неудобно, то пришлось в качестве носителя использовать RAM-диск, образованный из излишков ОЗУ. А так как излишнего ОЗУ в СПЕЦИАЛИСТЕ, в отличие от ОРИОНА, вообще нет, то для этого потребовалась апапаратная доработка - установка дополнительного ОЗУ.

Сделал это в 2-х видах. Сначала, получил 128 кб, на одной плате в виде двухэтажных РУ5. А затем, т.к для эл.диска этого явно мало, то на другой плате с помощью замены РУ5 на РУ7 (разукомплектовав последний ещё живой ОРИОН) получил аж 256 кб. ПЗУ в обоих случаях оставил в 8 кб (C000...DFFF). Т.к хотя ОЗУ в области D000...DFFF было бы полезнее, чем ПЗУ, но пока нет энергонезависимого ROM-диска в 64 кб (из двух 62256), откуда можно было бы грузиться по сбросу, ПЗУ приходится иметь в самом СПЕЦИАЛИСТЕ.

При расширении ОЗУ сразу же возникает вопрос выбора архитектуры. Это можно сделать грамотно или так, чтобы был минимум доработок и сохранилась базовая концепция. Первый вариант это практически превращение СПЕЦИАЛИСТА в иной компьютер. Это сделал Л.Афанасьев ещё в 1991 году, когда изобрёл СПЕЦИАЛИСТ-MX. У меня нет такой задачи. Мне лишь нужно побольше ОЗУ в основной банке за счёт "открытия верхнего ОЗУ" в области D000...F7FF для загрузки туда DOS, чтобы не сокращать основное ОЗУ 0...8FC7 доступное для программ и несколько дополнительных банок ОЗУ для организации из него RAM-диска.

При наличии доп.банок ОЗУ их можно использовать для работы из них программ. Или лишь для RAM-диска, что не разрушает базовую концепцию, т.к доп.банки используются лишь для эмуляции внешного носителя (и равнозначно подключению дисковода или платы внешнего эл.диска). Но в обоих случаях для межбанкового интерфейса нужно некоммутируемое ПЗУ или ОЗУ. В ОРИОНЕ есть и то и то. Это удобнее, но выкрутиться можно и без некоммутируемого ОЗУ используя лишь некоммутируемое ПЗУ.

В этом случае в ПЗУ достаточно иметь всего 3 интерфейсных подпрограммы - чтение/запись байта из любой банки программой находящейся в любой банке и CALL подпрограммы в иной банке. Сложность представляет возврат в текущую банку. В ИРИШЕ перед переключением можно считать и запомнить текущую карту памяти (т.к в качестве регистра стоит ППА, из порта которого можно читать), а в ОРИОНЕ порт F9, коммутирующий банки, считать нельзя (а дублирование содержимого порта F9 в ячейке F3F9, что решило бы проблему, не поддержано ROM-BIOS). Потому в ОРИОНЕ п/п-ммы F836/39 чтения/записи байта можно вызывать только из банки 0, т.к RET из этих подпрограмм происходит именно в банку 0. Но этого уже достаточно для программ банки 0 использующих излишние банки ОЗУ в качестве эл.диска.

Таким образом расширение ОЗУ в СПЕЦИАЛИСТЕ непременно требует изменения ПЗУ ROM-BIOS. Для упрощения жизни удобнее всего ввести подпрограммы C836/C839 аналогичные подпрограммам ОРИОНА F836/39 и для коммутации банок использовать тот же самый порт F9. Тогда модуль VDISK.INC из DOS для ОРИОНА вообще не требуется изменять.

Ещё желательно бы иметь 2 другие подпрограммы - вызова п/м-мм в банке 0 из программы в банке 1 и наоборот вызова п/п-мм в банке 1 из программы в банке 0. Но это пока не востребовано. Хотя в сочетании с отключением ПЗУ это даёт возможность получить CP/M c TPA в ~62 кб. Так просто это нельзя сделать в РК86, а в СПЕЦИАЛИСТЕ получается просто именно благодаря тому, что порты стоят не в середине памяти, а в вершине адресов.

Без режима FULL RAM (когда отключается ПЗУ) получается 4-х банковая память коммутируемая в двух окнах. В окне основной памяти 0...BFFF и в окне верхней памяти D000...F7FF. Т.е в каждой банке доступно 48+10=58 кб, что в сумме даёт 58*4= 232 кб полезной памяти. При этом 2 кб (F800...FFFF) занимает область В/У "положенная" в область памяти и ещё 4 кб пропадает из-за ПЗУ C000...CFFF. Естественно, в банке 0 чуть более 12 кб тратится на экран и рабочие ячейки ROM-BIOS. Если верхнее ОЗУ банки 0 тратится на загрузку DOS и её дисковые буфера, то для RAM-диска остаётся 3*58= 174 кб. Это даже больше, чем VDISK в ОРИОНЕ (там он 60*2+48=168 кб) или КОРВЕТЕ с экранным ОЗУ на РУ5-тых (48*3=144 кб).

К сожалению, автор эмулятора EMU80, который по моей просьбе составил конфиг-файл для этого эмулятора под такое банковое расширение ОЗУ в СПЕЦИАЛИСТЕ, сделал коммутацию только в окне основного ОЗУ, т.е портом F9 переключается только область 0...BFFF размером в 48 кб, а верхнее ОЗУ D000...F7FF остаётся некоммутируемым (из ОЗУ банки 0). Это позволяет из 3-х дополнительных банок ОЗУ получить только небольшой эл.диск в 48*3=144 кб.

Такая архитектура коммутируемая лишь ниже C000 имеет некоторые плюсы, а именно, можно не перешивать ПЗУ C800, а грузить п/п-ммы для чтения/записи байта из доп.банок аналогичные D836/39 в верхнее ОЗУ. Но всё-же важнее больший объём эл.диска, чем отсутствие затрат на перепрошивку ПЗУ C800.

Во вложении коды и исходник ленинградского монитора имеющего поддержку доп.банок ОЗУ. Это первая новая версия этого ПЗУ за 27 лет. Изменений практически нет. Т.к символьного принтера с параллельным интерфейсом уже ни у кого нет (все они выработали ресурс и сдохли ещё в 90-тые годы), то я забил вход в драйвер принтера на RET, отчего освободилась 51 ячейка ПЗУ, чего хватило для размещения двух подпрограмм чтения/записи байта из доп.банок программой из банки 0.

Опубликованные ранее исходники ROM-BIOS были для ассемблера МИКРОН, который не может транслировать блок объектного кода объёмом более 2-х килобайт. Потому ROM-BIOS в 4 кб C000...CFFF с помощью МИКРОНА транслировался двумя кусками-половинками по 2 кб. Это очень трудоёмко, т.к адреса для перекрёстных ссылок приходится переписывать на бумажку и вносить в исходники вручную и, что особенно противно, приходится повторять эту процедуру при каждом изменении в любой половинке.

Но когда для трансляции доступен нормальный дисковый ассемблер, в таком извращении уже нет нужды. Потому я вновь дизассемблировал ПЗУ в 4 кб, получив единый исходник ROM-BIOS и затем более 12 часов потратил на редактирование полученного текста, чтобы получить полноценный исходник с грамотными названиями меток и рабочих ячеек.

Потрачено столько времени на получение полноценного исходника, т.к планирую существенно переделать это ПЗУ. Теперь неактуальны разные МГ-форматы. Зачем например, читать/писать МГ-блоки в формате ZX-Spectrum, MSX, РК86 и ОРИОНА. Да и собственно RAM-монитор почти не нужен. Вместо этого в эти 4 кб лучше засунуть работу с КОИ-8, т.к важно иметь мелкие латинские буквы, чтобы не тратить на это ОЗУ и вместо подпрограмм чтения и записи байта с МГ-ленты, нужнее подпрограммы чтения/записи байта из проводной линии подключенной к LPT-порту IBM PC.

В этом исходнике Вы увидите какие входы являются стандартными и совмещены с ПЗУ Волкова и Орлова и которые нельзя произвольно сдвигать, как делают некоторые. Для этого в редакторе запустите поиск слова "IF", т.е участков условной трансляции.

Т.к эмулятор EMU80 в силу своего алгоритма вешается на подпрограмме CEDF (определение константы ввода с ожиданием пилотона), то для трансляции ROM-BIOS для эмулятора EMU80 поставьте в исходнике ключ "EMU80" равным 1 (точнее любому числу кроме 0). При этом на входе CEDF будет ставиться код RET, отчего в эмуляторе EMU80 зависа не будет. Для эмулятора EMU от b2m это почему-то не обязательно, работает и с оригинальным кодом ПЗУ.

zx_
22.01.2018, 14:54
barsik, что за программы TDISK и TAPE ?
уже для СР/М программы? или рк-дос



некоторая критика концепции
LPT порта давно нет в компах
есть USB
для USB есть адапттеры RS232
https://ru.aliexpress.com/item/Free-Shipping-PL2303HX-module-Download-line-on-STC-microcontroller-USB-to-TTL-Programming-unit-In-the/32547642812.html?ws_ab_test=searchweb0_0,searchweb 201602_4_10152_10151_10065_10344_10068_10342_10343 _10340_10341_10543_10084_10617_10083_10616_10307_1 0615_10301_10313_10059_10534_100031_10604_10103_10 607_10606_10142_10125,searchweb201603_25,ppcSwitch _5&algo_expid=c6a24edb-2f54-4a33-97c8-08faea5b513c-9&algo_pvid=c6a24edb-2f54-4a33-97c8-08faea5b513c&transAbTest=ae803_5&priceBeautifyAB=5



Еще хотелось бы Лениградский Монитор для вот этой машинки
http://zx-pk.ru/threads/28706-spetsialist-quot-vostochnyj-ekspress-quot-sborka-i-naladka.html

Прям желательно два бинарника для прошивки двух РФ2

В этой машинке еще есть РФ4, тоесть туда же можно рк-дос либо бейсик ?
И поддержать это в мониторе
допустим вызов бейсика - В
вызов дос - U

такой комплект ПЗУ от barsik , для Специалист Экспресс хотелось бы

barsik
22.01.2018, 21:06
что за программы TDISK и TAPE ?
Уже для СР/М программы? или RKDOS
Это были скриншоты из CP/M для СПЕЦИАЛИСТА, в которой в качестве носителя было 3 дополнительные банки ОЗУ (в каждой из которых использовалось всего по 48 кб, т.к 48*3=144 кб, плюс ещё 4 кб я брал из "верхнего ОЗУ).

TDISK.COM это программа CP/M для отбраковки на дискете дохлых секторов. Но данная версия в отличие от оригинала TDISK и POWER TEST, работает быстрее, т.к умнее, учитывает размеры блоков и физ.секторов. Те тестируют каждый лог.сектор в 128 байт, что очень медленно. А данный TDISK был мной доработан. Если в блоке в 2 кб дохлый один физ.сектор, то бракуется весь одно-килобайтовый физ.сектор и дополнительно соседний физ.сектор в 1 кб, потому что блок состоит из двух физ.секторов по 1 кб.

Если в физическом секторе в 1 кб дохлый первый сектор, то совершенно незачем впустую "пилить" дискету пытаясь считать оставшиеся 31 лог.сектора блока, в который входит данный дохлый физ.сектор. И без того ясно, что и остальные 31 сектор блока следует считать дохлыми, в том числе 15 лог.секторов дохлого физ.сектора и ещё 16 лог.секторов соседнего исправного физ.сектора, т.к они в одном блоке. Это и делает фирменные тестеры дико тормозными и диско-запильными, если обнаруживается дохлота.

Моя TAPE.COM решает ту же задачу, что и TAPE.COM Е.Седова для RKDOS - позволяет перенести МГ-файлы на дискету. Это я сделал для себя, безлошадного (в смысле без внешнего носителя), чтобы можно было что-то удобно делать и в реале, а не только в эмуляторе, где доступ к программам быстрый и по МГ-интерфейсу. Но в отличие от программы Е.Седова, это автоматическая программа. Т.к в отличие от РК86, СПЕЦИАЛИСТ имеет формат с именем, что и позволяет автоматизировать процесс. В том смысле, что не надо трахаться передавая по одному файлу.

TAPE.COM это чуть изменённая древняя программа для CP/M (но не программа CP/M, в смысле она некорректная для других CP/M, т.к использует МГ-подпрограммы ПЗУ C000...C7FF), адаптированная от РК86 для СПЕЦИАЛИСТА. Хотя адаптация была нужна только для удобства, т.к можно было вводить и в МГ-формате РК86. Но формат РК86 - он без имени, отчего каждый раз по окончании ввода очередного файла с МГ, надо вручную вводить имя. Это лишает всякой оперативности и сильно утомляет.

В СПЕЦИАЛИСТЕ есть формат с именем, что и позволяет автоматизировать процесс. Строго говоря, можно было бы использовать и формат ОРИОНА (он тоже с именем), ведь ввод делает программа, а не монитор. Кстати в СПЕЦИАЛИСТЕ с ленинградским монитором есть возможность вводить и в формате ОРИОНА с помощью директивы '@', но увы эмуляторы нихрена не поддерживают удобный формат ORD (в котором я храню файлы).

Но данный TAPE вводит именно в специалистовском формате с именем (что важно, т.к позволяет подготовить запись средствами самого СПЕЦИАЛИСТА) и по окончании ввода автоматически записывает файл с корректным CP/M именем на текущий CP/M-диск (неважно какой физически). Если в имени встречены недопустимые для CP/M символы, то они заменяются на символ #. Если имя совсем плохое (точнее первый символ имени пробел или меньше), то записывается файл под именем FILE-nn.COM, где 'nn' для очередного файла увеличивается от 01 до 99.

Это сделано специально, чтобы автоматизировать конверсию RKS-файлов без имени. Простейшей программой написанной на MSDOS-бейсике, в начало файлов добавляется HEADER, вот такой


.
.phase 100H
defb 0D9H,0D9H,0D9H,20H,0
DS 256 - ($-100H)
defb 0E6H
А т.к сам файл без имени начинается с адресов, то в результате получается файл пригодный для ввода по директиве I, т.е для переноса файла на диски CP/M. Отпадает необходимость ручной конверсии RKS-файлов без имени в RKS-файлы с именем. Вообще это полный идиотизм для совершенно разных форматов использовать одно и то же расширение RKS. Я постоянно путаюсь, но увы, убедить авторов эмуляторов ввести разные расширения не удалось.

Есть CP/M программа OUT.COM, которая позволяет вывести файлы с дискеты CP/M на магнитофон или в линию подключенную на другом конце к МГ-входу другого компьютера. Так в 1994 передавались файлы из ОРИОНА на дискеты CP/M для РК86 (т.к по дискетам между ОРИОНОМ и РК86 нет совместимости). Хотя вместо МГ-подпрограмм LDBYTE/SVBYTE на вектора грузились подпрограммы для передачи/приёма байта по проводной линии и скорость передачи составляла 8 кб в секунду. Любой файл передавался за несколько секунд. На передаче всё было автоматизировано с помощью SUB-файла со списком того, что надо передать, а вот на приёме приходилось сидеть у РК86 и вводить имя каждого принятого файла вручную.

Потому, я и учёл этот опыт и использовал формат с именем. Т.к эмулятор EMU80 не умеет принимать с проводной линии, то используются обычные подпрограммы ПЗУ LDBYTE и SVBYTE (C377 и C3D0). Но т.к МГ-ввод в эмуляторе сделан не в реально времени, отчего быстрый, то это не создаёт проблем.

В TAPE.COM можно нажимать <ВК> услышав звук пилотона в начале передачи файла, а можно запустить в автомате, тогда после ввода и записи очередного файла, ввод продолжится автоматически. Достаточно кинуть кассету в магнитофон, или запустить BAT-файл на каком-нибудь компьютере, чтобы в линии шёл непрерывный поток файлов и без участия оператора всё, что считано будет записано на CP/M-диск. В этом и заключается удобство, особенно, если использовать обмен по линии с высокой скоростью обмена, - то запустил TAPE и вжик... - за пару минут весь VDISK в 1 мб заполнен заранее подготовленными файлами.

Увы, автоматизировать ввод с МГ в эмуляторе не удаётся. А это единственный способ программам попасть в эмулируемый компьютер. В моём эмуляторе, есть функции позволяющие программе 8-ми разрядки непосредственно работать с винчестером IBM PC. При старте любой DOS в эмуляторе эта DOS имеет возможность считать все файлы конкретного каталога винчестера в свой эмулируемый диск. Потому пользоваться удобно. А в имеющиеся эмуляторы для Windows рассчитаны только на МГ, что неудобно для их практического использования.

Вскоре собираюсь сделать аналог TAPE и для RKDOS, т.к RAM-RKDOS для СПЕЦИАЛИСТА с ОЗУ в 512 кб тоже уже есть. Её только что (пока в первом варианте) адаптировал от ОРИОНА, но ещё надо доделать кое-что. К сожалению, при конверсии Z80-команд объём кода резко увеличился и не влезает в 4 кб. Увы, такой уж КР580 ущербный в смысле размера команд.

RKDOS для СПЕЦИАЛИСТА без дисковода, но с ОЗУ в 256/512 кб собираюсь использовать на реальном СПЕЦИАЛИСТЕ. И в эмуляторе. Разумеется, для эмулятора нужен конфиг-файл, который делает 8 банок ОЗУ, коммутируемых портом F9 в окне основного ОЗУ в 48К (0...BFFF) и "открывает" верхнее ОЗУ D000...F7FF. У меня есть такой конфиг для эмулятора EMU80, но для публикации надо спрашивать разрешение у автора EMU80, т.к, если выложить без разрешения, то автор эмулятора может разозлиться.

Конфиг для EMU80, о котором речь, кстати, делает ещё и 64 кб ПЗУ в окне для ПЗУ C000...DFFF. Кстати, эта RKDOS нестандартная. В ней в отличие от оригинала Е.Седова добавлены команды DEL, REN и ATTR. Позднее добавлю COPY, чтобы совсем избавиться от SYS-файлов. Кстати, SYS-файлы и другие дисковые программы от РК86 не годятся. Т.к у РК-программ управляющие ячейки DOS - на 7500, а здесь под вершиной ОЗУ СПЕЦИАЛИСТА (на 8D00...8EFF). Надо перетранслировать все SYS и COM-файлы, сделаю чуть позже.