PDA

Просмотр полной версии : Компьютер "Кристалл 2"



GrifonLeo
17.04.2012, 06:37
Не знаю куда разместить
Нашел у себя сканы схемы "Кристалл-2" и дампы ПЗУ
Этот компьютер участвовал на радиовыставке 1987 г.

Авторы:
Сугоняко В.П. (UV3DED)
Виноградов А.С.
Московская обл.
г. Ногинск
1987 г.

Mick
17.04.2012, 06:58
Не знаю куда разместить
Нашел у себя сканы схемы "Кристал-2" и дампы ПЗУ
Компьютер авторов РК-86
Этот компьютер участвовал на радиовыставке 1987 г.

Можешь сюда, предварительно ужав, либо на любой файлообменник.
Так что ждемс. :)

GrifonLeo
17.04.2012, 07:11
И вторая часть
На яндекс не выкладывается :(

Авторы:
Сугоняко В.П. (UV3DED)
Виноградов А.С.
Московская обл.
г. Ногинск
1987 г.

GrifonLeo
17.04.2012, 09:15
Вот все полностью на народе
http://narod.ru/disk/46334826001.ee78ec8da7b58f796488f40322d22560/Kristall-2.rar.html

Mick
17.04.2012, 20:38
Вот все полностью на народе
http://narod.ru/disk/46334826001.ee78ec8da7b58f796488f40322d22560/Kristall-2.rar.html

Посмотрел документацию, достаточно редкая машина аж от самого автора Ориона. Но он не относится к Радио-86 совместимым.
Поэтому перенесем обсуждение этого компа в соотвествующую тему.

BYTEMAN
20.04.2012, 11:53
Ещё я доки не качал, но добавлю, что от авторов Ориона ещё была какая-то машина "Дельта", о которой я нашёл упоминания на орионовском диске от CHRV. Инфы тоже нуль.

b2m
20.04.2012, 12:25
Интересно, что в этих доках упоминается ОС Дельта-А.

---------- Post added at 13:25 ---------- Previous post was at 13:23 ----------

На мой взгляд, этот компьютер больше похож на Микро-80/ЮТ-88. Я бы даже сказал, что это то, с чего лепили ЮТ-88, хотя ПО Кристалла они не взяли. Может просто не достали. :)

Atari
20.04.2012, 12:48
ЮТ-88 это вообще полная калька с Микро-80, а тут похоже попытались избавиться от всякой шелухи.
Еще раз убеждаюсь, что самым гениальным творцом таки был Волков, а остальные только копипи...дили.

BYTEMAN
20.04.2012, 12:56
самым гениальным творцом таки был Волков
это Специалист?

Atari
20.04.2012, 13:14
это Специалист?
ДА!
хоть и не цветная но графика в синхроне с процом, простейший набор микросхем, отличная схемотехника.
Разработчикам Ориона потом больше ничего не оставалось как с3.14... всю эту красоту.

BYTEMAN
20.04.2012, 13:15
Разработчикам Ориона потом больше ничего не оставалось как с3.14... всю эту красоту.
Орион крут :)

vinxru
20.04.2012, 13:17
Вы меня заинтересовали. Моя слабость редкие машины :)

Ушел читать доки.

Atari
20.04.2012, 13:19
Орион крут :)
Собственно теперь вот нашлось недостающее звено в истории Ориона.

---------- Post added at 12:19 ---------- Previous post was at 12:18 ----------


Ушел читать доки.
читать там нечего, там надо только со схемой разобраться (видеовывод 64х32), мне кажется, что куска не хватает.

b2m
20.04.2012, 13:33
мне кажется, что куска не хватает.
Там три части, на стыках нехватает примерно по сантиметру.

vinxru
20.04.2012, 13:58
видеовывод 64х32

В Радио 86РК и Микро-80 то же было написано это разрешение. Но реально отображается лишь 25 строк.

Пересчитал 27,5 строк


http://tmaplatform.ru/vinx_home_page/micro80_dis.jpg

b2m
20.04.2012, 14:11
Да, похоже это действительно упрощённая версия Микро-80. На которой Сугоняко тренировался в написании своей ОС, а потом была написана ордос. Непонятно, чем его сипиэм не устроил...

vinxru
20.04.2012, 14:38
Подозреваю, что при записи в видеопамять так же на экране помехи, как и Микро-80

В отличии от Микро-80, тут из видеопамяти можно читать значения.

---------- Post added at 14:26 ---------- Previous post was at 14:22 ----------

Схемотехника больше похожа на ЮТ-88

http://jtdigest.narod.ru/kollection/ut88/ris54_big.jpg

Идея RAM и ROM диска на Орион 128.
А разбиение на модули похоже на Микро-80.

---------- Post added at 14:38 ---------- Previous post was at 14:26 ----------

Схема компьютера Кристалл одним куском.

http://s019.radikal.ru/i625/1204/c3/c93f13b116bft.jpg (http://radikal.ru/F/s019.radikal.ru/i625/1204/c3/c93f13b116bf.png)

Atari
20.04.2012, 14:55
потом была написана ордос. Непонятно, чем его сипиэм не устроил...
CP/M диск ориентированная и весьма толстожопая система, при наших реалиях не нужна.


Все это больше похоже на ЮТ-88
Переработка на более доступные компоненты одного времени приводит к примерно одинаковому результату.

b2m
20.04.2012, 15:04
Схемотехника больше похожа на ЮТ-88
Да, упростили как только возможно. Даже инверсии символов нет (а в ЮТ-88 есть). Жаль, дампа ОС Дельта-А нет, можно было бы в эмуляторе посмотреть на это чудо. Надо бы сравнить дамп монитора с дампом Микро-80, наверняка что-нибудь похожее...

vinxru
20.04.2012, 15:08
Переработка на более доступные компоненты одного времени приводит к примерно одинаковому результату.

Возможно, но ньаснов там множество. ЮТ-88 компьютер 88 года, а этот 87. То есть скорее всего наоборот, ЮТ-88 это потомок Кристалла.

Я склоняюсь к мысли, что этот компьютер потомок Микро-80. И предок Ориона-128 (совместно со Специалистом) и предок ЮТ-88.

В ЮТ-88 ушла схемотехника основной платы. Но прикрутили туда "типа CP/M".

А в Орион ушла идея собственной операционной системы, RAM и ROM-дисков. Но сделали Орион на основе Специалиста.

Atari
20.04.2012, 15:31
ЮТ-88 компьютер 88 года, а этот 87. То есть скорее всего наоборот, ЮТ-88 это потомок Кристалла.
88 и 87 годы это скорей всего дата публикции, а ни как не начала проэктирования.
с ЮТ вообще мало общего, и даже с Микро-80 придетальном рассмотрении.
в целом сабж наверное даже можно признать почти самостоятельной разработкой, хотя элементы заимствования наверное были (от Микро-80), ибо глупо былоб всё начинать с полного нуля.

vinxru
20.04.2012, 16:17
На схеме компьютера, в верхнем правом углу происходит формирование видеосигнала DD34.4, DD33.3, DD34.5.

Через VD7 подмешиваются синхроимпульсы, которые формируются РТ-шками. Все входы РТ-шек подключены к счетчикам. (Я надеялся найти в РТ-шках схему инверсии, но нет. Все входы на счетчики).

Дальше в видеосигнал подмешивается изображение. Но странно. Это выход D-триггера, трактируемого сигналом PixelClock / 6 (загрузка символа, D33.1+D33.2+D24). И на вход данных этого триггера подается сигнал с РТ-шки (линия 23). А потом всё это стробируется частотой 10 Мгц (D34.4+D33.3).

Что то я не понял.

А выход сдвигового регистра D23 (из которого лезет изображение) вообще непонятно куда идет.

---------- Post added at 16:17 ---------- Previous post was at 15:32 ----------

В схеме указан кварц на 10 МГц, а в документации частота процессора 2 Мгц. Это взаимоисключающие параметры.

b2m
20.04.2012, 16:27
Дальше в видеосигнал подмешивается изображение. Но странно. Это выход D-триггера, трактируемого сигналом PixelClock / 6 (загрузка символа, D33.1+D33.2+D24). И на вход данных этого триггера подается сигнал с РТ-шки (линия 23).
Это сигнал гашения изображения, он выравнивается на границу символа и смешивается с сигналом со сдвиговых регистров.


А потом всё это стробируется частотой 10 Мгц (D34.4+D33.3).
Я тоже прикололся. С генератора 10МГц идёт на ГФ24, которая делит на 9, получается далеко не 2МГц, указанные в данных о компьютере.

Младшие биты выходов РТ-шек - это сброс счётчиков, 22 - синхроимпульс, 23 - гашение. Полное количество символов в строке 91 (или 90,5 если сигнал сброса асинхронный), полное количество строк - 40 (или 39,6666). Делим 10МГц на 6*91 - не получается 15625Гц, а вот если поделить на 7*91, то получится 15698,5Гц, значит ширина символа 7 пикселей (не зря там сброс через И-НЕ, видимо тактовый сигнал подмешали). Делим 15698,5 на 8*40 получаем 49Гц. Маловато что-то. А если сброс асинхронный, получим строчную 15785,3Гц и кадровую 49,95Гц. Тут строчная больше чем надо...

Atari
20.04.2012, 16:35
указан кварц на 10 МГц, а в документации частота процессора 2 Мгц. Это взаимоисключающие параметры.
угу да, я тоже заметил. учитвывя что ГФ24 делит на 9 [цензура] то кварц должен быть на 18 МГц, но отдельного кварца на пиксельклок не видно.

---------- Post added at 15:35 ---------- Previous post was at 15:28 ----------


Полное количество символов в строке 91 (или 90,5 если сигнал сброса асинхронный),
не сильно понятен ход ваших рассуждений, тем более что формирование сброса счетчиков не видно.
10МГц это 640 пикселей в строке, из которых ~40 уходит на ССИ.
дальше или 8 пикселей символ = 512 пикселей или как в орионе (через Ж) 6 пикселей на символ = 384 пикселя.

b2m
20.04.2012, 16:42
не сильно понятен ход ваших рассуждений, тем более что формирование сброса счетчиков не видно.
А я содержимое ПЗУ D30,D31 анализировал. Например в D30 по адресу 0B5h байт 0F3h, тогда как все остальные чётные. Т.е. это сброс счётчиков.

vinxru
20.04.2012, 16:48
Можно попробовать в Протеусе зарисовать кусок видеоадаптера и эмулировать его.

Atari
20.04.2012, 17:25
b2m, согласен, т.е. получается 90 символов с строке при пиксельклоке 10МГц.
и того 630 пикселей в строке, по 7 пикселей на символ строчная 15873

первый бит - сброс, второй - ССИ, третий - гашение, а четвертый для головоломки.

310 строк в кадре КИ = 51,2

b2m
20.04.2012, 17:52
310 строк в кадре КИ = 51,2
Там 39,5*8 = 316 строк в кадре, и 90*7+4 = 634 пикселя в строке.
Строчная получается 15772,87Гц, кадровая 49,914Гц.

Atari
20.04.2012, 18:10
если со скоростью (временем) сброса счетчиков СИ можно еще поспорить, то уж счетчики КИ сбрасывются уж точно мгновенно.
так что никаких "половинок" там нет ни на СИ ни на КИ.
1-я ПЗУ: 180-сброс.
2-я ПЗУ: 79-сброс. да получается 316 строк в полукадре.

откуда у вас еще 4 пикселя в строке?

b2m
20.04.2012, 18:27
Обратите внимание на то, откуда идёт младший бит адреса ПЗУ строчной развёртки. Еденица там будет как раз начиная с четвёртого пикселя.

---------- Post added at 19:19 ---------- Previous post was at 19:17 ----------


1-я ПЗУ: 180-сброс.
По адресу 180 (0B4h) ещё нет сброса.

---------- Post added at 19:27 ---------- Previous post was at 19:19 ----------

Я склоняюсь к версии, что после того, как были запрограммированы правильные значения (в строчном ПЗУ сброс на 2 байта дальше, а в кадровом на 1 байт ближе к началу), сделали такую вот коррекцию, чтобы центрировать изображение. При правильных значениях 91*7+4=641 пиксель в строке и 78*4=312 строк. Соответственно строчная 15601Гц, кадровая 50Гц.

Atari
20.04.2012, 18:52
чесно гря 4 пикселя туда-сюда погоды не делают (64 мкСек строка, 1 пиксель ~ 0,1 мкСек).

Но синхрон проца и выгреба видика отжигает...
получается 1 такт проца = 9 пикселей, а как мы уже подсчитали 1 символ = 7 пикселей :v2_wacko:

---------- Post added at 17:52 ---------- Previous post was at 17:50 ----------

ГФ24 ф топку!

и вообще все пиксель клоки не привязанные к восьми :v2_dizzy_stop:

vinxru
20.04.2012, 21:18
Пришел домой, зарисовал схему в Протеусе, ввел дампы ПЗУ. Если я правильно зарисовал, то там всё крайне просто.

Ширина символа 6 пискселей.

Чисто теоретически, так как бит сброса счетчиков столбцов находится по адресу B6h = 182 байт. Длительность строки составляет 92 символа или 546 пикселей + задержка конденсатора.

Итого, для стандартной частоты строк 15625 Гц требуется кварц на 9,08 Мгц. Причем, эти 0,08 МГц как раз корректируются конденсатором. (И есть еще мысль про кварц на 18 Мгц и частоту процессора 2 МГц).

А во вложении схема, осциллограммы, прошивки.

b2m
20.04.2012, 22:49
так как бит сброса счетчиков столбцов находится по адресу B6h = 182 байт
Может всё-таки 0B5h? Или у тебя какая-то другая дока? :)

Atari
20.04.2012, 23:53
если считать от нуля то количество байт будет 182 ;)

---------- Post added at 21:53 ---------- Previous post was at 21:48 ----------

вот только я не вижу ни счетчика делителя на 6 или 7 и ПЗУ знакогенератора, схема явно без кусков.

vinxru
20.04.2012, 23:55
Может всё-таки 0B5h? Или у тебя какая-то другая дока?

Ну да, B5.

RST 0
21.04.2012, 10:18
Народ,так я понял этот комп серийно не выпускался?

b2m
21.04.2012, 10:53
вот только я не вижу ни счетчика делителя на 6 или 7 и ПЗУ знакогенератора, схема явно без кусков.
А если так:

vinxru
21.04.2012, 12:35
А если так:

Этот вариант вообще не работает. Счетчик сбрасывается единицей, а единица тут будет каждый такт.

---------- Post added at 11:35 ---------- Previous post was at 10:28 ----------

Помехи кстати будут только черного цвета. ПЗУ знакогенератора блокируется при обращении к видеопамяти.

Atari
21.04.2012, 14:57
b2m, чесно гря этот кусок схемы вообще непонятен.
да и кстати прошивки ПЗУ знакогенератора тоже нет, она возможно раскрылаб некоторые тайны. Хотя 7 пикселей ширина знакометста это явное извращение.

vinxru
21.04.2012, 16:43
Если ПЗУ и ОЗУ собирать не из кусочков, а поставить микросхему большего объема, то весь компьютер умещается в 27 корпусов. Так же как РК86, а круче только Спектрум на пауке. А если синхронизировать видеоадаптер и процессор, что реально. То получается на один корпус меньше (исключаем основное ОЗУ) и без помех.

Только вот синхронизация с видеадаптером не такая простая идея. Видеоадаптер обращается у памяти каждый 6-ой такт, а процессору надо выделить 50% из каждых 9 тактов. (Процессору нужны данные только по перепаду тактового импульса)

Это деление на 9 (внутри КР580ГФ24) придумал какой псих.

---------- Post added at 16:43 ---------- Previous post was at 16:32 ----------

1. D1 - КР580ИК80
2. D2 - КР580ГФ24
3. D3 - КР580ВК38
0. D4, D5 - К155ЛП10 (буфер адресной шины, в 1-планом модерн. вар. не обязателен)
0. D6 - К155ЛП11 (буфер адресной шины, не обязателен)
4. D7 - К556РТ4 (дешифратор адресов)
5. D8 - КР580ВВ55 (клавиатура)
6. D9 - К573РФ2 (ПЗУ с монитором)
7. D10, D11 - К576РУ2 (ОЗУ программ)
8-10. D12, D13, D14 - К555КП14 (обращение процессора к видеопамяти)
11-12. D15, D16 - К589КП16 (обращение процессора к видеопамяти)
13. D17, D18, D19, D20 - К541РУ2 (видео ОЗУ)
14. D21.1, D21.2 - К556РТ5 (ПЗУ знакогенератора)
15-16. D22, D23 - К155ИР1 (видео, сдвиговый регистр)
17-21. D24, D25, D26, D27, D28 - К155ИЕ5 (видео, счетчики)
22. D28 - К155ТМ2 (видео, счетчик и гашение)
23. D30, D31 - К556РТ4 (сброс счетчиков, синхроимпульсы, гашение)
24-25. D32, D33 - К155ЛА3
26-27. D34, D35 - К155ЛН1

Atari
21.04.2012, 16:46
Это деление на 9 придумал какой псих.
я об этом в ГФ24 кричу на каждом углу.

vinxru, если будет савсем скучно то уменя есть несколько идей 8-ми битного компа.
Хотя зачем, если есть Орион?

b2m
21.04.2012, 17:00
Итого, для стандартной частоты строк 15625 Гц требуется кварц на 9,08 Мгц.
Как это у тебя такие цифры получаются? 15625*546=8531250


Причем, эти 0,08 МГц как раз корректируются конденсатором.
Вряд ли в цепи сброса счётчиков участвовали конденсаторы. На мой взгляд, они влияли лишь на формирование видео-сигнала.

---------- Post added at 18:00 ---------- Previous post was at 17:58 ----------

А то - то так посчитает, то эдак. :)

vinxru
21.04.2012, 17:13
А то - то так посчитает, то эдак.

Как только адрес становится равен 0B5h, на выходе ПЗУ появляется сигнал сброса. Как только один из 3-х счетчиков обнулится, адрес изменится и сброс пропадет.

То есть, длительность импульса сброса получается насколько короткой, то на неё не успевают отреагировать все микросхемы.

При этом, выход 3-его бита одного счетчика является таковым входом другого. Когда мы сбрасываем D24, это приводит к увеличению счетчика D25. И соответственно срывается работа всего видеоадаптера.

И т.д. Я час запускал эту схему в эмуляторе, пока она начала нормально адреса считать.

Atari
21.04.2012, 17:22
Как это у тебя такие цифры получаются? 15625*546=8531250
у мну тоже так получается ;)

15625 * 576 = 9000000

---------- Post added at 15:22 ---------- Previous post was at 15:19 ----------


То есть, длительность импульса сброса получается насколько короткой,
собственно об этом я и писал в #29, что сброс происходит примерно за 50 нс и этот байт не считается.

vinxru
21.04.2012, 17:25
А еще, на выходе ПЗУ будут присутствовать переходные процессы. То есть, между чтением адресов FFh и 100h, на выходе может быть всё что угодно. Поэтому без конденсатора никак.

vinxru
21.04.2012, 22:02
Схема называется - найдите 3 ошибки.

http://s019.radikal.ru/i627/1204/dd/d2cbdbf837bat.jpg (http://radikal.ru/F/s019.radikal.ru/i627/1204/dd/d2cbdbf837ba.png)

Когда нибудь соберу в таком виде. А пока пошел заставлять клавиатуру на ATMega8 работать.

http://s019.radikal.ru/i641/1204/98/98064abd5a5f.jpg

Atari
22.04.2012, 00:17
Схема называется - найдите 3 ошибки.
да хоть все 8 ;)

Q21...24 на D16

---------- Post added at 23:17 ---------- Previous post was at 22:26 ----------

vinxru, так понял, применеие ИР1 удобно тем, что они сами защелкивают праллельные данные?

vinxru
22.04.2012, 00:27
vinxru, так понял, применеие ИР1 удобно тем, что они сами защелкивают праллельные данные?

Ну как. Приходит на них импульс с делителя D24 (PixelClock / 6) и они защелкивают.

Atari
22.04.2012, 00:30
просто в данном случае ПЗУ знакогенератора может висеть неотключаемо/безбуферно на ШД.
это приятно ибо упрощает ;)
но в синхронных схемах такой вариант не сработает :(

vinxru
22.04.2012, 04:26
Я тут понял, что ширина символа больше 6 писелей. Сброс приторможен конденсатором С5 220 пф. Это может быть и целый пиксель и половина.

vinxru
25.04.2012, 20:06
Совсем забыл про схему запуска, которая подключает ПЗУ в адреса 0 при перезагрузке. В оригинальной документации эта часть схемы сильно покоцана, но скорее всего она выглядит так:

http://s019.radikal.ru/i632/1204/c4/c78a1ae9a246.png

Я же в упрощенной схеме не стал ставить этот триггер. Я реализовал этот триггер прямо на ПЗУ дешифратора адресов. Я замкнул выход данных и вход адреса этой ПЗУ, создав положительную обратную связь. По сигналу сброс включается первая карта памяти, где по адресу 0 находится ПЗУ, а при чтении адресов >=8000h включается вторая раскладка.

На плате процессора должно находится всего 1 Кб ОЗУ. Но раз уж я воткнул на плату микросхему 62256 (можно и 62128, 6264, 6232, 6216), то соответственным образом можно прошить дешифратор адресов. Тогда в компьютере будет 29 Кб нижней оперативной памяти и 1 Кб верхней памяти для монитора.

0000h-73FFh ОЗУ Пользователя 29 Кб
7400h-77FFh Не используется
7800h-7FFFh ОЗУ Пользователя 2 Кб
8000h-E7FFh Не используется
E800h-EFFFh Видео ОЗУ
F000h-F3FFh Не используется (в теории окно слот-системы)
F400h-F7FFh ОЗУ Монитора
F800h-FFFFh ПЗУ Монитор

---------- Post added at 19:06 ---------- Previous post was at 18:55 ----------

Я переживал по поводу отсутствия схем дополнительный модулей компьютера. Но читая документацию, я понял, что ничего интересного и уникального там не было. И более того, у самих авторов не было этих модулей. У них был модуль на 16 Кб ОЗУ и таймером ВИ53.

И без программ они будут не нужны.

В общем должны быть еще модули:

1) Модуль ОЗУ.

64 Кб ОЗУ в адресном пространстве процессора. Уже появляется главная идея Ориона, о том что не всё ОЗУ можно использовать. Еще 64 Кб ОЗУ + 32 Кб ПЗУ через порты ввода-вывода. До страничной адресации еще не додумались.

64 микросхемы 565РУ3

2) Модуль квазидиска.

Идентичен прошлому. Используется та же печатная плата, но только теперь вся память через порты. Еще 64 микросхемы 565РУ3

3) Модуль интерфейса.

КР580ВИ53 + КР580ВВ51 + КР580ВВ55 2 шт.

4) Отладочный модуль.

Упрощенный отладочный модуль Микро-80.

BYTEMAN
25.04.2012, 20:14
vinxru, так завелась машинка?

vinxru
25.04.2012, 20:17
vinxru, так завелась машинка?

Не, у меня с принтером проблемы уже неделю. Не лутит.

Завтра разорюсь на новый картридж.

vinxru
26.04.2012, 01:54
http://s019.radikal.ru/i633/1204/21/91939ad11cf8.png

РК-шные программы грузит, только не запускает, так как точки входа в ПЗУ сильно отличаются.

---------- Post added at 00:08 ---------- Previous post was at 00:02 ----------

Загрузка РК-шных программ

<CTRL+S><Enter>
R<Enter>

---------- Post added at 00:11 ---------- Previous post was at 00:08 ----------

А Бейсик от Микро-80 запустился. Хотя небольшие глюки с очисткой экрана есть.

---------- Post added at 00:16 ---------- Previous post was at 00:11 ----------

У ЮТ-88 появилась эскейп-последовательность устанавливающая положение курсора. У Мирко-80 её еще нет. И у этого компьютера её тоже нет.

---------- Post added at 00:54 ---------- Previous post was at 00:16 ----------

С Микро-80 по точкам входа в ПЗУ этот компьютер совместим только частично. У Кристалла-2 только эти точки входа:

JMP MON ;Переход на Монитор
JMP CI ;Подпрограмма ввода с консоли
JMP MI ;Подпрограмма ввода с магнитофона
JMP CO ;Подпрограмма вывода на консоль символа
JMP MO ;Подпрограмма вывода на магнитофон
JMP CO ;Подпрограмма вывода на консоль СИМВОЛА
JMP STS ;Подпрограмма проверки состояния ввода с консоли
JMP OHX ;Подпрограмма вывода на консоль 16 значения
JMP CON ;Подпрограмма вывода на консоль сообщения

А у Микро-80 еще есть:

JMP SCO ;Подпрограмма опроса кода нажатой клавиши
JMP CRS ;Подпрограмма запроса положения курсора на экране
JMP ADR ;Подпрограмма запроса байта с экрана
JMP BMI ;Подпрограмма ввода блока с магнитофона
JMP BMO ;Подпрограмма вывода блока на магнитофон
JMP CBL ;Подпрограмма подсчета контроьной суммы
JMP PSK ;Подпрограмма запуска отображения
JMP MSI ;Подпрограмма получения адреса ОЗУ
JMP WSI ;Подпрограмма записи адреса ОЗУ

vinxru
26.04.2012, 13:24
Записал в Викию.

http://zx-pk.ru/wiki/%D0%9F%D0%9A_%D0%9A%D1%80%D0%B8%D1%81%D1%82%D0%B0% D0%BB%D0%BB_2

vinxru
26.04.2012, 13:44
Конфигурация для эмулятора b2m.

Плюс там прошивка ПЗУ. Позавчера ручками ввел из документации. Прошивка знакогенератора. Раскладка клавиатуры.

vinxru
26.04.2012, 14:32
При включении компьютер выводит текст:

КРИСТАЛЛ-С
*SVP-1987*

что ставит под сомнение его правильное название.

BYTEMAN
26.04.2012, 14:36
vinxru, буду в Бресте - подниму орионовский диск, там есть текстовики про кристалл (именно текстовики).

b2m
26.04.2012, 18:16
Плюс там прошивка ПЗУ. Позавчера ручками ввел из документации.
А я неделю назад тоже ввёл ручками. Обе наши прошивки совпадают, значит ошибок нет :) В последней версии эмулятора оно уже есть.

А в знакогенераторе я символ "сп" переделал на курсор. Интересно только, было это подчёркивание (как у меня), или блок?

vinxru
26.04.2012, 19:01
Интересно только, было это подчёркивание (как у меня), или блок?

Подчеркивание и так есть в знакогенераторе. Если бы у них был здравый смысл, они бы не добавляли второе подчеркивание. Но я сомневаюсь в наличии здравого смысла :)

---------- Post added at 19:01 ---------- Previous post was at 18:59 ----------


В последней версии эмулятора оно уже есть.


Там случайно светодиодов на ВВ55-ой нет. РУС/ЛАТ например?

Atari
26.04.2012, 19:19
Господа, я так не совсем понял как организована выборка видео ОЗУ, всмысле адреса выбранного/выводимого байта, можно этот кусок схемы нарисовать как-то по понятней?

vinxru
26.04.2012, 19:30
1) Если процессор обращается по адресу E800h - EFFFh, то на выходе дешифратора D38.10 появляется 0

2) Этот ноль идет на мультиплекторы D12-D14, которые подключают шину адреса видео ОЗУ к процессору D17-D20

3) Этот же ноль включает буферы D15-D16, которые подключают шину данных к процессору.

4) Что бы видеоадаптер в это время не выводил на экран мусор с шины, блокируется ПЗУ знакогенератора.

---------- Post added at 19:30 ---------- Previous post was at 19:28 ----------

A) Если процессор не обращается по адресу E800h - EFFFh, то на выходе дешифратора D38.10 висит 1

B) Мультиплексоры D12-D14 подключают шину адреса видео ОЗУ к счетчикам D25-D29

C) Буферы D15-D16 выключены.

Счетчики крутятся и видеоадаптер выдает на выход последовательно всю видеопамять.

vinxru
26.04.2012, 23:29
Купил новый картридж и плата получилась. Буду этот картридж использовать только для ЛУТа.

http://i070.radikal.ru/1204/4d/b5c4afe1fc57.jpg

Atari
27.04.2012, 00:29
круто :v2_thumb:

---------- Post added at 23:29 ---------- Previous post was at 23:19 ----------

vinxru, с видиком мне все понятно, я бы что-то придумал с кварцем вместо ГФ24 чтоб поставить 64К памяти статики и загнать ее в синхрон с процом.

vinxru
27.04.2012, 11:08
vinxru, с видиком мне все понятно, я бы что-то придумал с кварцем вместо ГФ24 чтоб поставить 64К памяти статики и загнать ее в синхрон с процом.

Я думал про два варианта

1) Взять за основу схему Специалиста и прицепить к ней знакогенератор. Это просто, но получится текстовый режим 48x32 при размере знакоместа 8x8. Надо будет поднять тактовую частоту процессора на 33% и подправить схему сбора счетчиков, что бы получить режим 64x32 при размере знакоместа 8x8. В компьютере Кристалл-2 сброс счетчиков и формирование синхроимпульсов прошито в ПЗУ, эту же идею можно перенести сюда, что бы не париться.

2) Сделать частоту процессора равной частоте символов 1,5 Мгц. Можно ГФ24 не выкидывать. А сигналы процессора RW и RD обрезать до полтакта (RD&CLOCK, WR&CLOCK). Тогда процессор будет обращаться к памяти по положительному перепаду тактового импульса, а видеоадаптер по отрицательному.

Но я этим заниматься не буду. Это уже будет совсем другой компьютер.

vinxru
27.04.2012, 15:29
Может стоит закинуть в ПЗУ компьютера поддержку esc-последовательности устаналивающую положение курсора. Иначе на этом компьютере не будет работать почти ничего.

Atari
27.04.2012, 15:34
если место есть то стоит.
сорцы мониторов есть?

vinxru
27.04.2012, 17:23
если место есть то стоит.
сорцы мониторов есть?

Ага, уже дизассемблировал.

Atari
28.04.2012, 00:00
чем пользуемся? а то ни как себе нормальный комплект асма-дизасма не подберу.

esl
28.04.2012, 01:02
нормальный дизасм есть только один
и зовется он IDA Pro ;)
остальное все поделки жалкие :(

8085/z80 он понимает
с сегментами/структурми/енумами ...

vinxru
28.04.2012, 01:06
ага IDA Pro

vinxru
28.04.2012, 14:36
Доработал прошивку, добавил обработку esc-последовательности перемещающую курсор. Теперь Тетрис от ЮТ-88 (и ряд других программ) запускается.

Я разобрался с системными переменными. Там оказалось 6 байт неиспользуемого пространства. А мне как раз был нужен один байт для обработки esc-последовательностей. (Да и несколько переменных можно было использовать без последствий в собственных целях.)



org 0F7C0h

defCursorAddr: ds 2 ; Адрес курсора по умолчанию
loadErrorPtr: ds 2 ; Указатель на loadError. Запускается в случае ошибки загрузки программы с магнитофона.
vinxru_nocursor:ds 1 ; ПАТЧ. Отключение отбражения курсора, если FF
vinxru_escFlag: ds 1 ; ПАТЧ. Обработка esc-последовательности устаналивающей положение курсора
tapeFormat: ds 1 ; Формат записи на магнитофон: 0-собственный, FF-РК86 (Изменяется директивой УС+S)
unknown_3: ds 1 ; Инициализируется значением 3 и не используется
forCmdO: ds 1 ; Длина имени введенная в директиве O (используется только директивой O)
charAtCursor: ds 1 ; Символ находящийся под курсором
cursorAddr: ds 2 ; Адрес курсора в видеопамяти
outputTapeDely: ds 1 ; Скорость записи на магнитофон
inputTapeDelay: ds 1 ; Скорость загрузки с магнитофона
forInputTape: ds 1 ; Используется только функцией загрузки с магнитофона. Содержит 0 или FF
cmdLineLastChr: ds 2 ; Функция inputString заносит сюда адрес последнего символа в строке
lastJmp: ds 2 ; Используется только директивой J. Она заносит сюда первый аргумент, если агрумент не указан, то использует это значение.
ds 4 ; НЕ ИСПОЛЬЗУЕТСЯ
forDirL: ds 2 ; Используется только директивой L. Она заносит сюда первый аргумент, если агрумент не указан, то использует это значение.
cmd_param3: ds 2 ; 1 параметр (Заполняется фунукуией parseParams и директивой I)
cmd_param2: ds 2 ; 2 параметр
cmd_param1: ds 2 ; 3 параметр
cmdLine: ds 32 ; Командная строка 32 байта.


Патч вот



vinxru_esc: ; Переход в зависимости от ESC
ld a, (vinxru_escFlag)
dec a
ld a, c
jp m, esc_step0
jp z, esc_step1
jp po, esc_step2
esc_step3: ; Шаг 3
sbc a, 20h
ld e, a
xor a
ld d, a
add hl, de
; Выход
esc_ret0: xor a
jp esc_ret4
;----------------------------------------------------------------------------
esc_step0: ; Шаг 0
cp 1Bh
jp nz, esc_none
ld a, 1
jp esc_ret4
;----------------------------------------------------------------------------
esc_none: cp 1Fh ; удаленный оригинальный код
jp z, clearScreen ; удаленный оригинальный код
jp putChar_er ; переход на оригинальный код
;----------------------------------------------------------------------------
esc_step1: ; Шаг 1
cp 59h ; 'Y'
jp nz, esc_ret0
ld a, 2
jp esc_ret4
;----------------------------------------------------------------------------
esc_step2: ; Шаг 2
and 1Fh
ld l, a ; h-будет обрезано ниже
add hl, hl
add hl, hl
add hl, hl
add hl, hl
add hl, hl
add hl, hl
ld a, 4
; ---------------------------------------------------------------------------
esc_ret4: ld (vinxru_escFlag), a
; На всякий случай. Если изменить положение курсора в
; середине esc-последовательности, то будет баг.
ld a, h
and 07h
or (VIDEO_MEM>>8)&~7
ld h, a
; ***
jp saveCursorAddr


И целиком исходники, компилятор, скомпилированная прошивка во вложении.

Надо бы еще добавить все стандартные точки входа РК86. Все необходимые функции в прошивке присутствуют, только нет точек входа.

И еще сделать отключение курсора, а то он в играх закрывает изображение.

vinxru
28.04.2012, 15:22
2 ИСПРАВЛЕНИЕ ОШИБКИ

Еще одна ошибка, из за которой визуально-некорректно работает удаление в консоли. Вместо перемещения курсора влево (код 8), в консоль выводилась псевдографика (код 3)
ROM:F919 ld a, 3
заменил на
ROM:F919 ld a, 8

3 ДОРАБОТКА ДЛЯ СОВМЕСТИМОСТИ С ПРОГРАММАМИ РК86

Директива X отключает и включает отображение курсора. (Например, игра Бармен со включенным курсором не запустится вообще).

---------- Post added at 15:22 ---------- Previous post was at 15:05 ----------

http://s019.radikal.ru/i628/1204/12/b3911583f1e5.png

Бармен запустился :) Вот этой последовательностью команд:

УС+T <- Включает режим записи на магнитофон РК-86
УС+R <- Включает режим очистки экрана РК-86
X <- Отключает курсор
R <- Загружает с автоопределением скорости.

Выложил прошивку.

vinxru
29.04.2012, 04:44
4 Функция вывода символа (F809) портит регистр A. Например, из за этого не работал Пекмен.

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

Функция загрузки с магнитофона (F824) возвращает расчетный CRC, а не считанный с ленты. Вообще поведение функций загрузки (F824) и сохранения (F827) будeт сильно отличаться от РК86.

Остальные точки входа работают стандартно.

vinxru
30.04.2012, 01:57
6 Теперь компьютер пищит при выводе в консоль символа с кодом 7. Место в прошивке кончилось, поэтому пришлось пожертвовать функцией F824 загрузка программы с магнитофона. Её никто все равно не использует.

7 При очистке экрана курсор теперь устанавливается в верхний левый угол.

Прошивку выложил.

Игр на ней работает уже много. CHESS2.RKR, CIRCUS.RKR, KALAH.RKR, KRESTNO.RKR, RENDZU.RKR, REVERSI2.RKR, RIKOSHET.RKR, SP_GAMES.RKR, TETRIS1.RKR, TETRIS4.RKR... дальше пока не смотрел.

Основная проблема - это высота экрана в 32 символа. Многие игры очищают экран 25-ю переводами строк и верхние 5 строк при этом не очищаются.

---------- Post added at 00:57 ---------- Previous post was at 00:36 ----------

И да. Клавиши ЗБ (аналог Backspace) у этого компьютера нет. Вместо ЗБ там стоит клавиша подчеркивания. А функцию удаления выполняет стрелка влево, она возвращает код 8.

И для сравнения, эта клавиша _ реагирует на шифт и контрол. А клавиши управления курсором, ввод, пробел не реагируют.

vinxru
01.05.2012, 13:04
Спаял плату. Не хватает только ерунды (двух разъемов, нескольких конденсаторов, резисторов, диодов, переменника и КТ315).

http://s019.radikal.ru/i636/1205/8a/211edbb04497.jpg

Разъемы:
1) 2 контакта - Сброс
2) 2 контакта - Выход звука
3) 2 контакта - Выход видео
4) 34 контакта - Клавиатура + магнитофон + неиспользуемые 4 бита порта ВВ55 под расширение
5) 40 контактов - Системная шина
6) 4 контакта - Питание

vinxru
03.05.2012, 00:57
Воткнул кварц на 16 Мгц (пиксель клок 8 Мгц), получившийся видеосигнал распознался монитором. Точно измерить частоту строк не могу, так как в синхросигнале почему то находится символ-клок. Из за этого и полосы на мониторе. Возможно коротыш.

http://s019.radikal.ru/i636/1205/68/89800cbb455e.jpg

Причем, сначала полосы были черные на белом фоне. А потом стали белые на черном фоне.

vinxru
03.05.2012, 11:44
3 забытых соединения в схеме. 15 оборванных дорожек. 1 ошибка в ПЗУ.

Никогда в жизни больше не буду делать такие тонкие дорожки и двухстороннюю подпайку деталей - это гемороище. Лучше на две платы раскину компьютер.

vinxru
05.05.2012, 01:47
Судя по тому, что к D4 подключена логическая единица, ширина символа 7 пикселей.

http://s019.radikal.ru/i607/1205/f5/1af555a2f0d0.png

Так как сдвиг регистра происходит с фиксированной частотой 8 Мгц. Он не может быстрее сдвигаться никак. Первый такт на выходе лог. единица, второй такт из ПЗУ и т.д. Следовательно, что бы увидеть символ целиком, должно быть 7 тактов на символ.

Но счетчик считает только до 6. На схеме не использован вывод счетчика D2, что бы организовать сравнение с семью. И вообще, элементов не хватает.

Или подбирать конденсатор с точностью до пикофарада, что бы организовать деление на 7 (что крайне извращенно), либо в схеме ошибка.

Atari
05.05.2012, 02:09
по "оригинальной схеме" вообще не сильно понятно откуда берутся сигналы 8,9,10 :(

vinxru
05.05.2012, 02:13
А с другой стороны. Параллельная загрузка в сдвиговые регистры происходит по перепаду тактового импульса, когда V2=1. То есть, сначала надо опустить V2, а уже потом дернуть тактовый импульс. V2 - это сброс счетчиков.

А это невозможно. В лучшем случае это произойдет одновременно. Сначала тактовый импульс увеличит счетчик до 6, а затем произойдет сброс. Но не наоборот.

Значит V2=1 (то есть сброс) надо держать целый такт. Что бы к приходу следующего тактового импульса произошла параллельная загрузка.

---------- Post added at 01:13 ---------- Previous post was at 01:10 ----------


по "оригинальной схеме" вообще не сильно понятно откуда берутся сигналы 8,9,10

Зато их назначение понятно: пиксель клок, символ клок и видеовыход.

Atari
05.05.2012, 02:15
Зато их назначение понятно
угу... "досолить по вкусу"...

vinxru
05.05.2012, 02:22
Еще странно, что высота знакоместа 8 пикселей (меньше чем в РК86, Микро-80 и подобных), а ширина знакоместа 7 пикселей (больше чем в РК86).

То есть, они убрали межстрочный интервал и добавили межстолбцовый интервал. ИМХО японцам, с их вертикальным письмом, это бы пришлось по нраву.

Atari
05.05.2012, 02:33
ширина таки должна быть 6 пикселей (хотя еще не доказано)

vinxru
05.05.2012, 02:43
по "оригинальной схеме" вообще не сильно понятно откуда берутся сигналы 8,9,10

Действительно, либо третий вариант. Сигнал W8 может быть задержан (или инвертирован, что аналогично задержке на пол такта).

Но это не объясняет подключения ПЗУ к сдвиговым регистрам.

Atari
05.05.2012, 02:49
Но это не объясняет подключения ПЗУ к сдвиговым регистрам.
объясняет.
6 бит знакогенератора "зашиты" по центру байта, а потом при макетировании/"досаливании" их как раз и таскали туды-сюды.

vinxru
09.05.2012, 21:35
Нифига оно нормально не работает. Ширина пикселей в символе различной ширины. На экране помехи.

Я попробовал использовать в качестве частоты пикселей 16 Мгц (c ГФ24). А в качестве частоты символов 1,7 Мгц (c ГФ24). Ширина символа получается 9 пикселей. В этом случае схема сильно упрощается.

http://i077.radikal.ru/1205/b2/8600029833a8.jpg

Выход ПЗУ непосредственно используется для синхроимпульсов. При смене адреса на выходе ПЗУ появляется шум который и виден на изображении. Что бы избавится от шума, надо записывать выход ПЗУ в триггер.

http://s019.radikal.ru/i620/1205/63/d0d972680ba6.jpg
(В эту мешанину добавить еще 580ВМ80, 580ВВ55, 155АП6, 2xПЗУ, сдвиговый регистр и должен получится компьютер)

Я хочу попробовать отключать от процессора память, когда F2=1. Судя по диаграммам (и мениям на форуме) процессор обращается к памяти по спаду F1 (или чуть-чуть позже).

В этом случае получится всего 16 микросхем. (Возможно еще ЛН1, ЛА3).

---------- Post added at 21:31 ---------- Previous post was at 21:25 ----------

Есть еще идея заменить: 4x555ИЕ5 + ПЗУ + 555ТМ2 на 2xПЗУ + 2x555ИР23. В последнем случае можно добиться полной совместимости адресации с РК86 простой перепрошивкой ПЗУ.

---------- Post added at 21:35 ---------- Previous post was at 21:31 ----------

Еще синхронизировать процессор и видео можно по схеме Специалиста (разогнав схему с 48 до 64-х байт на строку). Но у меня нет такого кварца.

Или тормозить процессор на время отрисовки экрана, а работать во время обратного хода.

Atari
09.05.2012, 22:25
Еще синхронизировать процессор и видео можно по схеме Специалиста (разогнав схему с 48 до 64-х байт на строку).
выборка получится 1,33, т.е. частота проца 2,66 ;) или 1,33 :(


Или тормозить процессор на время отрисовки экрана, а работать во время обратного хода.
от производительности останется примерно четверть :(

vinxru
10.05.2012, 01:03
выборка получится 1,33, т.е. частота проца 2,66 или 1,33

Ага

vinxru
10.05.2012, 04:03
Примерно так

http://s019.radikal.ru/i605/1205/ef/4749f3354bc7t.jpg (http://radikal.ru/F/s019.radikal.ru/i605/1205/ef/4749f3354bc7.png)

b2m
10.05.2012, 10:25
Я хочу попробовать отключать от процессора память, когда F2=1.
А на запись не повлияет, если в течение цикла записи ты будешь коммутировать адрес? По хорошему, надо сначала убрать разрешение записи, потом скоммутировать адрес, считать, опять скоммутировать и вернуть сигнал разрешения записи.

vinxru
10.05.2012, 11:24
А на запись не повлияет, если в течение цикла записи ты будешь коммутировать адрес? По хорошему, надо сначала убрать разрешение записи, потом скоммутировать адрес, считать, опять скоммутировать и вернуть сигнал разрешения записи.

Ага. Причем сигнал записи длится один такт процессора и если отключать процессор на пол такта, то сигнал записи делится на две части. Надо триггер ставить. Устанавливается по спаду WR, сбрасывается по фронту F2.

---------- Post added at 10:56 ---------- Previous post was at 10:44 ----------

А что лучше смотрится в качестве счетчика адресов?

1) 27512 + 27512 + ИР23 + ИР23 + ИЕ5. У регистров есть Z-состояние, поэтому вместо мультиплексора адресов АП6+АП6.
2) ИЕ5 + ИЕ5 + ИЕ5 + ИЕ5 + 27128 + ТМ2. И мультиплексор на КП11 + КП11 + КП11 + КП11

В первом случае две жирных ПЗУ. Во втором случае на три корпуса больше. И не факт, что я найду ИР23.

---------- Post added at 11:00 ---------- Previous post was at 10:56 ----------

Соберу сегодня схему из ГФ24+процессора+озу+пзу и попробую отключать шину.

---------- Post added at 11:24 ---------- Previous post was at 11:00 ----------

ИЕ5 можно выкинуть.

В 16-битное ПЗУ (на паре 27512) будет записана последовательность адресов сканирования видеопамяти. В каждой ячейке ПЗУ будет записано, какой следующий адрес читать из памяти.

// Вывод первой строки
0000: 0001,0002,0003,0004,0005,0006,0007,0008,0009,000A, 000B,000C,000D,000E,000F,0010
0010: 0011,0012,0013,0014,0015,0016,0017,0018,0019,001A, 001B,001C,001D,001E,001F,0020
0020: 0021,0022,0023,0024,0025,0026,0027,0028,0029,002A, 002B,002C,002D,002E,002F,0020
0030: 0031,0032,0033,0034,0035,0036,0037,0038,0039,003A, 003B,003C,003D,003E,003F,4000
// Вывод второй строки
0040: 0041,0042,0043,0044,0045,0046,0047,0048,0049,004A, 004B,004C,004D,004E,004F,0050
// Обратный ход первой строки
4000: 4001,4002,4003,4004,4005,4006,4007,С008,С009,С0 0A,400B,400C,400D,400E,400F,0040

Адреса >=4000 вызывают гашение (то есть не выводятся на экране). Адреса >=8000 обрезаются до 15 бит, но этот обрезанный бит является синхроимпульсом.

312 строк по 80 байт - поместится в 32 Кб ПЗУ. Плюс один бит на синхроимпульсы.

(Это лишь один из вариантов.)

b2m
10.05.2012, 13:58
А что лучше смотрится в качестве счетчика адресов?
ПЗУ с регистрами мне больше понравилось :)

---------- Post added at 14:58 ---------- Previous post was at 14:57 ----------

А если это будет не ПЗУ, а ОЗУ, то можно вообще любой режим программировать, хоть РК, хоть ZX. Шутка :)

HardWareMan
10.05.2012, 14:52
ПЗУ с регистрами мне больше понравилось :)
А если это будет не ПЗУ, а ОЗУ, то можно вообще любой режим программировать, хоть РК, хоть ZX. Шутка :)
Мы на недопц просчитывали такой вариант, кстати. Причем, с возможностью программирования самим процессором. Небольшое усложнение узла записи данных, применение загружаемых счетчиков и/или программное управление сбросом/клоком и все. Можно делать любую развертку с любым положением и организацией экрана. ;)

vinxru
10.05.2012, 20:57
Собрал на этой нелепой доске процессор+пзу. Записал программу EI DI JMP 0. К выходу INTE подключил частотометр. Частота была.

Потом я подключил F2 (приведенное к 5 Вольтам) к выводу OE ПЗУ. Потом F2 инвертированное. Потом F1. Потом F1 инвертированное. Программа в любом случае не выполнялась. :(

b2m
11.05.2012, 10:18
Мне кажется, проще сделать как в специалисте. В первом такте цикла к памяти точно никакого обращения нет. Там только одна проблема: он происходит каждые 3-5 тактов, надо промежуточный регистр для данных ставить, ну и частота процессора должна быть достаточно высокой, чтобы видео успевало.

vinxru
11.05.2012, 11:05
Мне кажется, проще сделать как в специалисте. В первом такте цикла к памяти точно никакого обращения нет. Там только одна проблема: он происходит каждые 3-5 тактов, надо промежуточный регистр для данных ставить, ну и частота процессора должна быть достаточно высокой, чтобы видео успевало.

Ага. Я вчера этот кусок схемы из Специалиста перерисовал.

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

Есть делать по Специалисту, то потребуется лишь 2 корпуса. Триггер ТМ2, что бы задержать SYNC на один такт - это признак обращения к шине. И 8-битный регистр для временного хранения данных.

Частота процессора должна быть 2,6 Мгц. Процессор никогда не обращается к памяти два такта подряд, поэтому мы каждый такт делаем попытку записи. И гарантированно получаем данные каждые 1,3 Мгц.

1333333 МГц / (64 байта + 21 обратный ход) = 15686 Кгц

У специалиста

1000000 МГц / (48 байт + 16 обратный ход) = 15625 Кгц

---------- Post added at 11:05 ---------- Previous post was at 10:54 ----------

Но в таком включении, то есть когда шина непонятно когда шина свободна, счетчик на 2x27512 + 2xИР23 + 2xАП6 работать не будет. Ему нужна каждый такт свободная шина адреса. То есть надо ставить 4xАП6 или 4xКП11.

И эти 2 дополнительных корпуса уменьшают привлекательность этого счетчика.

1) 2x27512 + 2xИР23 + 4xКП11 = 8 корпусов
2) 4xИЕ5 + 27512 + ТМ2 + 4xКП11 = 10 корпусов (но занимают меньше места и сколько же ножек)

AIS
11.05.2012, 11:54
4xИЕ5 можно заменить на
ИЕ5 + 561ИЕ20 (HEF4040, MC14040)

2x27512 можно заменить на 28F100, 29F100 ( ...F200, ...F400, ...F800 - они все недорогие)
Такую память 16 разрядную часто можно найти на платах старых телефонных модемов под ISA шину и на управляющих платах струйных принтеров.

Также была мысль использовать 29F100 как ПЗУ на 64кб + дешифратор адресов на 8 выходов - у неё есть нога переключения режимов выходов на 8 и 16 бит, при 8 битном режиме неиспользуемые 8 выводов данных в Z состоянии - их использовать как ПЗУ. Постоянно подключенные 8 выводов данных использовать как дешифратор адресов - будет дешифрация с точностью до байта.

vinxru, большое спасибо за интересную тему, внимательно слежу за развитием.

vinxru
11.05.2012, 12:12
Был я вчера в нашем единственном магазине. Электрически стираемых ПЗУ нет, текстолита нет (есть галимый односторонний кривой гетинакс. Он в хлорном железе размокает, ибо картон), ИР23 нет (и аналогов), АП6 нет, монтажек больших нет.

(Эти микрухи у меня есть в палатах спектрумов. Просто распаивать не хотелось.)

Купил только пару ATMega8 за 250 рублей и обычных панелек по 15 рублей.

Надо через интернет заказывать, нафиг этот магазин.

P.S. Зато там появились мощные магниты всех форм и размеров. При мне два парня покупали их для сборки вечного двигателя.

b2m
11.05.2012, 13:10
Но в таком включении, то есть когда шина непонятно когда шина свободна, счетчик на 2x27512 + 2xИР23 + 2xАП6 работать не будет.
Почему? Если сделать запись в ИР23 одновременно с записью данных в промежуточный регистр, то вроде должно работать. Надо только предусмотреть триггер разрешения записи, чтобы не было лишних клоков (устанавливать триггер символклоком, а сбрасывать при записи в ИР23).

vinxru
11.05.2012, 13:58
В принципе да.

vinxru
14.05.2012, 21:50
Оригинальная схема не заработала нормально. Поэтому я доработаю эту схему. Сделаю так, что бы она заработала и на изображении не было шума. Переделаю схему подобно схеме компьютера Специалист.

Я заменил КР580ВК37 на АП6 (Контроллер клавиатуры перенесен из IO в основное адресное пространство). Эта микруха занимает меньше места. И даже помещается под панельку процессора и места не занимает вообще.

Счетчик адресов я решил оставить на ИЕ5. При использовании ПЗУ я выигрываю 2 корпуса, но ИЕ5 так ближе к классике.

Схема стала проще. Все кроме КР580ВВ55 поместилось на эту монтажку. (Под панельками есть микросхемы.)

1) ГФ24 + Процессор + ОЗУ + ПЗУ
2) 4xКП11 + АП6 + ТМ2 = Мультиплексоры
3) 4xИЕ5 + ТМ2 + ПЗУ = Счетчики адресов
4) ИР23 + ПЗУ + 2xИР1 = Знакогенератор
5) ЛА3, ЛН1 = ерунда всякая

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

http://s019.radikal.ru/i637/1205/38/8c6203d29a1b.jpg

http://s08.radikal.ru/i181/1205/2d/b0380545afbc.jpg

Схему попозже выложу. Она на другом компьютере.

vinxru
15.05.2012, 11:03
Всё удерживаю себя от мысли применить ATMega8 для упрощения схемы. Ведь если развивать эту идею дальше, то абсолютно весь компьютер можно реализовать на ATMega старших моделей.

А это уже не тепло и не лампово. :)

Процессор будет работать на частоте 2,77 МГц.

25 Мгц / 9 = 2.7 МГц (чуть разогнан)
Частота строк 25000000/2/9/(64+25) = 15605 Гц. Что соответствует на 0,99875% стандарту.

AIS
15.05.2012, 14:17
ATMega не надо. Лично мне интересно сделать на комплектухе тех времен.
В те времена меня жутко бесило, что радиолюбительские компы, называемые простыми (РК, ЮТ) простыми вовсе не были. Поэтому периодически хочется сделать копм на комплектухе тех времен, но с минимумом корпусов м\сх. 27512 тоже не очень спортивно - в те времена они были слишком дороги.

У меня тоже руки зачесались - пробую посчитать счетчики адресов + формирование кадровых и строчных импульсов на минимуме деталей . У меня выходит: 155ИЕ4 + 2х 561ИЕ10 + 2х 561АГ3 (одновибраторы формируют только длительность строчных импульсов и импульсов гашения, фронты этих импульсов кварцованные.) - вот и всё, даже без мелкой логики.
Кстати с одновибраторами при минимальной модификации схемы можно получить ВГА развертку - добавляем 1/2 ТМ2 для дублирования строк и кварц повыше частотой, чтобы кадры были 60Гц и всё.

vinxru
15.05.2012, 14:48
В оригинале стояло не 27512, а пара ПЗУ меньше килобайта. Можно без проблем вернуть оригинальные ПЗУ. Я поставил 27512, так как она меньше места занимает и на этапе разработки её можно перепрограммировать по 10 раз за день. Что я и делаю, так как частота строк и центровка экрана никогда не соответствует расчетной.

---------- Post added at 14:30 ---------- Previous post was at 14:30 ----------


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

В Микро-80 применялись одновибраторы. И мне очень понравилось, что центровка экрана настраивается переменным резистором.

---------- Post added at 14:35 ---------- Previous post was at 14:30 ----------


хочется сделать копм на комплектухе тех времен, но с минимумом корпусов м\сх

Очень просто получается, если переводить процессор в ждущий режим на время вывода графики. Тогда процессор освобождает шину и не нужны мультиплексоры. И использовать счетчик адресов с Z-состоянием (например на 2xПЗУ+2xИР23).

Мультиплексоры (4xКП11, АП6) и схема синхронизации с буфером (ТМ2, ИР23) не нужна.

---------- Post added at 14:39 ---------- Previous post was at 14:35 ----------

Еще была мысль использовать ВГ75 без ВТ57.

ВГ75 будет вызывать прерывание процессора, а обработчик прерывания будет читать нужное место памяти и отдавать данные ВГ75.

Но вряд ли успеет процессор. 78 байт на строку * 30 строк * 50 кадров в сек = 117 Кб в секунду. Это меньше 5 команд на байт. В одном прерывании можно сразу отдать 78 байт. (Внутри ВГ75 буфер)

---------- Post added at 14:48 ---------- Previous post was at 14:39 ----------

А еще можно ПЗУ знакогенератора выкинуть. В моем случае будет 32 Кб ОЗУ из которых 16 Кб займет черно белый видеорежим 512x256. Типа БК0010.

AIS
15.05.2012, 15:22
Очень просто получается, если переводить процессор в ждущий режим на время вывода графики.
При экране 64х32 символа проц будет в ждущем режиме почти всегда. В Галаксии с таким подходом экран 32х16, да и проц там Z80 на 3МГц - помощней будет .

Думаю над такой идеей - сделать проц и видео полностью асинхронными и без тормозов-ожиданий.
Для этого сделаем буфер записи - три восьмиразрядных регистра, где по сигналу процессора !WR защелкиваются все его адреса и данные. Видеосхема во время выдачи выходным сдвиговым регистром видео на выход
подключает адреса и данные видеоОЗУ к регистрам и записывает данные из буфера в видеоОЗУ. Если сигнал !WR проца активен, то записи не происходит, но это не страшно - попытки записи в видеоОЗУ намного чаще, чем частота записи процем данных в буфер - не эта попытка будет удачно, так следующая.
И на экране не будет артефактов - обращениям видеосчетчиков к видеоОзу никто не мешает.

b2m
15.05.2012, 15:26
Еще была мысль использовать ВГ75 без ВТ57.
У Роботрона 1715 так было сделано. Но если добавить ВГ75, то компьютер будет уже "почти РК-совместимый" :)


ВГ75 будет вызывать прерывание процессора, а обработчик прерывания будет читать нужное место памяти и отдавать данные ВГ75.
Зачем прерывания? Посмотри схему Роботрона, там вроде всё просто: запрос DMA при помощи несложной логики превращался в HOLD/HLDA, счётчики адреса сбрасывались по кадровому СИ.


А еще можно ПЗУ знакогенератора выкинуть. В моем случае будет 32 Кб ОЗУ из которых 16 Кб займет черно белый видеорежим 512x256. Типа БК0010.
Ну и чем это будет отличаться от Специалиста/Ориона? Лучше иметь программируемый знакогенератор, как у МЦПГ Партнёра.

vinxru
15.05.2012, 15:34
Зачем прерывания? Посмотри схему Роботрона, там вроде всё просто: запрос DMA при помощи несложной логики превращался в HOLD/HLDA, счётчики адреса сбрасывались по кадровому СИ.

Что бы без счетчиков. Меньше деталей.

Atari
15.05.2012, 15:41
смотрите как сделано в "спеце" а потом и в "орионе".
выборка видео ОЗУ по одному адресу производится дважды. точнее производится две попытки одну из которых может перебить проц.
данные заносятся в регистр и после второй попытки защелкиваются сдвиговым. вуаля.

vinxru
15.05.2012, 15:49
Так и сделал.

---------- Post added at 15:49 ---------- Previous post was at 15:43 ----------

В своей версии я сделал необычное формирование сигнала загрузки графики в сдвиговый регистр. Обычно для этого используется счетчик и схема сравнения с нулем.

Я же поставил триггер, который устанавливается по спаду F2 и сбрасывается пиксельклоком (1,38 МГц).

AIS
15.05.2012, 15:51
Вуаля известное, хочется за счет применения статического ОЗУ упростить комп в несколько раз - не только за счет самих микросхем ОЗУ, но и мелкой\крупной сопутствующей логики.
Кроме того предложенный мной выше видеоконтроллер можно отлаживать без процессора - 11 тумблеров на адреса, 8 на данные и кнопка запись - можно в ручную записать любой символ в любое место экрана.
Да и к любому другому компу его можно подключить через ВВ55 -будет комп с дополнительным текстовым дисплеем.

vinxru
15.05.2012, 16:01
Если вытащить процессор и подключить линии SYNC кнопку ЗАПИСЬ, то будет то же самое. Можно будет отлаживать тумблерами.

Atari
15.05.2012, 16:03
далее по "идеологии"
стави мпроц на 2,66, тут надо сразу рассмотреть Z80
пиксельклок 8 МГц делим на 6 и получаем 512 пикселей из которых 64 символа = 384 пикселя.
25 строк (иначе возможы непрятности с адаптпциями софта) знакоместо 10 строк (мне так нравится)
итого 1600 байт в любой 8 битной кодировке, коих в ПЗУ будет.
получаем полных 60КБ нижнего адресного пространства.
F000h-F63Fh - видеозу
F640h-F7DFh - ячеки монитора стек
F7E0h-F7FFh - порты ВВ 8 шт по 4 байта
F800h-FFFFh - ПЗУ.

выборку портов/ОЗУ/ПЗУ осуществляем спомощью ПЗУ (флеш) можно выбирать с точностью до байта.

аппаратный курсор мы уже обсуждали.

---------- Post added at 15:03 ---------- Previous post was at 15:02 ----------


Да и к любому другому компу его можно подключить через ВВ55 -будет комп с дополнительным текстовым дисплеем.
скорость скрола такого дисплея оставит желать лучшего, или придется хранить его копию в быстром ОЗУ.

vinxru
15.05.2012, 16:06
А если сделать ширину символа в 9 пикселей (как на VGA), то счетчик делитель на 6 не нужен. Сигналы прямо с ГФ24 можно брать.

---------- Post added at 16:06 ---------- Previous post was at 16:04 ----------


25 строк (иначе возможы непрятности с адаптпциями софта)

Переделаю ка я еще прошивку Кристалла. Из за 30 линий в высоту программы РК86 криво работают. Пусть будет 25.

Atari
15.05.2012, 16:06
vinxru, ф топку ГФ24 :v2_mad: :v2_sick: это уебанство подкупающее только одним корпусом.

b2m
15.05.2012, 16:51
Что бы без счетчиков. Меньше деталей.
Как тебе такой вариант:
- дешифрацию делаем так, чтобы из области экрана процессор читал либо 00h, если есть DRQ от ВГ75, либо 0FFh, если нет.
- при чтении из области экрана и наличии DRQ производится запись байта из ОЗУ в ВГ75

Тогда по прерыванию, которое будет возникать от DRQ, мы просто переходим на область экрана где остановились прошлый раз, а по адресу 38h запоминаем из стека адрес, куда нужно будет прыгнуть следующий раз (если вышел за конец экрана, то на начало экрана).

Тогда, я думаю, процессор успеет. :)

Atari
15.05.2012, 16:56
Тогда, я думаю, процессор успеет.
проц то может и успеет, а когда он остальным будет заниматься?

b2m
15.05.2012, 17:03
78*30*50*4 такта = 468000 тактов. При частоте 2МГц это лишь четверть.

---------- Post added at 18:03 ---------- Previous post was at 18:00 ----------

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

vinxru
15.05.2012, 17:07
Интересная идея.

Atari
15.05.2012, 17:11
процессор должен курить! :v2_smoke:

когда вы потом придумаете мафон, програматор, флоповод, SD и прочее вы будете постоянно спотыкаться.

vinxru
15.05.2012, 17:15
когда вы потом придумаете мафон, програматор, флоповод, SD и прочее вы будете постоянно спотыкаться.

В РК86 просто видео выключали и не парились.

Atari
15.05.2012, 17:18
просто видео выключали и не парились.
не просто, а сама подпрограмма занималась регенерацией РУ3(5/6).

а ваш следующий шаг - диск на флеше.

Kakos_nonos
15.05.2012, 18:54
Ещё можно сделать как в ZX80. Процессор будет сам заниматься выводом информации на экран. В таком случае для вывода видео нужно всего 1-2 микросхемы: выходной регистр (можно ВВ55, тогда остаются ноги для клавиатуры) и сдвиговый регистр.
Также можно сделать как у ZX81. Это так же как и у ZX80, только изображение выводится по прерыванию, а не во время ожидания ввода с клавиатуры.
В таком случае надо оставлять свободное время для основной работы процессора. Это можно сделать не заполняя весь экран, а только 2/3, тогда 1/3 остаётся на вычисления.

AIS
15.05.2012, 19:24
Kakos_nonos, Такого типа уже есть хорошая схема - Галаксия. Там уже доведено до совершенства - ничего не добавить и не отнять. И даже плата разведена односторонняя можно дома ЛУТом зафигачить, а не заказывать где-то.

vinxru
15.05.2012, 19:27
Процессор будет сам заниматься выводом информации на экран. В таком случае для вывода видео нужно всего 1-2 микросхемы: выходной регистр (можно ВВ55, тогда остаются ноги для клавиатуры) и сдвиговый регистр.

Нам надо за 48 мкс вывести 64 байта. А процессор за 48 мкс успеет только ~30 команд выполнить.

600.000 операций в секунду это 1,6 мкс на операцию.

Atari
15.05.2012, 19:37
это похоже на конкурс минимум микросхем низкой интеграции.

я соблазняю народ на схему с максимальной производительностью, максимумом памяти, с нормальным 8-бит знакогенератором с шустрым скролом.
аппарат "СР/М ready", а вы?

vinxru
15.05.2012, 19:51
прикрутим. Я как раз хотел с CP/M разобраться. Я тут неспешно операционку продумываю и пишу для БК и мне было бы полезно.

AIS
15.05.2012, 20:02
это похоже на конкурс минимум микросхем низкой интеграции.
да, получается так :)


я соблазняю народ на схему с максимальной производительностью, максимумом памяти, с нормальным 8-бит знакогенератором с шустрым скролом.
Вы думаете, что тем, что мы здесь придумаем будет кто-то пользоваться?
Авторы спаяют себе по штучке - хорошо ещё, если будет законченный образец, а не макетка, поставят на полочку и будут любоваться.
Тут приятнее сам процесс, чем результат. :)

Atari
15.05.2012, 20:21
Авторы спаяют себе по штучке
а остальные будут им завидовать ;)))))))))))))))))

vinxru
15.05.2012, 20:46
Спаяют, я уверен. Если компьютер будет проще, чем Спектрум и будет куча CPM софта.

Вот последняя схема:
http://s16.radikal.ru/i191/1205/f0/71bf49856e88t.jpg (http://radikal.ru/F/s16.radikal.ru/i191/1205/f0/71bf49856e88.png)

И я её еще упрощу. Есть идея, заменить 2xТМ2+ИЕ5 на одну ИЕ23.

AIS
15.05.2012, 21:04
и будет куча CPM софта.
Я вот решил пойти своим путем, поэтому хочу спросить -для СРМ экран 64х32 символа лучше, чем 64х25?

Что за ИЕ23?

vinxru
15.05.2012, 21:34
ИР23 - 8-битный триггер с Z-состоянием.

---------- Post added at 21:34 ---------- Previous post was at 21:07 ----------

Вот так

http://s55.radikal.ru/i149/1205/11/db595b24548bt.jpg (http://radikal.ru/F/s55.radikal.ru/i149/1205/11/db595b24548b.png)

Atari
16.05.2012, 11:19
для СРМ экран 64х32 символа лучше, чем 64х25
лучше 80х25

vinxru
16.05.2012, 11:38
лучше 80х25

Процессор придется на 3,5 Мгц заводить.

3500000/2/15625/4*3 = удастся прочитать 84 байта на строку.

И при ширине симовола в 6 пикселей, в строке будет 80*6 = 480 точек.

И частота пикселей 3500000/2*6 = 10,5 Мгц, что больше поддерживаемой телевизором. (А при моей ширине в 9 пикселей вообще 15,7 Мгц.)

---------- Post added at 11:38 ---------- Previous post was at 11:34 ----------

Печатные платы быстрее делать, чем монтажку паять. Я только процессор к мультиплексорам припаял. Теперь ПЗУ к мультиплексорам припаять и можно проверять.

Atari
16.05.2012, 11:42
не получится, телек и так подрезает, а для минимального VGA надо разгонять больше.

http://tubes.org.ua/musor/vga_timing_RUS.gif

получается что если разогнать 512 пикселей всего (вместо 800), из которых видимых 384 (75 а не 80%)то пиксель клок получится 16,1 МГц выборка 2,685, а двойная выборка = 5,37МГц, что впринципе реализуемо ;)

тут уж однозначно Z80H или 8085 и много чего интересного.

b2m
16.05.2012, 12:16
тут уж однозначно Z80H и много чего интересного.
Пора отрезать оффтопик в новую тему :)

Atari
16.05.2012, 12:20
b2m, согласен.
хоть компутер имеет чисто исторический интерес, но эту ветку надо оставить в плане работы над эмулером и возможно (?) вдруг появившемся софтом и прочей инфой.

vinxru
16.05.2012, 20:52
Фтопку монтажку. Это слишком долго.

vinxru
17.05.2012, 11:43
Надо добавить схему загрузки с магнитофона.

vinxru
18.05.2012, 12:30
Подключил ко входу ВВ55 кадровый синхроимпульс. Во многих программах КСИ используется в качестве таймера. Без него игры будут с непостоянной скоростью работать.

Печатную плату нарисовал. Все детали запаиваются только снизу. (Если делать, что бы детали запаивались с двух сторон, то размер платы можно значительно уменьшить.) Теперь 1 вечер травить и сверлить. И еще два вечера запаивать перемычки.

А на выходных дачный сезон. :( Поэтому не скоро будет.

http://s019.radikal.ru/i607/1205/bb/81c1c9c9b80et.jpg (http://radikal.ru/F/s019.radikal.ru/i607/1205/bb/81c1c9c9b80e.png)

Кроме отличия в адресе контроллера клавиатуры/экрана и высоты экрана, он полностью совместим с Кристаллом-2. Высота экрана изменена с 32 до 25 строк для совместимости c РК-86. ОЗУ сделано непрерывным 0000-7FFF. Экран лежит в 7800-7FFF. Контроллер клавы 8000-BFFF. ПЗУ в С000-FFFF Назовем этот комп Кристалл-3.

http://s019.radikal.ru/i616/1205/22/9dd1fc490a4b.jpg

tnt23
19.05.2012, 13:22
Чтобы CP/M гонять, ОЗУ вроде должно идти с 0000.

b2m
19.05.2012, 14:06
ОЗУ сделано непрерывным 8000-7FFF
Чтобы CP/M гонять, ОЗУ вроде должно идти с 0000.
ОписАлся человек, с кем не бывает. Я думаю он имел ввиду 0000-7FFF.

vinxru
24.05.2012, 01:08
Вчера плату протравил, просверлил. Сегодня уже час (и десять минут) запаиваю перемычки.

http://s019.radikal.ru/i606/1205/08/e311aeefe0a0.jpg

vinxru
26.05.2012, 21:39
http://s018.radikal.ru/i511/1205/ca/4d9ae9cd4cc6.jpg

vinxru
08.06.2012, 15:01
Депрясняк пройдет, доделаю. Мне только микрухи впаять надо. Руки паяльник не держат.

Я уже плату обпилил, проверил все соединения. Было несколько обрывов... штук двадцать. Разучился я ЛУТ делать.

vinxru
04.08.2012, 18:20
Больше я не буду заниматься проектом Кристалл-3. :( Надо сосредоточится на других проектах.

Проект Кристалл-2 считаю завершенным. ПЗУ я дизассемблировал, полностью закомментировал, исправил все ошибки, а потом еще сделал максимально совместимым с РК-86. Схему восстановил.

Плату спаял. Сам компьютер вроде работает, но видеосигнал отвратительного качества.

К тому же я потерял все файлы по Кристаллу-3, когда у меня сломались жесткие диски. Второй раз лень рисовать. :(

Павел Рябцов
25.07.2018, 12:05
Может кто заинтересуется http://zx-pk.com/forum/viewtopic.php?f=7&t=10734