|
nedoPC.orgCommunity for electronics hobbyists, established in 2002 |
|
Author |
Message |
Asgard
Novelist
Joined: 21 Aug 2018 03:21 Posts: 45 Location: Дальний Восток
|
Барсик выше написал "что ВВ55 и РФ2 включены по схеме ROM-диска ОРИОНА и РК86." И там и там ТТЛ уровни, прошивка из РЕ3 перезапускает ТМ8 одновременно идет на вход С ТМ2. Где недопустимость ? Если есть сомнение в правильности восстановленной схемы, можете посмотреть кусочек узла сами. Хочу напомнить, схема восстанавливается с оригинальной платы КНГМД "ЭЛИС", который провел 28 лет в забвении. И высказывание по крайней мере не уместны. Я не "рисую" схему или прошивку на листочке карандашиком с головы. Я думаю, Вам стоит перечитать тему с самого начала.
|
18 Sep 2018 03:53 |
|
|
Asgard
Novelist
Joined: 21 Aug 2018 03:21 Posts: 45 Location: Дальний Восток
|
Зачетный секретный девайс Провел "бесчеловечный" опыт по чтению РТ5 в программаторе MiniPro, Барсик, можете посмотреть/оценить адекватность считанной прошивка с РТ5 ? Мне нужна подсказка по чтению РЕ3 в моем программаторе.
|
18 Sep 2018 04:11 |
|
|
barsik
Doomed
Joined: 19 Feb 2017 03:46 Posts: 583 Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
|
Посмотрел ПЗУ РФ2 из платы КНГМД. Там занято лишь небольшая часть ПЗУ и судя по титрам содержит DISK LOADER, причём версии 0.2. По сбросу ROM-BIOS считывает из ROM-диска (стоящего по I/O-адресу 58H) содержимое ROM-диска на адрес B000 и делает запуск этого кода с адреса B001 (на адресе 0000 ПЗУ стоит байт 55H, это признак ROM-диска). Этот код из ПЗУ перегруженный и запущенный с адреса B001 грузит из этого же ROM-диска 2 кб с адреса 0022 в ПЗУ на адрес D000 в ОЗУ и запускает считанный код с адреса D010. Видимо адрес B000 (загрузку куда выполняет ROM-BIOS) был неудобен для CP/M, потому сделали двойной загрузчик. Disk Loader 0.2 | | | | Code: ; Код ПЗУ КНГМД расположенный с адреса 0022, ; который грузится на D000 программой с B000
.Z80 aseg ORG 100H
.phase 0D000H
PPA EQU 58H VG93 EQU 50H
CONIN EQU 0F803H COUT_C EQU 0F809H HEX_A EQU 0F815H MSSG EQU 0F818H
; ----------------------------------------------
MSG MACRO ADDR LD HL,ADDR CALL MSSG ENDM ; ----------------------------------------------
AD000: IN A,(VG93+3) ; чтение байта и запись на (DE++) LD (DE),A INC DE JP AD008
; ----------------------------------------------
N_POVT: defb 0
; ----------------------------------------------
AD008: IN A,(PPA) ; ожидание готовности по биту D3 LD L,A JP (HL)
; ----------------------------------------------
RET ; возврат из загрузки сектора
; ----------------------------------------------
defb 0,0,0
; ----------------------------------------------
AD010: LD SP,0E400H
LD A,00100001B ; 0010 0001 сегменты 0 и 4000 OUT (0),A LD A,00110101B ; 0011 0101 сегменты 8000 и С000 OUT (1),A MSG TITR CALL AD1A6 LD HL,100H LD (CURADR),HL XOR A LD (TRACK),A INC A LD (SECTOR),A
AD032: CALL AD113 AND A JP NZ,GETKEY
AD039: LD A,(AD1F1) ADD A,4 LD (AD1F1),A ; это лишнее LD A,(SECTOR) INC A LD (SECTOR),A CP 6 JP C,AD032 LD A,1 LD (SECTOR),A LD A,(TRACK) INC A LD (TRACK),A CP 2 JP C,AD032 MSG T_WK LD HL,(100H) LD DE,7ECFH ; на 100H д.быть байты 31,81 ADD HL,DE LD A,H OR L JP Z,100H ; если считаны байты 31 81 стартуем MSG TNOBOO
AD076: CALL CONIN AND 5FH CP 'A' JP Z,0F836H CP 'R' JP Z,AD010 ; повторить загрузку LD C,7 CALL COUT_C ; гудок JP AD076
; ----------------------------------------------
GETKEY: CALL CONIN AND 5FH CP 'A' JP Z,0F836H ; Abort CP 'R' JP Z,AD032 ; Repeat CP 'I' JP Z,AD039 ; Ignore CP 'B' JP Z,AD010 ; Restart LD C,7 CALL COUT_C ; гудок JP GETKEY
; ----------------------------------------------
AD0AE: LD A,(SPEED) AND A LD B,18H LD HL,AD1EA JP Z,AD0BD INC HL LD B,28H
AD0BD: LD (AD1EC),HL LD A,(TRACK) RRA LD (AD1F2),A RRA RRA AND 01000000B OR B LD B,A OUT (PPA+2),A LD A,92H OUT (PPA+3),A ; режим ППА LD A,B OUT (PPA+2),A IN A,(PPA+1) LD C,A LD A,90H OUT (PPA+3),A ; режим ППА LD A,B OR 10000000B OUT (PPA+2),A LD A,C RRCA RET NC LD H,4DH CALL PAUSHL RET
; ----------------------------------------------
AD0EB: EX DE,HL LD HL,(CURADR) EX DE,HL LD A,(SECTOR) OUT (VG93+2),A LD A,(TRACK) AND 1 RLCA RLCA RLCA RET
; ----------------------------------------------
AD0FE: CALL READY
LD A,0 OUT (VG93),A CALL READY LD H,4DH CALL PAUSHL XOR A LD HL,(AD1EC) LD (HL),A RET
; ---------------------------------------------------------------------------
AD113: LD A,9 LD (N_POVT),A CALL AD0AE
AD11B: CALL AD188 LD HL,AD000 LD A,L ; A=0 OUT (PPA+1),A CALL AD0EB OR 10000110B CALL READY OUT (VG93),A CALL AD008 PUSH HL ; задержка POP HL IN A,(VG93) AND A JP Z,@RET LD (KORR_1),A ; здесь корректируется код программы CALL AD0FE LD A,(N_POVT) DEC A LD (N_POVT),A JP NZ,AD11B LD A,1 PUSH AF MSG T_ERR
KORR_1 EQU $+1
LD A,0 ; не 'XOR A' т.к здесь корректируется код CALL HEX_A MSG T_TRK LD A,(TRACK) CALL HEX_A MSG T_SEC LD A,(SECTOR) CALL HEX_A MSG T_ARIB POP AF @RET: RET
; ----------------------------------------------
PAUSHL: LD L,0 CALL PAUS_L DEC H RET Z JP PAUSHL
; ----------------------------------------------
PAUS_L: DEC L PUSH HL POP HL RET Z JP PAUS_L
; ----------------------------------------------
AD188: LD HL,(AD1EC) LD A,(HL) OUT (VG93+1),A LD HL,AD1F2 CP (HL) RET Z LD A,(HL) LD HL,(AD1EC) LD (HL),A OUT (VG93+3),A CALL READY LD A,10H OUT (VG93),A CALL READY RET
; ----------------------------------------------
RET
; ----------------------------------------------
AD1A6: DI LD A,90H OUT (PPA+3),A ; режим ППА LD A,0D0H OUT (VG93),A LD A,10011000B OUT (PPA+2),A LD H,4DH CALL PAUSHL XOR A OUT (VG93),A CALL READY LD A,14H OUT (VG93+3),A LD A,0AH OUT (VG93),A CALL READY LD A,40H OUT (VG93),A CALL READY XOR A OUT (VG93),A LD (AD1EA),A CALL READY LD A,5 CALL PAUS_L RET
; ----------------------------------------------
READY: PUSH AF ; ждём готовность ВГ93 AD1E0: IN A,(VG93) AND 1 JP NZ,AD1E0 POP AF RET
; ----------------------------------------------
SPEED: defb 0 AD1EA: defb 0 defb 0 AD1EC: DW 0000 TRACK: defb 0 SECTOR: defb 1 CURADR: defb 0 AD1F1: defb 1 AD1F2: defb 0
TITR: defb 1BH,39H,9,9,1BH,33H,'Disk loader 0.2',1BH,32H T_WK: defb 13,10,0
T_ERR: defb 13,10,'BOOT I/O Err.-',0
T_TRK: defb ' T-',0 T_SEC: defb ',S-',0 T_ARIB: defb '; (A,R,I,B): ',0
TNOBOO: defb 13,10,'NON-BOOTABLE DISK, (A,R): ',0
; ----------------------------------------------
rept 0D800H - $ defb 255 ENDM .dephase END
| | | | |
Из вышеприведённого листинга можно понять принцип за счёт которого разработчики "Элис" преодолели проблему недостаточного быстродействия КР580 на такте 2 МГЦ. Идея ясна из процедур AD008 (петля ожидания готовности) и AD000 (чтение байта). РТ5 в "Элис" используется или как кодопреобразователь или как коммутатор режимов. В обоих случаях визуально в коде ничего не понять. Надо анализировать схему совместно с побитово изображённой прошивкой. По дампу можно лишь проверить, что на тех выходах, что задействованы в схеме, сигналы хоть как-то меняются. По идее на одни входы РТ5 д.быть заведены RGB с выходов сдвиговых регистров трёх плоскостей, а на другие адресные входы д.быть заведены управляющие сигналы - или выбор палитры или выбор видео-режима (в зависимости от того для чего конкретно в данной схме используется РТ5). К сожалению, я очень слаб в схемотехнике, я лишь видел в двух компьютерах (один из которых ИРИША), что там на видеовыходе стоял кодопреобразователь на РТ5.
Last edited by barsik on 18 Sep 2018 18:29, edited 7 times in total.
|
18 Sep 2018 05:02 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Да тут просто вроде все. Находите в списке самую минимальную ПЗУ-шку, которую может программатор, например 2716. Ну а дальше соединяем адреса с адресами, то есть A0 к A0 РЕ3, A1 к A1 РЕ3 и тд до A4. А данные с данными, то есть D0 на D0 и тд. Только данные не забываем подтянуть к питалову, а то у РЕ3 афаик выход - открытый коллектор. CS у РЕ3 кидаем на /CE 2716. Вроде все. Читаем в программаторе как 2716. В дампе оставляем первые 32 байта - это и есть прошивка РЕ3. Остальной мусор отрезаем в любом шестнадцатеричном редакторе.
|
18 Sep 2018 05:12 |
|
|
Asgard
Novelist
Joined: 21 Aug 2018 03:21 Posts: 45 Location: Дальний Восток
|
Вот оно что волшебные резисторы подтяжки питалова, а то думаю что за Х происходит. Как я про них забыл
|
18 Sep 2018 05:33 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
У РТ5 кстати тоже выходы - открытый коллектор, тоже тянуть к верху надо.
|
18 Sep 2018 05:47 |
|
|
Asgard
Novelist
Joined: 21 Aug 2018 03:21 Posts: 45 Location: Дальний Восток
|
Поколдовал с проводками и программатором, прочитал РЕ3. Посмотрите пожалуйста, есть адекватность в содержимом ?
|
18 Sep 2018 06:54 |
|
|
Asgard
Novelist
Joined: 21 Aug 2018 03:21 Posts: 45 Location: Дальний Восток
|
То есть позволяет использовать СР/М, интересно, другой формат чтения/записи на диск в контроллере есть ? Так на схеме и есть, в основном сигналы идут с порта ВВ55, и туда же приходят сигналы со сдвигающих регистров ИР1 (возможно RGB и есть). На выходах РТ5 резисторный смеситель и транзисторы стоят, схему пока не срисовывал. Так же этот порт ВВ55 управляет или что-то пишет в оперативную память. Жаль нет "Руководства системного программиста", туда все ссылки из инструкции, там , кстати описано назначение переключателей.
|
18 Sep 2018 08:13 |
|
|
Mixa64
Doomed
Joined: 25 Aug 2009 07:02 Posts: 469 Location: Москва
|
Спасибо. Тему смотрел бегло, видимо, упустил. Внимательно углубляться - у меня такой цели нет , просто замечания по ходу, принимать их или не принимать - Ваше дело, зависит от целей. Если есть возможность или потребность причесать конструкцию, то почему бы и нет. На выходе ПЗУ при переключении адресных входов возможны ложные перепады уровней, что может вызывать ложное перекидывание ТМ2. Если в серийном изделии все работает - значит, повезло. Но обычно так не делают.
|
18 Sep 2018 13:34 |
|
|
barsik
Doomed
Joined: 19 Feb 2017 03:46 Posts: 583 Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
|
.Принцип преодоления нехватки скорости КР580 на такте 2 МГЦ другой, чем в четырёх ранее известных вариантах КНГМД для Специалиста. Принцип тут очень оригинальный и заключается в том, что для анализа сигналов на выводах ВГ93 сами эти биты задают адрес перехода программы. Это позволяет ускорить реакцию на готовность при считывания байтов из ВГ93. Биты DRQ и INTRQ напрямую задают адрес перехода в команде JP (HL), для чего эти биты размещаются в нужных разрядах буфера, через который эти биты читаются. Конкретно здесь адрес перехода в зависимости от состояния выводов DRQ, INTRQ ВГ93 - получается или D000, или D008, или D00C. Т.е управление происходит битами D2 и D3 читаемыми через буфер (в роли которого используется порт А ППА при неактивном РФ2). Адрес AD008 - это вход в процедуру ожидания готовности. При неготовности бит D3=DRQ=1 и соответственно HL равен D008, отчего просто крутится цикл (пока DRQ не станет нулём). Так ожидается готовность. Таким образом анализ готовности происходит неявно, т.е на это не тратится команда процессора, что и обеспечивает возможность работы на низкой частоте процессора. При наступлении готовности в HL оказывается адрес D000, и после команды JP (HL) и перехода на AD000 из ВГ93 считывается байт (туда, куда указывает DE) и снова программа переходит на AD008 для ожидания следующего байта. В этих процедурах мы не видим проверки на считанное число байтов. По окончании считывания последнего байта сектора (или по ошибке) из PA считается не 08, а 0C, т.к возникнет сигнал INTRQ. По JP (HL) произойдёт переход на D00C, где стоит RET и считывание сектора заканчивается. Теперь ясно, что ранее я был неправ в назначении ППА. А именно ППА применён не только для целей ROM-диска (это как раз побочное использование, раз уж ППА уже есть), а является частью самого КНГМД (т.к через него читаются сигналы с выводов ВГ93). Т.е этот ППА (его порт А) используется в качестве буфера для чтения сигналов DRQ и INTRQ. Причём и распределение битов DRQ и INTRQ в этом буфере сделано хитро, а именно по битам D3 и D2. Обратите внимание на странное включение резисторов на входах PA0...PA7. По идее, когда РФ2 неактивно, на всех входах, кроме PA2 и PA3, должны как-то устанавливаться нули. Только тогда из порта PA будут читаться требуемые 00, 08 и 0C. Кстати, чтобы по битам D2 и D3 при считывании РФ2 через ППА выходы ВГ93 не мешали, использованы резисторы. Кстати, ранее был известен другой вариант использования выхода DRQ (в каком-то отечественном компьютере). Там бит DRQ входит прямо в программу, - при его изменении меняется сам код программы. При неготовности прогоняется цикл ожидания, а по готовности код команды меняется, отчего происходит выход из цикла ожидания и выполняется команда считывания байта из ВГ93 (или запись в ВГ93). Нужно считать маш.такты, чтобы понять какой вариант по скорости более выгодный. Но вариант "Элиса" не только более оригинальный или можно сказать более извращённый, но и выгоднее аппаратно (т.к не нужна схемотехника для включения бита DRQ в код программы).
|
18 Sep 2018 16:10 |
|
|
Asgard
Novelist
Joined: 21 Aug 2018 03:21 Posts: 45 Location: Дальний Восток
|
Кто в лес, кто по грибы Ложные срабатывания... фантомные куски кода..... искусственный интеллект в 32х битах 155РЕ3 Вы не стесняйтесь, спросите у сообщества З.Ы. подсказка - подтягивающий резистор... Сам давеча погрешил
|
19 Sep 2018 02:54 |
|
|
Asgard
Novelist
Joined: 21 Aug 2018 03:21 Posts: 45 Location: Дальний Восток
|
Мне не понятно назначение этих резисторов (между ШД и ША РФ2), думал что ошибся при рисовании схемы. Еще не понятно, что за сигнал идет с РВ0 ВВ55 (А0 на РФ2) через резистор на дисковод, туда же подмешивается РС7 ВВ55 через транзисторы и элемент ЛА13. На схеме со стороны дисковода 20й контакт.
|
19 Sep 2018 03:08 |
|
|
Клапауций
Banned
Joined: 29 Jun 2018 08:48 Posts: 413
|
если речь идёт о цифровых линиях передачи данных, то резисторы дели на две категории - подтягивающие и проходные. подтягивающие применяются, когда нужно определить уровень линии в нужный логический уровень, когда линия находится в неуправляемом состоянии. проходные применяются, когда нужно согласовать уровни логических сигналов - если они выходят за допустимые пределы при использовании разнокалиберного зоопарка источников/приёмников логического сигнала. *возможно я не вижу всей высоты глубины дна проблем, преследующих сабж и резисторы там что-то ещё делают.
|
19 Sep 2018 03:35 |
|
|
Mixa64
Doomed
Joined: 25 Aug 2009 07:02 Posts: 469 Location: Москва
|
А иголки на выходе у 556РТ5, 556РТ4, 155РЕ3 осциллографом никогда не видели? Я видел. Вполне себе такой импульс, перекидывающий ТМ2. Объясняю подробнее. Внутри ПЗУ есть адресный дешифратор, который при изменении кода адреса, скажем, Адр1 на Адр2 переходит в состояние выбора другой ячейки, но во время перехода может пройти через промежуточное состояние выбора третьей ячейки, отличной от Адр1 или Адр2. И если содержимое ячеек Адр1 и Адр2 на выходе дает "1", а содержимое третьей ячейки на выходе дает "0", то на выходе вместо постоянной "1" будет наблюдаться "1" с очень коротким "0" в момент смены кода адреса. Поэтому выходами ПЗУ никогда не управляют входами, чувствительными к перепаду напряжения. Могут быть ложные срабатывания.
|
19 Sep 2018 04:04 |
|
|
Asgard
Novelist
Joined: 21 Aug 2018 03:21 Posts: 45 Location: Дальний Восток
|
Да Бог сними, с этими иголками. Через 28-30 лет сложно представлять, чем мотивировался создатель схемы - "нестабильностью стабильной системы" или трудностями с наличием деталей. Лепили из того что было.
|
19 Sep 2018 04:30 |
|
|
Who is online |
Users browsing this forum: No registered users and 2 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|