User Tag List

Страница 86 из 137 ПерваяПервая ... 828384858687888990 ... ПоследняяПоследняя
Показано с 851 по 860 из 1362

Тема: Орион-128: Разное

  1. #851

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Дизассемблировал в полноценный исходник М4. Теперь могу сказать из чего и как он получен и что из себя представляет.

    Итак, получено это не из М3.1 для КР580, а из моего ПЗУ М3 Z80 из 1994, версий до 3.605. Т.к в версии 3.605 уже форма курсора меняется в зависимости от регистра клавиатуры, а здесь курсор большой, но неизменной формы (а версии М3 из 1992 от А.Новгородова вообще имеют маленький курсор как в М2).

    Что сделано в этом ПЗУ? Добавлена новая входная точка F3C0. Там стоит переход на WARM BOOT F86C. Автор понял, что ещё один JMP ниже F3C3 умещается, но истратил его на ерунду, т.к стандартный вход WARM BOOT в советских компьютерах это F86C. Ячейка F3C1 в M3 это TMPSP (в М2 TMPSP это F3DF, что в M3 вектор AINT). Чтобы освободить ячейки F3C0, F3C1, F3C2 для ненужного входа WARM BOOT, автор поставил TMPSP на F3E1,что в М2 и М3 резервный адрес COUTC (для непонятных целей введённый в М2).

    Естественно, при обратном переводе с Z80 на КР580 произведена замена JR команд на JP, убраны DJNZ, команды BIT и сдвиги регистров изменены на сдвиги в аккумуляре. Однако в п/п-мме ролика экрана, использовались команды LDI, поэтому эта часть заменена на п/п-мму ролика из М3.0 для КР580.

    В подпрограмме вывода символов в М2 и М3 до 1994 как рабочая используется ячейка OSTAT F3DD. Но в моих М3-Z80 эта ячейка не используется, вместо неё используется IXL половинка индекного регистра. Это было сделано не ради освобождения ячейки F3DD, а потому что так достигается экономия объёма кода. Естественно, при обратном переходе на КР580 пришлось изыскивать свободную ячейку. Но автор М4 не изучал разные ПЗУ для КР580 и не знал, что ячейка OSTAT F3DD именно для этих целей и служит. Поэтому он ввёл ещё одну служебную ячейку OSTAT F3F2, выполняющую ту же самую функцию, что в М1 M2 M3 КР580 выполняет ячейка OSTAT F3DD (которая в М4, естественно, свободна).

    Даже если бы не было полной идентичости кода с M3 Z80, это однозначно свидетельствует, что получено из ПЗУ для Z80. Об этом же свидетельствует использование новгородовской п/п-ммы XF81B, которая совершенно другая, чем п/п-раммы В.Сугоняко и В.Ивинских. К чести автора следует сказать, что он не просто заимствовал, а изучил код и сумел изменить константу в п/п-мме ввода с клавиатуры.

    Выкинуты все МГ-подпрограммы. Выкинута проверка и автостарт M3-EXT. Выкинут CCP М3 (п/п-мма ввода строки и конверсия HEX-текстов в их значения). Директивы I и G, как ни странно остались, но делают теперь совсем иное (не запуск с указанного адреса и не ввод с магнитофона). Их надо нажимать при сбросе.

    Внесены некоторые изменения в стандартные входы. О смещениях стандартной входной точки WBOOT я уже упоминал. П/п-ммы F81B F80F F812 оставлены векторизованными, как в М3-Z80 (что чревато проблемами с программами идиотов, что в качестве обычных ячеек хранения используют ячейки F3F0...F3FF, предназначенные для ROM-BIOS). Вместо READ RAMTOP F830 вставлена своя новая подпрограмма XXXXXX непонятного назначения. (меняет байты в банках). Вместо запроса RAMTOP теперь стоит подпрограмма INILOCK (инициализация рабочих ячеек). Это именно то, чего не хватало в М2 и М3, т.к позволяет без проблем отгружать драйвера. В моих ПЗУ это тоже есть, но входная точка не тратится (точка за 3 байта до F86C). Введена новая стандартная входная точка F842. Эта п/п-мма служит для того, чтобы задать номер банки куда будет просходить возврат из п/п-рамм RDRAM и WRRAM (чтения из записи байта в банки). Это позволяет использовать п/п-ммы F836/39 из любой банки, а не только из нулевой. Но лучше это достигается дублированием содержимого портов F8, F9, FA, FB в адресах F3F8, F3F9, F3FA, F3FB.

    Что введено? Если ROM-диск есть, то происходит выход в ORDOS. Если ROM-диска нет, то выводится промпт "? R/F/H" ?". По нажатию на R грузится ORDOS с ROM-диска, по F стартует загрузчик дисковода от ОРИОНСОФТ (адреса F710/F714 и другой оффсет байта в BOOT-секторе с номером банки ДОС). Если же нажать H, то происходит загрузка с винчестера, который установлен по адресу F750...F75F. Так как винчестер был не сильно распространён, то несложно вычислить автора этого ПЗУ М4.

    Долго "трахался", чтобы получить полноценный исходник, хотя это ПЗУ не стоило и минуты моего труда. За час можно наштамповать таких десяток, причём лучшего качества, засунув в них загрузчики чего угодно. Чтобы мой труд не пропадал впустую, я исправлю в этом ПЗУ явные ненужности и несоответствия стандартам М2 и выкину загрузчик винчестера стоящего по адресу F750, а также все добавленные нестандартные подпрограммы неизвестного назначения (это не "горит", так что сделаю такое ПЗУ позднее). Можете изучить исходник и выяснить самостоятельно зачем введены новые подпрограммы и что они полезного дают.
    Вложения Вложения
    Последний раз редактировалось barsik; 04.05.2017 в 17:04.

  2. #852

    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,234
    Спасибо Благодарностей отдано 
    490
    Спасибо Благодарностей получено 
    989
    Поблагодарили
    641 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вопрос из зала: какую задачу решает М4 ? Тобишь, что в его функционале принципиально новое относительно букета версий М3 ?
    Увеличение major-номера версии как-то обязывает как минимум к околореволюционным новшествам.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  3. #853

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Denn
    какую задачу решает М4 ?
    Вопрос не по адресу. Я только дизассемблировал с целью изучения. Сделал М4 не я.

    Кстати, есть М4 В.Воронина, который сделан, как минимум, на 5 лет раньше. Ну а задачу М4 решает, как было написано в рекламе - переход от использования магнитофона к использованию дисковода. Правда такая реклама в 2000 году опоздала лет на 10. И ту же самую задачу, запихнуть загрузчик НГМД в ROM-BIOS, решил и А.Новгородв в начале 1992 года, сделав ПЗУ 3.30-D и 3.50-D (D означает дисковод). Только он лишь добавлял, ничего не выкидывая, сохраняя CCP M3.

    В.Воронин делая свой М4, как мне кажется, хотел ввести возможность иметь стандартные подпрограммы (или упр.коды, уж не помню) для рисования на экране одинарных и двойных рамочек. Ну а как новые ПЗУ ещё называть? M1 M2 M3 заняты и у каждого из них своя концепция.

    А нумерации никогда не хватает. Сначала в 1991-92 считали десятыми (т.е по 0.10 на версию). Дошли до 3.70 (эти версии делал не я). Когда я сам стал делать версии в 1993-95, то я стал считать сотыми 3.601, 3.602... 3.701... Но и этого не хватило, тогда нумерация была продолжена после 3.13, но до 3.2. Т.е - 3.140, 3.141, 3.142...3.146, 3.150...3.153. Я странслировал сотни версий, в основном уже после 1995-96, потому они не распространены.

    Вообще-то мне сообщили, что в М4 есть п/п-мы чтения и записи сектора, что действительно имело бы смысл, т.к позволяет поднять уровень BDOS. А просто загрузчик НГМД - это действительно ничего нового.

    Должен заметить, что разработка новой версии ROM-BIOS на основе имеющегося исходника, это по сути не серьёзная работа программиста. Работу сделали В.Сугоняко и В.Ивинских в 1991. А всё позднее - это лишь перетасовка кодов, по сути ничего не меняя. Т.е мелкие улучшения вызванные тем, что появилось место, куда что-то можно "впихнуть" и возможно сделать что-то чуть-чуть лучше (например, заткнуть писк по сбросу ВИ53, включить нужным образом окно в Z80CARD-II, заменить в фонте русские большие буквы на маленькие английские и т.п).

    Цитата Сообщение от Denn
    Увеличение major-номера версии как-то обязывает как минимум к околореволюционным новшествам
    Согласен и в курсе, как фирмы нумеруют версии.

    Я всегда хотел сделать ОРИОНУ приличный ROM-BIOS, засунув туда и драйверы шрифтов 6,7 и 8 и минимальную поддержку графики (перемещение по экрану указателя от мыши с возвратом позиции по нажатию её кнопки), а также дисководные п/п-ммы. У меня есть 2-х ПЗУ-шечный ROM-BIOS (4К вторая РФ2, две банки в окне F800...FFFF) содержащий подпрограммы дисковода (РК-КНГМД), что позволяло с'экономить 2 кб для подъёма уровня TPA DOS в банке 0, где ОЗУ совсем мало и потому это было полезно.
    Последний раз редактировалось barsik; 04.05.2017 в 20:16.

  4. #854

    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,234
    Спасибо Благодарностей отдано 
    490
    Спасибо Благодарностей получено 
    989
    Поблагодарили
    641 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    Ну а задачу М4 решает, как было написано в рекламе - переход от использования магнитофона к использованию дисковода.
    Так это уже всё было в М3. И дисковод, и даже HDD.

    Вообще говоря, глубокого смысла во впихивании всего этого в тесное ПЗУ Монитора нет, т.к. в концепте Ориона заложен ROM-диск и автостарт ПО из него.

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

    Цитата Сообщение от barsik Посмотреть сообщение
    Я всегда хотел сделать ОРИОНУ приличный ROM-BIOS, засунув туда и драйверы шрифтов 6,7 и 8 и минимальную поддержку графики (перемещение по экрану указателя от мыши с возвратом позиции по нажатию её кнопки), а также дисководные п/п-ммы.
    В нативных 2 Кб нереально.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  5. #855

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Denn
    Цитата Сообщение от barsik
    Я всегда хотел сделать ОРИОНУ приличный ROM-BIOS...
    В нативных 2 Кб нереально
    Ясное дело. Речь шла о так называемом XBIOS. Тогда, в 1993-94, ОРИОНСОФТ обещала сделать оверлейный ROM-BIOS для обычного ОРИОНА, что должен был быть подверсией мощного ROM-BIOS ОРИОН-ПРО. Он должен был хранить часть кода в ROM-диске. И это было реализуемо. Просто делать не стали. Поболтали в рекламе и забыли.

    А я реально поставил в ОРИОН ПЗУ 27256 и даже двумя способами, каждый из которых поддержал программно. Первый вариант, это когда большое ПЗУ прокачивается кусками по 2К в окне F800...FFFF. Какой байт выкинули в порт FC, такой 2-х килобайтовый кусок и "виден" в окне F800.

    Второй вариант уже использовал так называемое "теневое ПЗУ" в окне 0...7FFF. Причем ПЗУ F800...FFFF тоже бралось из этого 27256 (старшие 2К). Это теневое ПЗУ всё-время было как-бы в тени ОЗУ и не читалось. Но при его включении появлялось, и оттуда XBIOS работал с экраном. Это существовало с 1995, но спроса уже не было. Причём, была версия и для ОЗУ, грузящаяся из ROM-диска в банку 0 на адреса 0...7FFF (что годилось только для ДОС в банке 1). И там были графические подпрограммы (для перемещения курсоров мыши) и даже графический язык. Вот потому-то на всех моих ОРИОНАХ стоит вторая панелька на 28 ног, куда впоследствии оказалось удобно ставить 62256.

    Впоследствии, когда ОРИОН успешно помер, всё это было мной выкинуто и остался только драйвер D8, на котором я и делал нортоны для всех DOS. Хотя драйвер D7 тоже приятный. Ради него я даже в 1998 сделал экран 448 (64 символа 7*10) и этот режим 448 даже поддерживался в моих эмуляторах до 2000 года. Это из-за того, что 10 МГЦ я не мог иметь, а 8.5-9 МГЦ мог (не было Z80H). А при таком пиксель-клоке растр в 480 точек уже не влезает в экран, а 448 как-раз влезает.

    Почему в новоделах ОРИОНА не поставили такое теневое ПЗУ? Это самая разумная доработка и нужна в первую очередь для фанатов ORDOS и для других DOS в банке 0 (т.к для DOS в других банках драйвер шрифта может работать и из ОЗУ). Если когда-нибудь, где-нибудь будет ОРИОН с большим ПЗУ, с удовольствием странслирую для него ROM-BIOS.
    Последний раз редактировалось barsik; 04.05.2017 в 19:04.

  6. #856

    Регистрация
    08.02.2015
    Адрес
    г. Санкт-Петербург
    Сообщений
    242
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    Если ROM-диска нет, то выводится промпт "? R/F/H" ?". По нажатию на R грузится ORDOS с ROM-диска
    это как такое возможно?

  7. #856
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #857

    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,234
    Спасибо Благодарностей отдано 
    490
    Спасибо Благодарностей получено 
    989
    Поблагодарили
    641 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Stampmaker Посмотреть сообщение
    это как такое возможно?
    Автоматика ROM-диск не обнаружила, но шанс есть...
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  9. #858

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Stampmaker
    Цитата Сообщение от basik
    Если ROM-диска нет, то выводится промпт "? R/F/H" ?". По нажатию на R грузится ORDOS с ROM-диска
    это как такое возможно?
    Всё так и есть. Сами смотрите в листинге. Когда мы нажали СБРОС и вывалились в запрос каманды R/F/H, то пока длится CONIN у нас достаточно времени, чтобы подключить ROM-диск и только потом нажать <R>. ROM-диск в М3 определяется по наличию байта C3 в ROM-диске по адресу 7FD, а в М2 с затратой большего числа байтов (чтением двух первых байтов ROM-диска и если они не равны, значит ROM-диск есть).

    Если же при сбросе удерживать клавишу <G> или <I>, то игнорируя наличие ROM-диска будет загрузка с винта или из флопа. Причём при последующих нажатиях на кнопку СБРОС ничего уже удерживать не надо, т.к первое нажатие запомнится в последней ячейке ОЗУ F3FF и автоматически будет происходить загрузка из того-же устройства.

    Код:
    .
    	CALL	XF81B
    	INC	A
    	LD	HL,0F3FFH
    	JP	Z,NOPRES
    	LD	(HL),A
    NOPRES:	LD	A,(HL)
    	CP	'G'
    	JP	Z,DIR_F
    	CP	'I'
    	JP	Z,DIR_H
    ORDOS:
    	LD	DE,0BFFFH	; загрузка ORDOS c ROM-диска и старт
    	LD	HL,7FDH
    	LD	(DOPPPA+1),HL
    	LD	A,(DOPPPA)
    	CP	0C3H
    	JP	NZ,NOROMD	; если в ROM-диске на 7FD не байт C3
    	LD	L,E
    L30:	LD	(DOPPPA+1),HL
    	LD	A,(DOPPPA)
    	LD	(DE),A
    	DEC	DE
    	DEC	HL
    	LD	A,H
    	OR	A
    	JP	P,L30
    	JP	0BFFDH
    	
    ; ──────────────────────────────────────────────
    
    TITR:	defb	1FH,'?'
    	defb	13,10,'R/F/H ?',0
    
    NOROMD:	LD	HL,TITR
    	CALL	MSSG
    	CALL	MCONIN
    	CP	'R'
    	JP	Z,ORDOS
    	CP	'H'
    	JP	Z,DIR_H
    	CP	'F'
    	JP	NZ,NOROMD
    DIR_F:	LD	A,0D0H		; команда ПРИНУДИТЕЛЬНОЕ ПРЕРЫВАНИЕ
    	CALL	EXECW
    
    	. . . . . . . .
    Последний раз редактировалось barsik; 05.05.2017 в 16:23.

  10. #859

    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,234
    Спасибо Благодарностей отдано 
    490
    Спасибо Благодарностей получено 
    989
    Поблагодарили
    641 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На самом деле, как выяснилось, если код загрузчика в ПЗУ ROM-диска начинается с двух одинаковых байтов, то автостарт не произойдёт.
    И такая ситуация вполне возможна.
    Например, мы стандартно делаем вначале переход на стартовый код: JMP START
    При этом физически метка START будет иметь адрес B8C3h. В итоге в кодах будет так: C3 C3 B8...
    Вот и напоролись (( Автоматика не выполнит автозапуск такого загрузчика. Придётся мануально.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  11. #860

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Denn
    Автоматика M2 не выполнит автозапуск такого загрузчика
    Такое бывает только с монитором-2. Смотрите мой предыдущий пост. Вот потому-то монитор-3 по всем позициям всегда лучше.

    Есть проблема из-за М2. Дело в том, что в М1 и М2 по-дурацки сделан вывод символов. Там сначала выводится 8 линий из фонта, а затем два нуля. Это приводит к тому, что символ не по центру знакоместа, а придвинут кверху. Поэтому балка подсветки инверсией получается некрасивой и рисовать рамки псевдографикой нельзя (оттого их при М2 всегда рисуют внаглую). В М3.0 и 3.1 сделано также но, в M3.11 и последующих М3 сделано не так. Там сначала выводится ноль, затем фонт 6*8 и затем снова ноль. От этого символ выводится по центру знакоместа. При этом число выводимых линий сокращено до 9, отчего шрифт в балке подсветски оказывается сцентрованным. Если выводить только стандартный фонт или загружать свой фонт, но весь, то никаких проблем не возникает.

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

    Такая же проблема с KEYALT$, т.к он тоже загружает только часть фонта, а не весь (исправление таких программ, это исправление одного байта). Естественно, KEYALT$ тоже имеется исправленный.

    Вопрос с позицией символа в знакоместе (т.е делать по центру или смещённым, как в М2) сейчас актуален. Т.к я не знаю как лучше сделать в перетранслированных версиях М1 М2 М3 для КР580 и Z80.

    Кстати, интересный вопрос, кто написал KEYALT$ - авторы ОРИОНА в 1992, или омские луксиане в 1993? До 1994 никакого KEYALT$ не было, смотрите дистрибутивы. Омские луксиане прислали мне KEYALT$ в 1994 и сообщили, что они его авторы. И я всегда так и считал, пока не нашел недавно док-файлы, где указано, что это разработка авторов ОРИОНА, причём 1992 года. Или это разные KEYALT-ы. Но почему оверлей имеет тоже самое имя FT01?
    Вложения Вложения
    Последний раз редактировалось barsik; 05.05.2017 в 16:55.

Страница 86 из 137 ПерваяПервая ... 828384858687888990 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Специалист: Разное
    от Splinter в разделе Специалист
    Ответов: 171
    Последнее: 09.05.2018, 07:50
  2. Видео про спекрум новое разное
    от AAA в разделе Новости
    Ответов: 19
    Последнее: 05.08.2016, 22:57
  3. Куплю Поиск, Радио - 86, Орион, БК
    от luzanov в разделе Барахолка (архив)
    Ответов: 23
    Последнее: 03.04.2007, 17:50
  4. Ответов: 4
    Последнее: 05.10.2006, 20:18
  5. Я готов купить Радио и Орион
    от Shaos в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 18.12.2005, 22:15

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •