Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Для начинающих (http://zx-pk.ru/forumdisplay.php?f=43)
-   -   В чем смысл раздельных областей программы и данных (http://zx-pk.ru/showthread.php?t=13019)

CodeMaster 31st May 2010 22:43

В чем смысл раздельных областей программы и данных
 
То же решил задать тупой вопрос в этом разделе ;-) Помню впервые это понятие встретил в руководстве по клону именно Спектрума, вот до сих пор мучит этот вопрос :-) Сам-то я в основном на БК работал, там всё ОЗУ кроме стека было сквозным и данные были в перемешку с кодом. Это зависит от архитектуры проца или машины в целом?

IanPo 31st May 2010 22:58

В Спеке тоже можно все вперемешку.
Разделение кода и данных - просто хороший тон программирования.
Если речь про архитектуру, то Гугли это:
Архитектура фон Неймана
Гарвардская архитектура

Keeper 1st June 2010 00:08

Имеется ввиду то, что данные не могут быть исполняемыми :) Например, в процах архитектуры x86 начиная с 286 в защищенном режиме попытка, скажем, перехода (JMP) в сегмент данных вызовет исключение...

Quote:

Originally Posted by CodeMaster (Post 287974)
Это зависит от архитектуры проца или машины в целом?

В основном от архитектуры проца. Z80, например, позволяет отделить опкоды от всего остального (хотя это и не совсем то о чем Вы спрашиваете), но в спектруме это не используется (разве что в видеопроцессоре ZX-NEXT :) ).

Quote:

Originally Posted by IanPo (Post 287980)
Архитектура фон Неймана
Гарвардская архитектура

Это не совсем то (или совсем не то :) ). Гарвардская архитектура требует отдельной шины для команд и отдельной шины для данных. В Фон Неймановской используется общая шина для команд и данных.

IanPo 1st June 2010 00:18

Quote:

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

Vadim 1st June 2010 07:34

Quote:

Originally Posted by CodeMaster (Post 287974)
В чем смысл раздельных областей программы и данных

В современных процах - что бы в область данных не подсунули вредоносный код, которому потом передадут управление. В старых процах типа z80, 6502, 8086 процессор аппаратно не отличает коды и данные, ему по барабану что исполнять. В процессорах типа i8035 коды программ физически отделены от данных, есть два адресных пространства которые не пересекаются. Адрес 0 для кода это одно, для данных - другое. Т.е. что я хочу сказать, почти все современные компы построены по архитектуре фон-неймана, включая пентиумы все. Просто, как уже было сказано выше, разделять их можно логически для удобства, как правило хорошего тона. Кроме того процы начиная с 80286 стали позволять помечать определенные сегменты как сегменты данных, для исключения их выполнения (по ошибке). Это как бы некий такой уровень защиты. А где вы увидели о разделении данных и кода именно в ключе спектрума, не знаю. Скорее всего из наставлений Инфоркома или из перепечаток интервью с западными программистами. На Z80 можно делать как душа пожелает. Только вот аппаратно пометить сегмент данных или стека не удастся. В Z280 только такие средства появились.

CodeMaster 1st June 2010 08:10

Quote:

Originally Posted by Vadim (Post 288022)
А где вы увидели о разделении данных и кода именно в ключе спектрума, не знаю.

Если найду эту книгу, скажу. Мне кааца, это было в разделе описАния комманд.

Keeper 1st June 2010 10:06

Quote:

Originally Posted by IanPo (Post 288003)
Z80 аполитичен, что данные, что код: что подсунут на адрес исполнения, то и исполняет.

Quote:

Originally Posted by Vadim (Post 288022)
На Z80 можно делать как душа пожелает. Только вот аппаратно пометить сегмент данных или стека не удастся.

Повторюсь, у Z80 есть сигнал /M1 который позволяет аппаратно отделить опкоды от всего остального, т.е. Z80 фактически может адресовать 128Кб, по 64Кб опкодов и данных. Другой вопрос что это практически нигде не используется. Единственный спектрум в котором эта возможность используется это ZX-NEXT и то в видеопроцессоре, там сигнал /M1 видеопроцессора заведен на адресную линию ПЗУ и соответственно имеется два независимых адресных пространства.

CodeMaster 1st June 2010 19:00

Quote:

Originally Posted by Keeper (Post 288034)
Повторюсь, у Z80 есть сигнал /M1 который позволяет аппаратно отделить опкоды от всего остального, т.е. Z80 фактически может адресовать 128Кб, по 64Кб опкодов и данных.

Скорее всего именно про это я и читал.

ZEK 1st June 2010 19:09

Quote:

Originally Posted by Keeper (Post 288034)
овторюсь, у Z80 есть сигнал /M1 который позволяет аппаратно отделить опкоды от всего остального

А току от него, опкод читаем из области с кодами, аргументы из области данных???

Vadim 3rd June 2010 09:14

Quote:

Originally Posted by Keeper (Post 288034)
т.е. Z80 фактически может адресовать 128Кб, по 64Кб опкодов и данных.

Чушь. Полнейшая охинея!!!! Сигнал М1 что означает? Читать доки умеем? МАШИННЫЙ цикл. Что это? А? Выборка кода операции (КОП) и не более того! Следующие за машинным циклом циклы не стробируются М1!!!! Z80 сам по себе не может отличить коды команд от данных, память одна. 65536 ячеек адресного пространства. Отделяются они программистом, который заранее построит программу так, что бы проц не стал "выполнять" данные.

Что за детский сад? Откуда столько глупостей пишите? Я в шоке просто!!! Читайте книги по Z80, Спектруму и не пишите бреда!

Keeper 3rd June 2010 09:42

Quote:

Originally Posted by Vadim (Post 288541)
Чушь. Полнейшая охинея!!!! Сигнал М1 что означает? Читать доки умеем? МАШИННЫЙ цикл. Что это? А? Выборка кода операции (КОП) и не более того!

Quote:

Originally Posted by Vadim (Post 288541)
Следующие за машинным циклом циклы не стробируются М1!!!! Z80 сам по себе не может отличить коды команд от данных, память одна.

Взаимоисключающие параграфы? :v2_lol::v2_lol::v2_lol: Курим схему компьютера ZX-NEXT на досуге...

---------- Post added at 07:42 ---------- Previous post was at 07:35 ----------

Кстати, неплохой повод пофлемить, а зачем же тогда прилепили это недоразумение к Z80? Могли бы просто вывести какой нибудь сигнал /IAK например чтоб подтверждать прерывания :v2_laugh:

ZEK 3rd June 2010 10:46

Quote:

Originally Posted by Keeper (Post 288546)
стати, неплохой повод пофлемить, а зачем же тогда прилепили это недоразумение к Z80?

Смахивает на попытку развить тему сопроцессора

Vadim 3rd June 2010 12:57

Quote:

Originally Posted by Keeper (Post 288546)
Курим схему компьютера ZX-NEXT на досуге...

Я уже говорил выше. Читайте доки. Я знаю о сигналах Z80 уже лет так 15 наверное. Если использовать сигнал М1 для выборки из другой памяти, то дальнешие коды команды он получит из основного (не по М1) ОЗУ. И что будет? Бред будет. Сидите и смейтесь дальше.

---------- Post added at 13:37 ---------- Previous post was at 13:34 ----------

Quote:

Originally Posted by Keeper (Post 288546)
Взаимоисключающие параграфы?

Где? Как взаимоисключающие? КОП состоит из ОДНОГО байта. ОДНОГО. А вся команда может содержать до 4-х байт. КОП идет первым. Я не понимаю Keeper, сложно что ли было открыть книгу по Z80? Или как? Зачем вынуждаете меня писать прописные истины? Может ещё будем рассуждать сколько бит в байте?

P.S. Хотя для справедливости ради и что бы другие тут не стали выезжать и гнуть пальцы, скажу, что если первый байт окажется префиксом, то Z80 генерирует второй машинный цикл подтверждая его сигналом /M1. Дополнительный байты в команде сигналом M1 НЕ стробируются.

---------- Post added at 13:57 ---------- Previous post was at 13:37 ----------

P.S. http://trd.speccy.cz/book/Z80CPU.ZIP - курим главу 4.

Keeper 3rd June 2010 13:02

Quote:

Originally Posted by Vadim (Post 288581)
Где? Как взаимоисключающие?

Я так и не понял может Z80 отделить КОП (я это назвал опкод в своих постах) от всего остального или нет?

Quote:

Originally Posted by Vadim (Post 288581)
Я уже говорил выше. Читайте доки. Я знаю о сигналах Z80 уже лет так 15 наверное. Если использовать сигнал М1 для выборки из другой памяти, то дальнешие коды команды он получит из основного (не по М1) ОЗУ. И что будет? Бред будет. Сидите и смейтесь дальше.

Я уже говорил выше, Вам стОит посмотреть схему ZX-NEXTa, а не читать доки на Z80.

psb 3rd June 2010 13:11

короче, отделить-то можно, но смысла НЕТ.

например, LD A,(#1234).
1. читается код команды LD A,(...) c M1
2. читается мл. байт адреса БЕЗ М1 по следующему адресу
3. читается ст. байт адреса БЕЗ М1 по следующему адресу

итого, разделите память по М1 и жить станет очень весело:)

Vadim 3rd June 2010 13:13

Quote:

Originally Posted by Keeper (Post 288593)
Я так и не понял может Z80 отделить КОП (я это назвал опкод в своих постах) от всего остального или нет?

Z80 стробирует первый машинный цикл, читайте доки! Он называется M1. Команда состоит от одного до 4-х байт. Код команды всегда занимает один байт и от 1 до 3-х байт - параметры команды, префикс не считается командой, это как-бы псевдокоманда. Таким образом если у нас есть команда ld hl,1234h, то в памяти она выглядит как
hex:
21 - при считывании стробируется низким уровнем на выходе M1
34
12
Используется зачем - написано в доке. Для подтверждения прерывания совместно с iorq, для указания внешним схема что он приступил к выборке следующего КОП. По его спаду (переходу в 1), по сигналу /RFSH производится регенерация динамического ОЗУ. Более того, цикл чтения КОП более короткий нежели простые циклы чтения. И именно этот сигнал используется в Профи версии 5, что бы вставить после него такт ожидания в турборежиме, удлиняя его (выборку КОП) с 3-х тактов до 4-х.
По схеме ZX-Next скажу вот что, пока я ее не смотрел (не было у меня ее), найду скачаю - погляжу. Уверен, что ни каких 2-х разных 64К пространствах там нет. Скорее всего все совсем иначе. M1 используется для других целей (т.к. второй Z80 там используется в схеме видеоконтроллера).

Keeper 3rd June 2010 13:13

Quote:

Originally Posted by psb (Post 288598)
короче, отделить-то можно, но смысла НЕТ.

Вот не надо подсказывать ;) Речь ведь шла о возможности, а не о целесообразности :)

Vadim 3rd June 2010 13:14

Quote:

Originally Posted by psb (Post 288598)
короче, отделить-то можно, но смысла НЕТ.

Он хотел отделить всю команду, что бы можно было программу читать из одного банка памяти, а данные из другого. Т.к. называемая гарвардская архитектура. На Z80 это сделать Нельзя!

Keeper 3rd June 2010 13:20

Quote:

Originally Posted by Vadim (Post 288599)
Используется зачем - написано в доке. Для подтверждения прерывания совместно с iorq

И не только, читайте доки до конца, смотреть диаграммы Power-Down Acknowledge и Power-Down Release

Quote:

Originally Posted by Vadim (Post 288599)
По его спаду (переходу в 1), по сигналу /RFSH производится регенерация динамического ОЗУ.

Это что-то новое: /MREQ = 0, /RFSH = 0

Quote:

Originally Posted by Vadim (Post 288599)
Более того, цикл чтения КОП более короткий нежели простые циклы чтения. И именно этот сигнал используется в Профи версии 5, что бы вставить после него такт ожидания в турборежиме, удлиняя его (выборку КОП) с 3-х тактов до 4-х.

Наверное все-таки с 2 до 3...

Quote:

Originally Posted by Vadim (Post 288599)
По схеме ZX-Next скажу вот что, пока я ее не смотрел (не было у меня ее), найду скачаю - погляжу

Сейчас посмотрю, у меня где-то есть...

Keeper 3rd June 2010 13:22

1 Attachment(s)
Схема...

Keeper 3rd June 2010 13:24

Quote:

Originally Posted by Vadim (Post 288601)
Он хотел отделить всю команду

Вот это уже принципиально, где я писал про всю команду? Ссылку в студию!

Vadim 3rd June 2010 13:31

Quote:

Originally Posted by Keeper (Post 288604)
Это что-то новое: /MREQ = 0, /RFSH = 0

"По его спаду" - когда М1 перейдет из активного (0), в неактивное (1) состояние. См. диаграммы работы z80 ничего нового я не сказал, всё тоже самое только другими словами.

---------- Post added at 14:31 ---------- Previous post was at 14:27 ----------

Quote:

Originally Posted by Keeper (Post 288034)
Повторюсь, у Z80 есть сигнал /M1 который позволяет аппаратно отделить опкоды от всего остального, т.е. Z80 фактически может адресовать 128Кб, по 64Кб опкодов и данных.

Что это означает? Если мы разбираемся в схемотехнике и программировании, то нам становится ясно зачем сделаны эти выводы. Мы хотим поместить программу в одну память, а данные которые она обрабатывает в другую, которые между собой вообще никак не связаны. Получим 64К адресное пространство команд и 64К адресное пространство данных.
Я уже устал повторять, что на Z80 это _НЕ_ возможно. Ну указывает он при выборке команды сигналом m1 что КОП выбирает, и что? Зачем используется - уже написал выше. Если по этому сигналу переключать память и читать код из другой памяти, то выйдет чушь, что справедливо заметил ZEK, в посте номер 9.

Keeper 3rd June 2010 13:34

2 Attachment(s)
.
Attachment 18248
Attachment 18247

Vitamin 3rd June 2010 13:34

Я каэшн, дико извиняюсь, но, если я правильно понял, при выполнении следующего кода:
Code:

addr:
ld a,#10
ld bc,#1234

из кодового сегмента будет делаться выборка по адресам addr и addr+2, а из сегмента данных по адресам addr+1,addr+3,addr+4.

И в чем здесь сокровенный смысл?

Keeper 3rd June 2010 13:37

Quote:

Originally Posted by Keeper (Post 288034)
у Z80 есть сигнал /M1 который позволяет аппаратно отделить опкоды от всего остального

Да, я то слегка подустал, выделил жирным шрифтом... И там же я сделал ссылку на клон спекки где это используется...

Vadim 3rd June 2010 13:39

Для понимания как там работает zx-next ещё бы прошивку к ПЗУ тому. Ясно что первую команду он выберет из адреса 0, если команды однобайтные то A10 будет при выборке команд всегда в 0, а вот когда появляются параметры у команд, то A10=M1 станет равным 1, зачем это сделано я не понимаю пока.

Keeper 3rd June 2010 13:40

Quote:

Originally Posted by Vitamin (Post 288610)
И в чем здесь сокровенный смысл?

.
Quote:

Originally Posted by Conan (Post 132066)
Использование сигнала М1 тоже не являлось защитой. Причина, по которой сделано именно так в том, что на адресных линиях Z80 в видиопроцессоре ZX-Next формируются различные сигналы. Поэтому, занимать лишние адреса под память видеопроцессора было нельзя. Их и так не хватало. Но меньшее число адресов означает меньший объем адресуемой памяти, а это тоже ограничение (на объем ПЗУ).
Решение с M1 позволяло использовать память команд и данных отдельно. То есть Z80 в такой схеме может адресовать 64К команд плюс 64К данных. Как способ расширения адресуемой памяти в ZX Spectum это не годится. Но для видеопроцессора такое решение очень подходило.

---------------------------------------------------

Опять таки выделил жирным...

Vadim 3rd June 2010 13:41

Quote:

Originally Posted by Keeper (Post 288612)
И там же я сделал ссылку на клон спекки где это используется...

Там нет и намёка на 128К и 2 разных адресных пространства. Извините. Смотрю схему, думаю. Сделано хитро, но почему так? Из принципа? Для чего это? Что это даёт? схема стала проще? Быстрее? Гибче? Прошивку надо ещё глядеть что бы сделать выводы. Пока это просто экзотическое решение.

Keeper 3rd June 2010 13:43

Vadim, это цитата разработчика ZX-NEXT...

Vadim 3rd June 2010 13:47

Quote:

Originally Posted by Keeper (Post 288617)
Vadim, это цитата разработчика ZX-NEXT...

Вижу. Но я вижу и схему. Два по 64К не сделать. Вернее можно конечно подставлять 2 ПЗУ, хаотично переключаться между ними по М1. Но для создания компа в котором бы выполнялись программы и были бы данные это не подходит Конан и пишет об этом. Вообще мне непонятно зачем было принято такое решение о применении Z80 в таком ключе? Смотрю и не понимаю. Микроскопом гвозди забивать....

Keeper 3rd June 2010 13:52

Quote:

Originally Posted by Vadim (Post 288619)
Микроскопом гвозди забивать....

На то время, в принципе понятно, проще разводка, меньше микросхем, дешевле плата и как бонус защита от копирования (ПЗУ видеопроцессора)

Quote:

Originally Posted by Vadim (Post 288619)
Два по 64К не сделать.

Это да, "полноценных" (где заняты все байты) не получиться, ИМХО

Vadim 3rd June 2010 14:04

Quote:

Originally Posted by Keeper (Post 288621)
На то время, в принципе понятно, проще разводка, меньше микросхем, дешевле плата и как бонус защита от копирования (ПЗУ видеопроцессора)

На то время это было не лучшим решением, а на мой взгляд худшим. Смотрим схему профи, хоть 3.x -5.x. На плате видеоконтроллер занимает не больше места, если и больше то процентов на 10. При этом не использует дорогой на то время Z80.
А как защита ПЗУ не годится. Выпаиваем и считываем. ПЗУ на профи не было защитой, а являлось элементом "конечного автомата" который мы могли программировать, а точнее плавно менять параметры сигналов INT и синхронизации и ещё кое-чего.

Keeper 3rd June 2010 14:14

Quote:

Originally Posted by Vadim (Post 288628)
На то время это было не лучшим решением...

http://zx.pk.ru/showthread.php?t=112
http://zx.pk.ru/showthread.php?t=7577

Если осилите эти два топика, думаю, вопросов станет меньше, или же наоборот, больше но в любом случае будет полезно...

psb 3rd June 2010 14:30

ну, реально, конечно, разделить на 2 памяти по 64к можно, если нагородить огород:) поставив плисину и загнав в нее логику с длинами команд - это более чем реально, но монструозно. и М1, кстати, здесь вполне сгодится. наверное;)

Vadim 3rd June 2010 14:49

Ясно ясно. Conan описывает метод взлома плавающих битов. Я бы так делать не стал сразу. Раз программа - стал бы дизассемблировать, хотя бы те куски которые читаются стабильно. Плавающих битов быть много не должно и 1000 раз считывать было бы не нужно. А вообще теперь ясно зачем всё это делалось. Но вот ведь как вышло. ZX-Next самый малочисленный клон из-за защиты от копирования.

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

Quote:

Originally Posted by Keeper (Post 288621)
На то время, в принципе понятно, проще разводка, меньше микросхем, дешевле плата и как бонус защита от копирования (ПЗУ видеопроцессора)

Прочитав половину первого топика могу сказать, что выбор такой схемы был по нескольким причинам, но главная это защита от копирования (о которой я раньше не знал, т.к. инфы о zx-next особо не было) и уж потом уменьшение деталей на плате. Если бы я знал о том, что в ZX-Next была защита от копирования ПЗУ видеоконтроллера, то и вопросов бы не возникло;-) В топике писали что типа её не взломать. Взломать можно. Распечатав листинг программы и много думая, отладчик не поможет, отлаживать придется в голове, придется и циклы расписать. О чем там Чунин Роман и говорит частенько. Читаем доки по Z80 и в путь. Работа сложная но не невыполнимая. Можно взломать это ПЗУ и сделать модификацию без плавающих битов. Это реально.

Keeper 3rd June 2010 15:09

Quote:

Originally Posted by Vadim (Post 288640)
Можно взломать это ПЗУ и сделать модификацию без плавающих битов. Это реально.

Взломать можно все, это вопрос времени и актуальности. Т.к. у меня нет ни плат ни эмулятора, то и смысла заниматься этим нет, результат проверить негде. Если БК все же пришлет набор плат, то тогда и продолжу начатые ранее ковыряния, тем более имеющаяся прошивка видео-контроллера позволяет проверить работоспособность компьютера.

Conan 3rd June 2010 15:47

Quote:

Originally Posted by Vitamin (Post 288610)
Я каэшн, дико извиняюсь, но, если я правильно понял, при выполнении следующего кода:
Code:

addr:
ld a,#10
ld bc,#1234

из кодового сегмента будет делаться выборка по адресам addr и addr+2, а из сегмента данных по адресам addr+1,addr+3,addr+4.

И в чем здесь сокровенный смысл?

К примеру, требуется выполнить вот такой код:
LD A, (BC)
LD HL, (nn)
LD I, A
JP (HL)
используя только три разряда (A0-A2) шины адреса Z80.

В любом случае для него потребуется (байт):
1 + 1
3 + 2
2
1
Итого: 10 байт памяти. Из них 7 байт кодов операций (команд) и 3 байта данных. То есть в общем пространстве комманд-данных адресовать его тремя разрядами (A0-A2) шины адреса Z80 невозможно.

Теперь разделим пространство команд и данных на две части (сигналом M1). Получим адресумемые 8 байт для команд и 8 байт для данных. Размещаем необходимые данные для команды:
LD A, (BC)
"под": JP (HL)
(BC указывает на адрес в сегменте данных, по которому в сегменте кода находится: JP (HL))

а для команды:
LD HL, (nn)
"под": LD A, (BC) и (первым байтом) LD HL, (nn)
(nn указывает на адрес в сегменте данных, по которому в сегменте кода находится: LD A, (BC))

В итоге получили возможность исполнять этот код, используя всего три разряда адреса шины адреса.

Разумеется, остались незанятыми (из 16 байт) 3 байта в сегменте команд (между LD HL, (nn) и LD I, A) и после JP (HL) и 5 байт в сегменте данных. Но для чего их использовать всегда находилось ;).

---------- Post added at 14:47 ---------- Previous post was at 14:20 ----------

Quote:

Originally Posted by Vadim (Post 288619)
Вообще мне непонятно зачем было принято такое решение о применении Z80 в таком ключе? Смотрю и не понимаю.

Объясняю. В начале 90-х какой клон спека был самым популярным? Ага. "Ленинград 1". Почему? У него же инт кривой, вейты, адресация портов неправильная, системной шины нет, видеосигналы непойми какие. Одно недоразумение. Что же получается, люди были дураками? Ан нет. Дело в том, что в "Ленинграде 1" используется всего 41 (сорок одна) микросхема. При цене в среднем 3 рубля за корпус, получалось 123 рубля. Зарплата молодого инженера. И это самое дешевое. А если собирать "Москву 48", то это уже 68 корпусов. Да еще приходилось кондючки подбирать, что бы заработало.

Как сократить кол-во микросхем? В те годы ни циклонов ни альтер не было. Заказать БИС на БМК стоило слишком дорого. А Z80 продавались по 30 рублей. То есть, как десяток обычных микросхем.

В ZX-NEXT в минимальной конфигурации 36 микросхем + еще один Z80. Итого на 15 рублей (тех денег) дороже "Ленинград 1", но:
видеосигналы идеальные,
потры (включая #FF) корректные, инт на месте,
никаких вейтов,
возможности расширения большие (4/5 слотов),
настраивать (подбирать кондючки резючки) не надо.

И всего то потому, что второй Z80 с программой заменил кучку мелкой неизменяемой логики.

Vadim 3rd June 2010 16:42

Conan, теперь многое ясно, но всё же. Микросхемы были не так дёшевы, помнится набор плата+детали в том же 89-м году для ленинграда-1 стоил 500-650р. Дешевле не было просто. В 1990-м около 800-900р. Микросхем в магазинах в нашем городе вообще не было, купить их было нереально. А реализация видеоконтроллера на счетчиках+прошивка ПЗУ более легкая и не менее правильная. Писать прошивку для zx-next чрезвычайно трудоёмкое занятие. На западе бы такими вещами думаю не стал бы заниматься. В плане защиты, думаю это была самая сильная защита из аппаратных на то время.

Conan 3rd June 2010 18:03

Quote:

Originally Posted by Vadim (Post 288675)
Микросхемы были не так дёшевы, помнится набор плата+детали в том же 89-м году для ленинграда-1 стоил 500-650р. Дешевле не было просто. В 1990-м около 800-900р. Микросхем в магазинах в нашем городе вообще не было, купить их было нереально.

В наборы входили процессоры, ПЗУ, платы, мелочевка. На форуме уже обсуждали их стоимость, поищите. В вашем городе может так дорого продавали наборы, потому, что не было радиорынка. Хотя даже на Тушинском радионынке в Москве наборы продавали дороже, чем можно было купить по отдельности. Потому, что набор покупаешь у одного человека, а за рассыпухой еще побегать надо. Хотя цены колебались, в зависимости от доступности, наглости продавца, инфляции и т.д. В Питере было относительно стабильно и дешево, потому, что там радиорынок (в Автово) работал. А в Москве до весны 1991 радиорынка по сути не было. Гоняли радиолюбителей милицией. Попробуй при этом купи подешевле. Хватали абы что и по любой цене. Вот и колебались цены но самые низкие были именно летом 1991 года. Тогда мелочевка упала до 2-3-х рублей за корпус (ЛА, ЛЕ, ЛЛ и т.д.). А до этого стоили и по 5 рублей и по 10 (за редкие позиции типа КР580ВА86).

Quote:

Originally Posted by Vadim (Post 288675)
А реализация видеоконтроллера на счетчиках+прошивка ПЗУ более легкая и не менее правильная. Писать прошивку для zx-next чрезвычайно трудоёмкое занятие. На западе бы такими вещами думаю не стал бы заниматься. В плане защиты, думаю это была самая сильная защита из аппаратных на то время.

До сих пор нерасколотая ;). Хотя кто только не брался и КОЕ и JTN и т.д. Что касается трудоемкости, это правда, примерно как сборка головоломки. Зато интересно.
У реализации решения ПЗУ+счетчики есть свои плюсы и есть минусы. Впервые это решение появилось в "Красногорске" (не самом популярном клоне), а затем Михаил Яцык использовал его в "Профи". Леонид Ермаков (мой напарник по разработке ZX-NEXT) был знаком с Яцыком и оценивал его разработки весьма высоко. Но для ZX-NEXT решение ПЗУ+счетчики не подходило потому, что требовалось помимо видеосигналов и INT-а формировать еще адреса видеовыборки из ОЗУ (для перекючения между видеорежимо спека и CGA), изменять (уменьшать) период регенерации (что бы надежно работало), формировать медленные сигналы (FLASH). На ПЗУ+счетчики этого было не реализовать, пришлось бы устанавливать множетство микросхем дополнительно. И разумеется, защитить хотелось (хотя бы на первое время). С тем же "Профи" вышла нехорошая история, когда две фирмы потом его не поделили, а некоторым покупателям в случае проблем отказывали в поддержке (потому, что купил плату не их).
Что касается "на западе так бы не делали", так на западе в то время и фирменные ZX-ы уже прекратили выпускать. А если говорить про "плавающие" ячейки, так Intel по той же технологии ПЗУ выпускать стал, на 8 лет позже, чем они заработали в ZX-NEXT.

---------- Post added at 17:03 ---------- Previous post was at 16:35 ----------

Quote:

Originally Posted by psb (Post 288638)
ну, реально, конечно, разделить на 2 памяти по 64к можно, если нагородить огород:) поставив плисину и загнав в нее логику с длинами команд - это более чем реально, но монструозно. и М1, кстати, здесь вполне сгодится. наверное;)

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

Vadim 4th June 2010 08:03

Quote:

Originally Posted by Conan (Post 288693)
С тем же "Профи" вышла нехорошая история, когда две фирмы потом его не поделили, а некоторым покупателям в случае проблем отказывали в поддержке (потому, что купил плату не их).

Да, я в курсе. Читал в доках по профи, Sayman искал разработчиков, тоже кое что узнал, да и на форуме тут была инфа.


Quote:

Originally Posted by Conan (Post 288693)
Что касается "на западе так бы не делали",

Quote:

Originally Posted by Conan (Post 288693)
До сих пор нерасколотая .

Я это понимаю, защита сделана хорошо, в ваших требованиях к разработке и фактах понятно что это было оптимальным решением (про CGA до недавнего времени не знал или забыл что был такой режим (сейчас только вспомнил, что в ZX-Форум была инфа тогда что есть видеорежим, но не был поддержан программно). Конечно на счетчиках+массив данных это не реализовать, я все понимаю, а своим высказыванием я хотел сказать вот что
1)Схема очень и очень сложная, это очень сложный конечный автомат, как клубок из которого торчат ниточки и дернув за каждую получаем некий результат который ещё и зависит от того что перед этим дергали. Академически это интересно, а вот практически... Сложно проектировать и создавать, ладно вы делали вдвоем, а если это компания где много сотрудников которые приходят и уходят, никто не поймет толком что и как. Т.е. разработка должна быть понятна и ясна, документирована. А тут сложная головоломка. При том, как я понимаю, возможности Z80 в ней практически исчерпаны, можно было взять и любой другой проц, важны состояния проца, режимы и кол-во выводов. Чем их больше - тем проще, не нужно использовать iorq m1 и прочее (как бы) не по делу. На западе все же сделали бы заказную мс. Да, я знаю что у нас это было нереально.

Quote:

Originally Posted by Conan (Post 288693)
между имеющимеся командами можно еще команд наставить (в одном линейном адресном пространстве команд две разные программы, в зависимости от того с какого места стартовать) и данные под инструкциями прятать другие. Но программировать в такой среде - жуть.

Я такие методы использовал. И видел как используют другие. Бывает очень выручает.

---------- Post added at 08:59 ---------- Previous post was at 08:49 ----------

2) Можно было бы сделать аналогичный функционал с т.з. пользователя (но без защиты от копирования) на другой элементной базе и в другом виде. Этот вариант уникальный, интересный, но развития практически не имеет. Захотим сделать что-то ещё от схемы придется отказаться. Те задачи и требования которые Вы тогда перед собой поставили - выполнили на пять с плюсом. Но это очень трудоёмко.

Ещё я хотел вот что сказать, наши кооперативщики ("Дисплей" которые делали Колоры) 700р и больше в месяц получали. Как же так Вы отдавали им по 1р за ПЗУ? Готовый комп они продавали за тысячу и выше. Нельзя было отдавать свои разработки. Ну не получилось со слотом, сами бы попробовали. Сделать свой бизнес. Найти деньги, занять, не знаю, ну не отдавать же ноу-хау дельцам.

---------- Post added at 08:59 ---------- Previous post was at 08:59 ----------

2) Можно было бы сделать аналогичный функционал с т.з. пользователя (но без защиты от копирования) на другой элементной базе и в другом виде. Этот вариант уникальный, интересный, но развития практически не имеет. Захотим сделать что-то ещё от схемы придется отказаться. Те задачи и требования которые Вы тогда перед собой поставили - выполнили на пять с плюсом. Но это очень трудоёмко.

Ещё я хотел вот что сказать, наши кооперативщики ("Дисплей" которые делали Колоры) 700р и больше в месяц получали. Как же так Вы отдавали им по 1р за ПЗУ? Готовый комп они продавали за тысячу и выше. Нельзя было отдавать свои разработки. Ну не получилось со слотом, сами бы попробовали. Сделать свой бизнес. Найти деньги, занять, не знаю, ну не отдавать же ноу-хау дельцам.

---------- Post added at 09:03 ---------- Previous post was at 08:59 ----------

Quote:

Originally Posted by Conan (Post 288693)
В вашем городе может так дорого продавали наборы, потому, что не было радиорынка.

У нас и не продавали, продавали в Челябинске на радиорынке (и то я узнал о этом уже году в 1992-1993). Кому было надо ездили туда и покупали, а у нас Спектрумы стоили выше тысячи рублей. В магазине видел комп (похожий корпусом на Атари-130) с монитором цветным за 4000р. Баснословная сумма.


All times are GMT +4. The time now is 23:52.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.