Virtually all CP/M computers placed on the market since 1981 use the Z80 microprocessor. The Z80 actually runs all of the 8080 instructions but in addition there are more instructions unknown to the 8080. The extra instructions were designed for increased speed, easier programming, and more compact code. For this reason it is to your best advantage to program in Z80 code for CP/M even if you program for 8080.NB: Даты выпуска CPU и числа транзисторов можете не оспаривать - здесь точнее, чем в WIKI сайта, т.к из иностранных источников, не из отечественных.8080 (8080A) разработан в декабре 1973 года, содержит 5000 (5500) транзисторов и прогоняет 244 команды. Группа его разработчиков ушла из фирмы INTEL, основав фирму ZILOG и уже в марте 1976 года был разработан Z80, содержащий 8500 транзисторов и прогоняющий более 1000 команд. Фирма Intel в декабре 1976 ответила выпуском 8085, но это была последняя жалкая попытка противостоять Z80. Так появился Z80, процессор времён и народов.
Система команд 8080 давно умерла. Процессор был снят с производства в начале 80-х и забыт, также как и его предок 8008. А система команд Z80 получила самое массовое распространие в мире среди 8-ми разрядок. Z80 захватил мир. Если сравнивать число произведенных кристаллов, то 8080 не составит и 0.001% от Z80 и его клонов. Его выпускают тиражами в десятки миллионов в год, в течение 40 лет. Многие ведущие фирмы производители ИМС выпустили более совершенные версии Z80 c адресацией выше 64К, с тактом в 40 МГЦ, а также огромное число однокристаллов с системой команд Z80. Причём все эти микросхемы производятся до сих пор и широко используются.
ПО для компьютеров на 8080 не составляет и 10% от ПО для компьютеров на Z80. И почти всё имеет дату до 1982 года. Из фирменного ПО для 8080 есть только CP/M и несколько древних компилляторов ЯВУ. Компьютеры на КР580 имеются только в России и только здесь обитают программы для КР580.
Не менее революционной оказалась и мнемоника ассемблера Z80. Любой программист, поработавший хоть один день в мнемонике Z80, уже никогда не возвращается к неудобной мнемонике INTEL. Поэтому даже те программисты, что делают ПО для КР580 используют мнемонику Z80, для чего в M80 используется ключ .Z80.
Вопрос из серии "риторических" или из серии "хочу обсудить, и неважно что".Сообщение от Vladimir_S
Но нет проблем, давайте обсудим и такую ерунду.
Насчёт удобный-неудобный, это субъективно. Кто как привык, тому так и удобно. Левшам удобна левая рука, мне нет. А вот насчёт логичный-нелогичный можно и разобраться. Используя логику.
Может быть лишь два варианта.
1. Мнемоника КР80 логичнее
2. Мнемоника Z80 логичнее
Вы сами прекрасно понимаете, что мнемоника Z80 намного логичнее. Это в Вас говорит "дух отрицания", заставляя защищать заведомо проигрышную позицию. В глубине души Вы и сами знаете, что мнемоника Z80 лучше и удобнее для программиста.
Если Вы уверены в обратном, разместите в теме, где собираются программисты для Z80 утверждение, что мнемоника КР580 логичнее, чем мнемоника Z80. С интересом буду наблюдать, как Вас там, образно говоря, "заплюют и затопчут".
Именно потому. Одно дело, когда ты делаешь крошечную маленькую программку. А другое дело, когда ты полностью сосредоточен на сложном алгоритме и мозги постепенно "закипают". При этом даже небольшой выигрыш, что даёт логичная мнемоника, облегчает жизнь.Сообщение от error404
Совершенно точно. Абсолютно согласен. Но поражает сколько защитников у КР580 ! В действительности эти люди защищают свои привычки, а не истину. Товарищи просто не понимают... Когда они странслируют первые 20 кб кода с собственного исходника Z80, их мнение изменится.Сообщение от error404
Понятно, что в теме, где "роятся" исключительно фанаты КР580 мне трудно найти понимание. Словами тут убедить невозможно. Это как объяснить дальтонику цвета?
Если мозг человека уже "подсел" на КР580, то подсознательно он отторгает более удобный Z80, т.к это требует доп.усилий, а мозг человека по природе ленив, стремится минимизировать усилия.
Я привёл фразу о мнемониках ассемблера Z80, как дополнительный довод в пользу Z80. Но кто запрещает и при Z80 использовать КР580-мнемонику c КР580 ассемблерами - ASM.COM, MAC.COM и M80.COM с ключом '.8080'. Или пользуйтесь своим TASM-ом (а он имеет '.phase' и макро-команды?).
Существуют очень древние ассемблеры для Z80 (1978) в мнемонике INTEL. Как это выглядит можете посмотреть, если при дизассемблировании CP/M дизассемблером DISASM.COM на вопрос "Есть ли Z80 команды?" ответить 'Да'. Вы увидите смешные INTEL команды типа SRAL, STAR, STAI, DSBC, LSPD, LDAR, INP, OUTP, PCIY, DADY, JMPR, JRZ, JRNZ, EXAF. На команды INIR, LDIR, RRD, SET, RES извращений уже не хватило, потому их не стали уродовать. Очевидно такой ассемблер для Z80 создали, чтобы можно было брать старые исходники 8080 и вручную переделывать их для Z80, и использовать старые библиотеки. Именно так бы выглядел ассемблер Z80, если бы не придумали более лучший вариант.
Как можно догадаться, что делают эти команды? В то время, как у Z80 про любую команду всё ясно по её виду. Ассеблер Z80 не требуется учить. Достаточно простой человеческой логики. Зачем нужны MOV, MVI, LDAX, STAX, LXI, если это всё LD. Откуда понятно, что 'M' это не персонаж из фильма про агента 007, а подразумевает регистры HL. Или куда переход по RST 0...7, тогда как, например, RST 38 сразу указывает адрес перехода, не надо считать на калькуляторе. Почему написано D, а имеется ввиду DE? И таких несуразностей море. Это не ассемблер, а издевательство над людьми.
Ну вот скажите по какой логике Вы сделаете вывод, что, например, команда 'INP L' работает через регистр С. Тогда как, если написать её по-человечески IN L,(C) вопросов просто не остаётся.
Непонятно о чём речь. О системе команд процессора, изображаемой на бумаге мнемоникой. Или о компилляторе, который тоже почему-то, принято называть ассемблером.Сообщение от Vladimir_S
Система КР580 оптимальна и достаточна. И отнюдь не примитивна. До сих пор не придумали лучше, потому-то Z80 производят до сих пор. Вот 6502 - примитивный, а КР580 нет. Именно поэтому разработчикам Z80 не удалось кардинально что-то изменить для программирования. Они, естественно, старались и сделали всё, что смогли - существенно упростили обрамление (регенерация 4116, встроенный преобразователь для напряжения подложки, один клок, встроенный системный контроллер). Но для программирования, самое кардинальное, что им удалось добавить, это прерывания в моде 2. Остальное - удобно, но не обязательно, т.к реализуется и на КР580. Поэтому 98% кода всех программ для Z80 используют только базовые команды КР580 (некоторые в укороченном JR варианте).
Основной выигрыш от Z80 заключается - в одном питании, JR-командах, загрузках RR-регистров из ОЗУ, INT в моде 2 и возможности поднять такт. И в его ассемблере, - т.е просто в том какими буквами закодировали команды. Если использовать мнемоники Z80 для КР580, это даёт выигрыш и ему. Поэтому я и утверждал, что важен ассемблер.
А если имеется ввиду компилятор, то я ещё не видел оптимизирующего ассемблера Z80 (который сам переставляет куски кода так, чтобы достичь максимального числа JR-команд, и тем самым сократить объём кода). А если этого нет, то M80 лучше всех современных кросс-ассемблеров. И дата производства не играет роли. М80 писала группа профессионалов высокого класса и доводила "до ума" много лет. Недаром он стоил дороже, чем CP/M. А современные новодельные компилляторы писали одиночки любители.
Утомило читать?
Ещё немного. Если в новом РК будет много ОЗУ и значит CP/M, но не будет Z80, то он останется только со старым ПО. Т.к на Западе было гораздо больше копьютеров на Z80, то в сети почти не найти программ CP/M для КР580. Поэтому нужен Z80 и не на внешних довесках, "втыкаемых" в панельку КР580, что некрасиво и потому неприемлемо. Ещё никто не привёл доводов, что лучше ставить КР580, чем Z80. Я вообще не представляю, что здесь можно возразить, кроме невразумительного "Я не люблю Z80".
Считаю, что полная совместимость с базовым РК это аксиома. Если этого не придерживаться, то надо назвать это другим именем и уйти в другую тему. А программ "лезущих" в порт клавиатуры во много раз больше, чем корректных. Причём "лезут" в порт клавиатуры не только командами для памяти, но и командами IN/OUT. Например, команда 'OUT (83),A' реально попадает в адрес 8383H, т.е в порт УС доп.ППА D14. Из-за этого мы не можем выделять для ППА менее чем 400H ячеек - 8000...83FF. А команды IN/OUT используемые для доступа в пространство пямяти плохо "переваривает" Z80.Сообщение от Vital72
При установке Z80 придётся очищать программы от IN/OUT. Это несложно (тем более при наличии эмулятора) и намного проще, чем ставить две КП11 для переключения младших адресов на старшие (что сразу же приходит в голову аппаратчикам). При этом без разницы стоит ППА по адресу 8000 или в области F000. Переделывать программы с OUT надо в обоих случаях. И даже для процессора 8085, в применении которого вообще не вижу смысла (уж лучше КР580 с преобразователем напряжений +12,-5). Ещё раз уточняю, избавление от IN/OUT команд - это не проблема и не может быть использовано как довод против Z80. Кстати, жду доводы против Z80. Есть такие?
Что касается фиксированной смены адресации. Конечно можно сменить во всех наглых программах адрес ППА (и это даже не потребует теперь особо много труда, т.к есть эмуляторы). Но стоит ли это делать, - менять шило на мыло? Менять адрес клавиатуры на другой. Завтра появится идея, что лучше перенести ППА в область В/У и что? Опять всё переделывать?
Но главный довод против этого в том, что будут люди, которые не захотят ничего менять. И если и сделают что-то на своих платах РК, то только лишь что-то несложное, реально полезное. И главное, - не нарущающее совместимость.
А если, кто-то навсегда поменял себе адреса портов на другие, отчего не имеет совместимости, то это реально означает, что это он сам добровольно "ушёл с РК86". На какой-то другой неизвестный компьютер. И обсуждать его схемотехнику надо в другой теме.
Поэтому, как бы ни была проста Ваша схема, в стартовом режиме она должна сохранять полную совместимость с РК. Открытие ОЗУ в адресах A000...BFFF или 8400...BFFF этому требованию удовлетворяют. Т.к к доп.ППА на A000 обращается только директива U (чтение блока из ROM-диска) и единственная программа - программатор УФ-ПЗУ. И переделать её под любой адрес - работа на 10 минут для любого новичка. Потому можно занимать адреса ППА D14, а также использовать другие "дыры" не конфликтующие с В/У. А ROM-диск не нужен, т.к благодаря Z80 в ПЗУ F800 освободится не менее 100H байт, куда без проблем уместится загрузчик ДОС с любого носителя. Z80 даёт большие преимущества при модернизации ROM-BIOS-ов, а вот при КР580 с этим будут проблемы.




