Загадки и странности родного Монитора РК

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Re: Загадки и странности родного Монитора РК

Post by b2m »

Был вопрос, почему вызывается два раза. Ответ я дал:
b2m wrote:Между двумя вызовами очищается экран и выводится строка "Радио-86РК". И вот представь, что первого вызова нет, т.е. нет регенерации. Вполне возможно, что пока очищается экран, ОЗУ регенерируется, поскольку адреса перебираются подряд. А вот в момент вывода строки этого нет. Я замерил, вывод строки примерно 9500 тактов, это примерно 5,3 мс, то есть не укладываемся в 2мс. То есть первый вызов необходим. Зачем тогда второй вызов? А затем, что пока мы очищали экран, там был мусор. Но ВГ-шка уже чего-то выводила и синхронизация вполне могла сбиться из-за служебных кодов в диапазоне F0-FF. Так что второй вызов тоже нужен, он задаёт правильную синхронизацию.
Остальное всё лирика.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Загадки и странности родного Монитора РК

Post by Lavr »

b2m wrote:Был вопрос, почему вызывается два раза. Ответ я дал:
b2m wrote:Между двумя вызовами очищается экран и выводится строка "Радио-86РК". И вот представь, что первого вызова нет, т.е. нет регенерации. Вполне возможно, что пока очищается экран, ОЗУ регенерируется, поскольку адреса перебираются подряд. А вот в момент вывода строки этого нет. Я замерил, вывод строки примерно 9500 тактов, это примерно 5,3 мс, то есть не укладываемся в 2мс. То есть первый вызов необходим. Зачем тогда второй вызов? А затем, что пока мы очищали экран, там был мусор. Но ВГ-шка уже чего-то выводила и синхронизация вполне могла сбиться из-за служебных кодов в диапазоне F0-FF. Так что второй вызов тоже нужен, он задаёт правильную синхронизацию.
Остальное всё лирика.
Ответ тут коллега Paguo-86PK сразу дал... а ты лишь поиграл в капитана Очевидность... аж 2 раза! :wink:
iLavr
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: Загадки и странности родного Монитора РК

Post by Alekcandr »

Я чего-то утратил мыслЬ между синхронизацией?, и дальнейшего потока мыслей.

З.ы. напомню
Alekcandr wrote:Так-то паттерны разные бывают. Наши микрухи (особенности схемотехники) устойчиво выдавали после включения такое.
?

давайте подумайте? С чего так стабильно.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Re: Загадки и странности родного Монитора РК

Post by b2m »

Lavr wrote:Ответ тут коллега Paguo-86PK сразу дал... а ты лишь
А я лишь попытался дать более развёрнутый ответ. Могло ведь мне показаться, что вопрошающий ещё неудовлетворён ответом?
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Paguo-86PK
Maniac
Posts: 267
Joined: 12 Apr 2011 20:43
Location: Tashkent

Re: Загадки и странности родного Монитора РК

Post by Paguo-86PK »

Lavr wrote:Вот я тоже сначала так подумал, не глядя в код, а потом посмотрел, что "второй раз, если нужно выйти в монитор,
но не надо очищать область монитора
" эту подпрограмму как раз-таки не вызывают:

Code: Select all

...
;-------------------- Стек установлен на 76CFH
     LXI  SP,NEWSP   ;F83B  31 CF 76 ; установка стека
;-------------------- ВГ75 и ВТ57 настраивают и запускают в работу вывод на дисплей
     CALL MF82D      ;F83E  CD CE FA ; настройка CCRT и ПДП
;-------------------- Вся служебная область монитора заполняется 00H
     LXI  H,ADVID    ;F841  21 00 76 ; 7600H - начало служебной области
     LXI  D,L765F    ;F844  11 5F 76 ; 765FH = 00H 96 байт
     MVI  C,00H      ;F847  0E 00    ; служебные ячейки Монитора до 76CFH
     CALL CFILL      ;F849  CD ED F9 ; заполнение HL-DE байтом C
;-------------------- Значение стека сохраняют, но читают косвенно как POP
     LXI  H,NEWSP    ;F84C  21 CF 76
     SHLD BOXSP      ;F84F  22 1C 76
;-------------------- Вывод заставки с позиции 77C2H ScreenHOME - 1FH;
     LXI  H,MFF5A    ;F852  21 5A FF ;--- 1FH,'radio86-rk',00H
     CALL MF818      ;F855  CD 22 F9 ;--- Вывод на экран ASCII-Z строки HL
     CALL MF82D      ;F858  CD CE FA ;--- Запуск индикации на экране
;-------------------- Установка верха доступного ОЗУ 75FFH
     LXI  H,RAMHI    ;F85B  21 FF 75
     SHLD MEMHI      ;F85E  22 31 76
;-------------------- Установка констант чтения и записи на маг.ленту
     LXI  H,C1D2A    ;F861  21 2A 1D
     SHLD CONSR      ;F864  22 2F 76
...
Вoт с этого у меня и началось вот тут!

Code: Select all

;-------------------- Стек установлен на 76CFH
     LXI  H,NEWSP    ;F84C  21 CF 76
     SHLD BOXSP      ;F84F  22 1C 76
     SPHL            ;F83B     F9    ; установка стека
;-------------------- ВГ75 и ВТ57 настраивают и запускают в работу вывод на дисплей
     CALL MF82D      ;F83E  CD CE FA ; настройка CCRT и ПДП
;-------------------- Вся служебная область монитора заполняется 00H
     LXI  H,RAMHI    ;F85B  21 FF 75
;-------------------- Установка верха доступного ОЗУ 75FFH
     SHLD MEMHI      ;F85E  22 31 76
     INX  H
     LXI  D,L765F    ;F844  11 5F 76 ; 765FH = 00H 96 байт
     MOV  C,L        ;F847     4D    ; служебные ячейки Монитора до 76CFH
     CALL CFILL      ;F849  CD ED F9 ; заполнение HL-DE байтом C
;-------------------- Значение стека сохраняют, но читают косвенно как POP
;-------------------- Вывод заставки с позиции 77C2H ScreenHOME - 1FH;
     LXI  H,MFF5A    ;F852  21 5A FF ;--- 1FH,'radio86-rk',00H
     CALL MF818      ;F855  CD 22 F9 ;--- Вывод на экран ASCII-Z строки HL
     CALL MF82D      ;F858  CD CE FA ;--- Запуск индикации на экране
;-------------------- Установка констант чтения и записи на маг.ленту
     LXI  H,C1D2A    ;F861  21 2A 1D
     SHLD CONSR      ;F864  22 2F 76
И я стал понимать, что могу переписать практически весь Монитор подобной оптимизацией, но сохранив практически полную совместимость со всем ПО.

P.S.: Как настроение появится, начну переписывать код с FE01 до FF51, чтобы на 100% всё переписать.
А то на 96% застрял…