Не первый раз это читаю, и все равно не понимаю, в чем неудобство, а тем более нелогичность?
Вид для печати
Мой стаж работы с ВМ80 и Z80 примерно одинаков (ну может ВМ80 на пару-тройку лет больше). И я ненавижу мнемонику Z80, я даже под TASM свою написал, совместимую с оригинальной. У ВМ80 (точнее i8080) самая логичная система мнемоник. Получается, я не любой, да и как можно говорить за всех то?
HardWareMan, Ну насчет ненависти к мнемонике это уже через край, но я считаю - для Z80 нужна своя мнемоника, для ВМ80 своя. И вообще кому как удобнее. И ни кому не надо руки отрывать.
Команда подсказывает? Шикарно. А кто подскажет саму команду? Запомнить полтора десятка состоящих из непроизносимых буквосочетаний команд для одного общего по логике действия ( "загрузка <приемник>, <источник>), это дико неудобно. Человеческий мозг биологически стремится к экономии, интеловские мнемоники для него после Z80 - абсурд.
[/off
]5 копеек.
Начинал с ВМ80, продолжил на Z80. Поначалу было непривычно, и команд чуточку побольше. Привык, теперь мнемонику ВМ80 не очень понимаю:) Все свои подделки для РК , типа "Хелло, World!" рисую в Ужасме соотвеЦтВенно в Z80 мнемонике, и все отсальные (чужие:), проекты, напосмотреть:), перевожу же в нее, конвертирую или конвертерами, или в ИД-е сразу в Z80. Основные дизасмы мониторов РК86, Микроши, Апогея и etc. - в мнемонике Z80. Мне так удобнее, но точно никому не навязываю свойю т.з. по поводу логичности\нелогичности. Вооот елси бы в SJAsm-e была бы мнемоника ВМ80 - может было бы и по-другомуу?))[свернуть]
ооо!!! и нас паЩитали!! тогда надо отредактировать пост, и откусить нижнюю половину.
Error404, Вообще не аргумент. И для человеческого мозга это совсем не задача.
Да какая разница какой ассемблер? Они, если по честному, оба довольно примитивные. Что совсем не удивительно. Созданы то на заре процессорных технологий.
Я ничего не зубрил :)
Мнемоники всех систем, что я ковырял, примерно схожи. И все они нормально раскладываются в голове на описания команд, на лету. JMP, BRA, BSR, JNC, MVI, MOVE.B, ADDI.W - все они содержат в себе подсказку. На то они и мнемоники. После получаса ковыряния в исходниках - читаешь далее как книгу, пускай и на иностранном языке, но - понятную.
Исключение - Z80 (Z180). Его ассемблер выделяется из общего ряда, той самой "упрощенностью", когда базовая команда тянет за собой большой набор возможных вариаций применения.
Я не могу сказать, что что-то хуже или лучше, начинал я именно с мнемоник Z80. Мне в общем-то фиолетово, какой там ассемблер, дело привычки.
Да, ассемблер AVR мне тоже знаком, я и на нем писал. Быстро привыкаешь и начинаешь "думать, как процессор". И проблема языка тебя более не колышет.
Проблема мнемоник - надуманная.
Не нравится набор ВМ80 - ну, пиши на SJAsm'е, на мнемониказ Z80. Я так и делал поначалу, вполне себе работает.
Вот мы с тобой не первый раз это обсуждаем, и ты как не слышишь. Ну не хочу я вникать в то что там думали авторы мнемоник (что они думали на самом деле напишу ниже), если в результате мне вместо одной мнемоники надо помнить десяток с одинаковой логикой. Я не хочу помнить, что присвоение константы, переменной и адреса (если это натянуть на ассемблер) это у некоторых изобретателей три разных(!) операции (на самом деле их там не три у них, а больше). И это не из за глубоких смыслов, которых ты тут нарисовал, а тупо из-за того чтобы им не анализировать операнды команд, а переложить это на меня, программиста: чтобы я транслятору на вход готовенькое подавал и ему самому не вникать. А вот трансляторы Z80 это делать вынуждены, за что авторам тех мнемоник большое человеческое спасибо: у меня есть вещи поинтереснее для запоминания, чтем сто однотипных, но разных по написанию команд, и самое главное, я не буду это делать из-за чье-то лени (или непредусмотрительности, ибо как говорили предки "это хуже чем преступление - это ошибка").
Error404, а ты не думал о том, что инженеры не только хотели "нагрузить" программиста, но и разгрузить (причем существенно) сам сборщик (не называю ассемблером, чтобы не было путаницы, но это и не компилятор)? Ведь когда процессоры вышли, программу для них можно было собрать либо вручную, либо на машине-предшественнике (который явно слабее), либо на самом же процессоре, что еще надо сделать сначала. И тут действительно, MOV/MVI парсятся гораздо проще (полноценный ассемблер Микрон в 2КБ умещается). Это тебе сейчас, спустя 30+ лет, имея под боком мощный PC и кроссплатформенный сборщик кажется, что рудимент. Ты сейчас вообще ничего можешь не помнить, юзай кроссплатформенный С, например. Сможет ли AVR собирать сам свои программы? Так что ты не прав, по поводу лени или непредусмотрительности. И я повторюсь: если бы не копирайты, то Z80 говорил бы на языке i8080, ведь не даром он совместим с ним.
Ладно, это уже холивор, так что я завязываю дальше об этом трындеть. Давайте уже препарируем Апогей. :)
Цитата:
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 с этим будут проблемы.
Если Вы уверены в обратном, пойдите в мечеть и скажите что Аллаха нет, а Бог есть. С интересом буду наблюдать, как Вас там образно говоря "заклюют".
И почему у меня нет такого при переключении на MC48, MCS51 или даже все тот же AVR или, не дай Б-г ARM? А на М68К так и вообще вы должны молиться, вот там точно самый универсальный MOV[.BWL] <EAX>,<EAX>.
Я скомпилил гораздо больше 20к под Z80. Я не считаю его убогим - это охрененный CPU. Но выбор его мнемоник решался не его охрененностью а очень широкой распространенностью. Признайте сей факт.
Так же, как исламисту православие, верно?
Никто не отторгает сам Z80. Читайте внимательно. И да, я уже писал, что у меня своя удобная мнемоника под Z80 для TASM. И там нет этих SRALов. Их, видимо, придумали адепты мнемоник Z80. Их цель мне не понятна.
А я, например, считаю, что С - издевательство над людьми, хотя сам на нем пишу и уже прилично. Что от этого поменяется?
Питание - да. Расширенный набор команд - двойное да. Буквы - нет. Основной выигрыш в том, что он мог команды i8080, и можно было старый софт крутить, пока не было родного. Потом люди раскачали родной и тут уже стал решать расширенный набор команд. Пришла популярность - пришла необходимость учить его мнемоники. Вот и все. Это закон рынка и признак успешности потомка (пусть и незаконно рожденного). Посмотрите на историю x86, там было то же самое. Правда, на определенном поколении система команд стала настолько запутанной и сложной, что выручать уже стали абстрактные ЯСУ и ЯВУ.
Меня - нет. И в итоге я был прав - чистый холивор.
Касаемо сабжа решать должен только наличествующий софт. Ибо новое писать никто не будет. ВМ80 я так же считаю рудиментом опять же только из-за питания (хотя старый ВМ80-only софт придется кому-то допиливать до работоспособности на Z80).
Когда я вижу листинг с подряд идущим десятком команд LD, мне становится грустно. Потому что, чтобы понять, что делает этот кусок, нужно напрягать мозг. Разнообразие мнемоник i8080 позволяет расставить "якоря", и уже не теряешься, в какой строчке какие значения регистров были и что они означали.
Ещё один фрагмент из RCPM (Remote CP/M) Public Domain. BBS from USA 1989. К 1989 архив RCPM содержал уже 150 дискет с бесплатными программами для CP/M (интересно где это ПО теперь).
Кто нибудь знает, что означает "far easier"? Попробуйте перевести PROMPT-ом и посмотрим, намного ли это отличается от того, что написал я? И заметьте, что тут речь именно о мнемониках, а не о редко используемых индексных командах и двойном наборе регистров, что по мнению HardWareMan-а, как-раз и способствовало успеху Z80.Цитата:
Z80 mnemonics are a great improvement over those used for the 8080. Some thought was given to logical, universal mnemonics that are much easier to remember and use. I learned assembly language on the 8080 and resisted the change to Z80 at first. After using Z80 mnemonics for a short time, I became very unwilling to do anything with 8080 code. Now I run almost every 8080 program that comes in through a 8080 to Z80 translating program (XIZ.COM by Irv Hoff, another free, public domain program). Even if you are writing programs for the 8080 it is still far easier to write in Z80 mnemonics.
А я считаю, что кроме JR и LD (LOC),RR в Z80 добавилось мало-что особо полезного. Точнее польза от индексных и альтернативных регистров - невелика. IX,IY упрощают (меньше думать), но тот же самый код, причём с тем же самым объёмом и быстродействием, получается и без них (это из-за того, что на префиксы тратится много байтов). Больше пользы от половинок индексных регистров, но это недокументированные команды. Которые стали известны только, когда их открыли синклеристы в конце 80-х. JR и LD RR,(LOC) ничего не меняют, а лишь сокращают объём кода. Из половинок индексных регистров и регистра I (если нет прерываний) - польза только, в качестве быстрого места для хранения, причём и ускорение это даёт лишь на чуть-чуть, относительно использования для хранения ячеек ОЗУ. Альтернативные регистры лишь сокращают число PUSH-POP-ов (и заметная польза от них - только при написании эмулятора КР580 на Z80, т.к именно тут хранятся эмулируемые регистры КР580).
Я считаю, что расширения системы команд Z80 отнюдь не так полезны, как это принято думать. Что и доказывает их реальное использование. Если бы это было не так, то было бы очень сложно адаптировать игры ZX для КР580. Но это делали на убогих КР580 машинах. Без отладчика Z80, без дизассемблера Z80 (с убогим DIS МИКРОН), без дисковода - и всё за за неделю. Это было возможно именно потому, что расширения железа Z80 (IX,IY,I,R) программистами в реальности используются очень мало. Отчего конверсия заключается, главным образом, в замене JR на JP и адаптации команд типа LD (LOC),RR и переделке п/п-мм работающих с клавиатурой и экраном.
Поэтому немаловажную роль в успехе Z80 сыграла именно грамотная мнемоника, а отнюдь не добавка индексных и альтернативных регистров, как думает HardWareMan.
Вот это всё объясняет. Отличная мысль. Вот отчего мнемоники команд придумали такими неудобными. Их делали не для программиста, а для упрощения ассемблера.Цитата:
Сообщение от error404
Когда 8080 только появился, для него ещё не было никаких трансляторов, даже PL/M. Поэтому авторам 8080 пришлось написать хоть какой-то ассемблер для начала. Не думаю, что он был сложнее МИКРОНА. Конечно его писали не в машинных кодах, а на кросс-ассемблере. Инструментов и опытных программистов КР580 ещё не было. Потому задача раработчиков КР580 была придумать мнемоники такими, чтобы это максимально упростило компиллятор. Что они и сделали.
А разработчики мнемоник Z80 изобретали мнемоники на 2 года позже, и потому позаботились о программистах (они могли себе это позволить - уже имели и опыт, и МАКРО-ассемблер для КР580).
Это явно пустые домыслы.Цитата:
Сообщение от HardWareMan
Думаю, что все знают, что графический интерфейс впервые был применён APPLE (LISA 1983, MAC 1984). А изобрёл графический интерфейс Алан Кей. Эта идея была украдена 'Мелко-SOFT'-ом для своей 'WINDOWS'. Иск по правам на графический интерфейс длился более 5 лет и APPLE проиграла. С мотивацией, что можно запатентовать вид интерфейса, но не его идею. Так получается, что и колесо нельзя запатентовать, а лишь его диаметр... В любом случае все знают, кто был первым и кто лишь заимствовал.
Так вот, точно также нельзя запатентовать мнемоники. Процессоров в 70-е годы уже было более 3-х десятков (с однокристаллами), а слово MOVE или LOAD всего одно и много логичных производных от них - не придумать.
И я знаю, что мнемоника ZILOG была сразу такой. Она не была вначале интелловской, и лишь потом её запретили патенто веды. Отчего "несчастным" инженерам из ZILOG пришлось изобретать что-то своё.
Когда ещё воообще не было ассемблеров Z80, в описании Z80 (с датой 1976) приведены именно мнемоники Z80 (хотя и с небольшими отличиями). Более того, в комплект документации включена макро библиотека, которая позволяла транслировать программы для Z80 на МАКРО ассемблерах для КР580. Не все имена МАКРО команд соответствовали мнемоникам ZILOG приведённым в документации (и это специально, чтобы упростить МАКРО). Но это однозначно не были мнемоники INTEL.
Что и доказывает, что ZILOG изначально имел хорошую мнемонику, а не вынужден был её изобрести, якобы из-за того, что патентное бюро запретило использовать "дерьмо" от INTEL.
Скажите это английской вике. Я ссылку давал. А эта ваша логичность вообще бред. JR - понятно, Jump Relative. Тогда почему JP а не JA (Jump Absolute)? Ведь все равно condition вынесли в операнды, верно? Да даже местные находили косяки в этой самой логичности. Объясните другой факт: "удобные" мнемоники родились за 20 лет до тех же AVR и тем более ARM, так почему последние придерживаются правила формирования мнемоник как у i8080, а не упрощают работу программиста как в случае с Z80? Ведь сейчас никто не пишет программы для AVR на самом AVR, для этого подойдет даже PC 10ти летней давности, верно?
И на последок. Для Altair 8800 был написан Барсик самим Биллом на бумажке (опять же исторический факт - гуглите). Вполне реально, я тоже так делал для Специалиста в школе, а потом проверял в кружке.
- - - Добавлено - - -
Это больше относится к RISC, потому как некоторые из оставшихся CISC стали слишком Complex (буква из аббревиатуры).
Маленько покромсал тему.
Imho, после интеловских мнемоник, зилоговские как-будто язык более высокого уровня, и это даже без учета расширенного набора команд.
OK, расскажу как я изучаю процессоры, для которых потом приходится писать на ассемблере.
- берется полный мануал ISA (Instruction Set Architecture)
- в Word-е составляется полная табличка всех инструкций, упорядоченная по бинарному коду, с разборкой всех полей и их возможных значений, а также зарезервированные опкоды
- потом эта табличка копируется и автоматически упорядочивается по мнемоникам, получается вторая табличка
Процесс занимает несколько дней, но в итоге составления такого табличного конспекта в памяти откладывается все - и какие инструкции, и с какими аргументами они могут работать, набор ресурсов архитектуры, флажки и прочее. И потом как-то не возникает вообще вопросов почему нельзя написать типа "mvi D, 258" (применительно к 8080). С этой точки зрения я считаю вариант мнемоник i8080 более полезным, он позволяет легче помнить обо всех этих особенностях архитектуры. Но, не всем такие тонкости нужны, многие просто не обращают на это вниманию, кодят себе, да и усе, без подробностей. Таким людям, наверное, удобнее мнемоники Z80. В-общем, некоторые любят механику, а некоторым коробку-автомат подавай. И те, и те - ездиют :)
Vslav, коллега! Вот как я сделал для М68К.
Анекдот в тему:
Представь, что у тебя есть ценная мысль, и ты ее думаешь.
Дальше представь, что у меня есть ценная мысль и я ее думаю.
Допустим, мы с тобой поделились друг с другом своими ценными мыслями.
Внимание, вопрос - сколько у нас с тобой стало ценных мыслей?
Две? А вот и нет - одна. А почему? Да просто дураки думают всегда одинаково :)
PS. Талмуд по 68К хороший, да :)
Господа, по-моему многие из вас (включая высокопоставленных лиц) откровенно путают котлеты с мухами! Наиболее существенное отличие мнемоник Z80 от 8080 заключается в том, что мнемоники Z80 упорядочены, а 8080 - нет. Упорядочивание заключается в том, что в мнемониках Z80 операция жёстко отделена от операнда, а в мнемониках 8080 всё смешано в одну кучу - и операция, и операнд(ы). В общем случае подмножество команд не однозначно соответствует подмножеству адресаций, а разработчики 8080 попытались "объять необъятное", смешав в одну кучу и команду, и метод(ы) адресации (кстати, сделано это было, как уже справедливо заметили, не в последнюю очередь для упрощения кода самого Ассемблера!). Как это у них получилось (хорошо или плохо) - своего мнения высказывать не буду, но очевидно, что полностью вместить операнд в мнемонику они не сумели или не решились, оставив некоторые операнды в поле операндов. Поэтому вся ваша дискуссия сводится не к религиозной борьбе, а лишь к спору о том, что логичнее: отделять мух от котлет или валить всё в одну кучу, хотя всё равно куч будет две, и во второй будут только мухи. Что в переводе на русский означает отделять ли команду от метода адресации или валить в одну мнемонику и команду, и адресацию, хотя всё равно у половины мнемоник остаётся дополнительное поле для адресации.
P.S.: Я не знаю, сколько кода я написал в молодости, но третьей по счёту программой, которую я написал не за деньги, а для души, был кросс-ассемблер для Z80 под RT-11 на ДВК, однако написал я его в мнемониках 8080 именно потому, что в таком виде он пишется задней левой ногой без применения мозга. :)
Дело не в мухах и котлетах, а просто появилсся лишний повод поболтать о близком и родном, что весьма ценится после информационного спама из телевизора, ИМХО :)
- - - Добавлено - - -
Пошевелив очучениями, наверное соглашусь с SaNchez. Мнемоники и набор команд Z80 действительно заставляет призадуматься о "чуть высшей ступеньке в языке". Подобное же чувство было так же при ковырянии МС68к. Оба процессора очень хороши.
Простой вопрос на засыпку. Берем старый не очень качественно сохранившийся печатный исходник.
И встречаем там такое:
И ломаем голову.Код:ld A, B (или 8, видно на старой журнальной печати плохо)
ld A, D (или 0)
В варианте 8080:
Вывод - мнемоники 8080 несут БОЛЬШЕ информации об инструкции. Обычно это не имеет особого значения, кому что нравится. Но вот для старых листингов - 8080 годится лучше.Код:mvi A, 8 (читаем однозначно как константу 8)
mov A, D (читаем однозначно как имя регистра D)
- - - Добавлено - - -
Тогда Си - самый лучший ассемблер :)
Так и есть, Си это высокоуровневый ассемблер с неограниченными возможностями. Пользоваться ассемблером приходится только из-за тупой оптимизации кода компилятором. Если бы придумать идеальный оптимизатор для Си, это был бы единственный ассемблер. :)
А вот Си плюс, это уже полноценный язык. :p
КР580 самый лучший процессор, свой, отечественный, пусть и немного стыренный. :v2_dizzy_army: :v2_tong2:
Давайте согласимся, что обычно проблема выглядит несколько иначе...
В дампе кода, приведенного в журнале, непонятны сами хексы.
0 или D? B или 8? А вот разночтения текста на ассемблере - таки пореже бывают.
А вообще, зачем зацикливаться на таких "аварийных" случаях?
Давайте уж быть оптимистами.
Вот эти слова - безусловная личная правда. Я, каюсь, сам иногда держу в руке ВМ80А и ухожу куда-то в сказку про то, что могло бы быть, но не случилось...
Мне этот процессор тоже очень дорог и лампово тёпл.
- - - Добавлено - - -
Си настолько же далек от железа, как партия от народа. Это не ассемблер.
Но Си я пользуюсь для микроконтроллеров. Там уже пофиг на розовые сопли, главное - чтобы работало.
с таким же успехом они больше замыливают глаза
больше трудностей в их запоминании
они совершенно не поддаются последующему расширения набора команд процессора (без появления сотни других без полезных мнемоних)
и вообще арм наше фсе:v2_dizzy_punk:
четко видно что сделать с чем именно и куда все это потом деть:v2_dizzy_roll:
а не то что пишешь по привычке xor a,c а оно те компилит xor a : xor c :v2_dizzy_facepalm:
Это все субъективщина. Кому-то "замыливает" и "сложно запоминать", а кому-то (и мне тоже) - удобнее больше информации иметь в мнемонике, а не свалить кучу разных классов инструкций в безликую "ld".
Да ладно? У ARM-а в режиме без декомпрессии есть (в разных комбинациях):
- собственно имя команды (mov/add/stm)
- суффикс условного выполнения (eq/ne и прочие)
- суффикс модификации флагов (s)
- специфический суффикс команды (типа ia/fd у stm)
- регистр приемник результата
- регистр источник первого операнда
- регистр источника второго операнда
- регистр счетчика сдвига второго операнда
- константа задающая тип сдвига (ror/shl/rrx)
Ну, например: addeqs R0, R1, R2, shl R3
Угу, все просто, понятно и легко запоминается, не то что мнемоники 8080, в которых "больше трудностей в их запоминании" :)
а понадобиться
ввести кучу новых регистров
новые регистровые пары через которые можно будет читать сохранять
новые 16 битные 32 битные регистры
мнемоники z80
ld (xx),xx
ld (xxxx),(xxxx)
xor xxxx,xxxx
легко расширяются
и смысл будет понятным даже если ты не читал ничего кроме мануала 79 года
дайте угадаю что будет с мнемониками и8080
mvsdjfgsdlj xx
mvnfdvsdjk xxxx,xxxx
xrjsdk xxxx
единственная команда z80
которая придумана каким то придурком это jp (hl)
которая читается как взять слово из памяти с адресом указанным в регистровой паре hl и поместить его в pc
а выполняется зачем то как поместить в pc содержимое hl o_O
- - - Добавлено - - -
ну да несколько перегружено.
но как передать все тонкости выполнения команды по другому?
а что же будет с интеловским подходом?
этот набор команд арма которых кот наплакал (и благодаря которым можно достаточно полно использовать такие не малые его возможности)
наверное превратится в 20 страниц одного только списка всех возможных мнемоник
(этож надо будет для каждого варианта выполнения команды свою левую мнемонику
а не просто какая то комбинация префиксов
иначе это будет не мнемоника и8080
а еще ж у интеловцев совершенно не модно писать после мнемоники название больше чем одного регистра
так что количесто мнемони будет
кол.команд*16*16*все_возможны _варинты_и_условные_выполн ния
иначе это будет не мнемоника и8080)
смотрим какая порнография творится в системе команд 6502
это вообще
как её дальше расширять непонятно
как выучить то что есть(чтоб постоянно не лезть в таблицу) тоже непонятно
(команды какогото там chip8 мну выучел за один день к примеру(так что это не склероз
(и именно не тот вариант который похож на Z80 а тот который больше похож на и8080)))
А прекрасно все будет с интеловским подходом. Они как-то спокойно перешли с 8080 на 8086, а потом и на 80386. Не читали, наверное, цитируемый выше полет фантазии :).
В моем далеко неполном конспекте довольно старенького ARMv4 в наличии 54 инструкции. Ну ОК, пусть это будет "кот наплакал" :)
Кстати, я достаточно много переносил ассемблерного текста с 32-битного ARMv4 на режим Cortex-ов , там пришлось над одинаковыми мнемониками пострадать. Потому что у инструкций вылезли совершенно другие ограничения адресации, другие правила использования флагов, другие условные блоки. А еще нужна была компактность (инструкции в компактной форме еще и выполняются быстрее), приходилось постоянно смотреть в листинги и править текст чтобы получить компактную форму. Я не думаю, что переход был бы легче, если бы они поменяли мнемоники, но само по себе такой перенос достаточно болезнен.
Такой прием в полемике называется "доведение до абсурда", я сам его люблю применять, но надо же и меру знать :)
Если отбросить всякую субъективщину и вопросы вкуса, то мнемоники 8080 обеспечивают больше информации о кодируемой инструкции. Просто банально потому что мнемоник больше. По количеству. А цифры - штука объективная. Дальше же начинаются личные предпочтения, поэтому обсуждать тут конструктивно особо нечего. Вопросы "тяжелее выучить, сложнее запомнить, легко запутаться" - они все субъективные. Мне нравится при кодировании осознавать особенности инструкции, считаю удобным, что эти особенности отражены в мнемонике. Это просто мое личное мнение и предпочтение. А кого-то это напрягает, для него это лишнее. Это его мнение, тоже нормально. А еще есть люди которые для 8080 в кодах писали, вообще без мнемоники, это их мнение, делов-то.
В-общем, объективно доказать превосходство одних мнемоник над другими - нельзя. Мнемоники - они же предназначены для представления бинарных инструкций в "человеческом виде", то есть - читаются исключительно человеком. А тут уже кому что нравится.
Вопрос был риторический, не нуждающийся в ответе. И в переводе я не нуждаюсь. Не надо мне присылать в ЛС ужасные машинные переводы. И я знаю, что в браузер можно встроить блок перевода. Но мне это не надо.
Я свободно читаю по английски (в том числе, классику 19 века, что не могут сами англичане). И знаю ещё 2.5 иностранных языка. Подрабатывал техническими переводами (правда с немецкого, с английского переводчиков избыток). Чтобы закрыть вопрос привожу свой немашинный перевод.
Так как дискуссия по поводу мнемоник заглохла, подвожу итог обсуждению.Цитата:
Мнемоники Z80 значительно улучшены по сравнению с мнемониками 8080. Особое внимание было уделено созданию логичных и универсальных мнемоник, которые существенно облегчают запоминание и использование. Я изучал язык ассемблера на 8080 и поначалу сопротивлялся переходу на Z80. Но после использования Z80-мнемоник всего-лишь короткое время, мне стало очень неприятно делать что-либо в коде 8080. Теперь я прогоняю почти каждый исходник, что получаю, через транслятор исходников (XIZ.COM написанную Ирвом Хофом, это бесплатная Public Domain программа). Даже, если Вы пишите программы для антикварного 8080, всё-равно значительно легче их писать в мнемониках Z80.
Чтобы отвлечь от дальнейшей перепалки фанатов КР580 недовольных таким, вполне справедливым, выводом, предлагаю сменить тему. Например так.Цитата:
Несмотря на большое численное превосходство фанатов КР580, со значительным перевесом победила мнемоника Z80, признанная всеми значительно более удобной для программирования. Что делает дальнейший выпуск печатных плат компьютеров на КР580 и 8085 - нецелесообразным.
Очень сомневаюсь. Если это верно, то Вы не уступаете в мастерстве Биллу Гейтсу.Цитата:
Сообщение от HardWareMan
Без дисковода невозможно написать программу объёмом более 2К. Исходник для большего объёма кода просто не влезает в ОЗУ СПЕЦИАЛИСТА, а писать двумя-тремя фрагментами по 2К - это крайне муторно и реально так удавалось делать только при наличии электронного диска.
Как ни странно, я тоже занимался этим. И мой бейсик даже в Z80-кодах имел объём 5 Кб. А в кодах КР580 было бы больше. Не могли бы Вы продемонстрировать код или исходник Вашего бейсика для СПЕЦИАЛИСТА?
А сама тема интересная.
Это рекламные сказки для полных идиотов. На бумаге вообще невозможно ничего написать. Тем более бэйсик для 6502. И писал он не один, а с дружком Полом Аленом, с которым позднее основал 'Microsoft' (а после его "задвинул").Цитата:
Для ЭВМ 'Altair 8800' в 1975 Билл Гейтс на бумажке написал Altair-Basic, чем заработал большие деньги на которые была основана фирма Microsoft
Билл сам в интервью проговорился, что писал этот бейсик вовсе на на бумаге, а на 'майн-фрейме". Не знаю, что это значит, но это точно не записная книжка, и даже не калькулятор (кто бы купил 14 летнему ребёнку калькулятор, который стоил 250 USD). Предполагаю, что это был какой-то большой компьютер (предположительно IBM-370), для которого они написали эмулятор 8080.
Написать бейсик сложно. Я это из спортивного интереса проверил в 1995. Хотел проверить сказку о том, что можно с нуля написать бейсик за месяц. А заодно и понять, глупее я, чем Билл или нет.
:)
Я использовал мощный ассемблер Microsoft M80 на ОРИОНЕ с HD-флопом (обмен вдвое быстрее DD). Писал в мнемонике Z80. Тем самым на порядок превосходил Билла, как по железу и ПО, так по мощности ассемблера. Не говоря уже о том, что я имел больше опыта в программировании, чем подросток Билл 20 лет назад (только-что узнавший о существовании микропроцессоров). Причём я писал целочисленный и сильно усечённый бейсик. Бейсик по стандарту TINY BASIC (имея описание операторов), а не полноценный бейсик, что сделал Билл.
Также мне не надо было встраивать в бейсик п/п-ммы для работы с массовой памятью, как сделано в AppleSoft BASIC для ROM (который сам работает с дисководом, отчего не нуждается в ДОС, т.е содержит в себе кусок ДОС). Я просто использовал CP/M (и взял готовый кусок кода SAVE/LOAD). Т.е у меня были все преимущества.
В итоге, я написал недели за 3 свой TINY BASIC, истратив, предположительно, (по 4 часа в день) ~80 часов реального времени, а скорее всего, даже больше.
Учитывая все мои преимущества, я сделал вывод, что малокомпетентный подросток просто не мог написать работающий бейсик в приводимых условиях. ЭТО НЕРЕАЛЬНО. А тем более на бумаге, не проверив на реальном железе, что ВДВОЙНЕ НЕРЕАЛЬНО.
Или речь шла о многих месяцах, или условия были совсем иные. И кто бы дал молодому Биллу столько часов крайне дорогого в 1975 машинного времени? Скорее всего имелся бейсик написанный для другой машины и задача состояла лишь в конверсии исходника.
И как из исходника удалось получить коды, чтобы показать их в работе в фирме MITS, куда Билл и Пол приехали, чтобы продать бейсик. Они что конвертировали в маш.коды вручную, и ни разу не ошиблись? Билл в интервью сказал: "По счастью бейсик заработал". Это значит, что перед покупкой в фирме MITS бейсик для Altair-8800 проверили в реале. И что было носителем? Допустим перфокарты, т.к Altair их поддерживал. Но что это было? Коды 8080 или ещё не странслированный и не проверенный текстовый исходник? На мой взгляд, на ассемблере вообше невозможно написать большую программу так, чтобы она сразу же заработала. Это просто ФАНТАСТИКА.
Описание Альтаир-8800 было в январском номере 1975 журнала 'Popular Electronics'. Когда Билл продал фирме MITS свой бейсик неизвестно. Но считать надо по реальным датам, а не верить рекламным сказкам. Если же эта басня реальна, то Билл Гейтс самый гениальный программист XX-века.
Привожу фрагмент, где видно какие операторы в моём TINY BASIC, чтобы сравнить с Altair-Basic. Если в Altair-Basic-е больше операторов, то легенда о Билле - точно фуфло.
Код:; TINY BASIC (Привет Биллу Гейтсу!)
JP START
ERROR1: RST 18H
defb 13,10,'WHAT?',0
JR CCP
@EOL EQU 0 ; ТИПЫ ТОКЕНОВ
@DELIMIT EQU 1
@VARIABL EQU 2
@NUMBER EQU 3
@COMMAND EQU 4
@STRING EQU 5
@QUOTE EQU 6
TOKNLST:defb 80H,'STOP'
defb 81H,'PRINT TAB('
defb 82H,'INPUT'
defb 83H,'IF'
defb 84H,'THEN'
defb 85H,'ELSE'
defb 86H,'NEXT'
defb 87H,'GOTO'
defb 88H,'GOSUB'
defb 89H,'RETURN'
defb 8AH,'REM'
defb 8BH,'CALL'
defb 8CH,'POKE'
defb 8DH,'LET'
defb 8EH,'CURSOR'
defb 8FH,'PRINT'
defb 90H,'DATA'
defb 91H,'READ'
defb 92H,'CLS'
defb 93H,'ASK('
defb 94H,'COUT'
defb 95H,'SHOW'
defb 96H,'LIST'
defb 97H,'RUN'
defb 98H,'BYE'
defb 99H,'NEW'
defb 9AH,'END'
defb 9BH,'ARRAY'
defb 9CH,'PEEK('
defb 9DH,'BYTE'
defb 9EH,'WORD'
defb 9FH,'RESTORE'
defb 0A0H,'LOAD'
defb 0A1H,'SAVE'
defb 0A2H,'BLOAD'
defb 0A3H,'BSAVE'
defb 0A4H,'BEEP'
defb 0A5H,'DUMP'
defb 0A6H,'VARPTR('
defb 0FFH
; *****************************************
; * *
; * ПРЕОБРАЗУЕТ В СТРОКЕ КОМАНДЫ *
; * В ASCII-СИМВОЛАХ В ТОКЕНЫ *
; * *
; *****************************************
CNVTOKEN:
LD HL,STRBUF
LD DE,TMPBUF
PUSH DE
CNVTK0: LD (UKAZAT),HL
CNVVVV: CALL POISK
JR C,CNVTK0
PUSH DE
CALL GTTOKEN
POP DE
CP @NUMBER
JR Z,CNVTK2 ; ЧИСЛО
CP @QUOTE
JR Z,CNVTK3 ; КАВЫЧКА
CP @EOL
JR Z,CNVTK5 ; NULL
CP @VARIABLE
JR Z,CNVTK6 ; БУКВА
CP @DELIMIT
JR Z,CNVTK6 ; РАЗДЕЛИТЕЛЬ
JP ERROR
. . . . . . . . . .
весь исходник 45 Кб сюда не влезает
.
Можно. Я в студенческие годы на бумажке, с ручным ассемблированием (ну не было у меня кросс-системы на СМ-4) написал контроллер клавиатуры на 8080, объемом примерно полтора килобайта (не более двух, там оно точно все в одну РФ2 влезло). Причем хекс отдавался товарищу, у которого был программатор, он его ручками набирал и прошивал :) Примерно за три итерации все заработало :) Этот контроллер у меня даже сохранился, могу пофотать, и даже где-то дока к нему есть самописная, с теми самыми ручками транслированными исходниками. А бейсик - он ненамного больше, как-то завели на бумажке первую версию, показали что живое, получили финансирование и уже на железке долизали до вменяемого состояния.
MVI R,#D8, где R имя регистра, от A до z. Гадание не ваш конек, займитесь чем-нибудь другим.
"Занимался этим" означает всего-лишь писать на бумажке, где вы там про бейсик увидели? Бейсик я не писал. Я писал драйвера ROM дисков с выводом меню. Я писал редактор уровней для разных игрушек и трейнер к ним же (например КОРТ или Lode Runner). Если вы не можете написать программу более 2к на Спеце это ваши проблемы. У меня был магнитофон и я некоторые вещи делал (тот же разбор и доработка ED^7000, а он на минутку 4к). Рад за Ваш бейсик в 5к на Z80, он гораздо меньше синклеровского. :) Но самый мощный (из мною виденных) для Спеца был Бейсик Практик (графические надстройки над микроном или Servis'ом - не помню), увеличивающий его объем и занимающий... 10кб!
Посмотрел список имеющихся у меня бейсиков под Спец. От 7,5к до 10к. Все имеют графику. У ваших 5к на Z80 графики я не вижу в токенах. Нет, я не хочу принизить ваш труд - это несомненно вызывает уважение. Но не настолько чтобы приписывать какие-то сверхдостижения. И на последок о Билле и его достижений. Почитайте, пожалуйста, на досуге вот этот тред. Есть мнение, что вы для себя многое откроете.
Практической пользы от такого бейсика я и не хотел. Смысл такой работы в другом, - проверить легенду. И, думаю, сделал это для того, чтобы поднять себе самооценку.
Сами, подумайте, какая практическая польза от убогого бейсика, если уже 10 лет (Радио 01.1985) был доступен более приличный. Кроме того, я имел и мог набрать дампы нескольких хороших западных бейсиков (и адаптировать их, хотя они по 20 Кб и более).
Но сами бейсики меня никогда не интересовали. Я их попробовал в 1987 на РК и понял, что это - полная туфта для идиотов, всемирный обман. Считаю, что Кемени и Курцу в 1966 надо было сразу же оторвать руки (фигурально, я не кровожадный). Придумали чушь и убедили весь мир, что это полезно. Лучше бы придумали ПАСКАЛЬ, на 5 лет раньше Н.Вирта.
Бейсик-интерпретатор нанёс колоссальный вред, отвратив тысячи потенциальных виртуозов программирования. Я ещё понимаю бейсик-компилятор, сам им пользовался многократно и в CP/M, и QUICK-,TURBO-,POWER- бейсиками MSDOS. Впрочем тоже изврат, пригодный лишь для изготовления мелких инструментальных программок - типа разворот на 90' фонта для принтера, конвертировать фонт 8*8 в фонт 8*10, универсадьный редактор фонта и т.п.
В то время как программы на С и ПАСКАЛЕ больше ассемблерных в 4 раза, то программы от компиллятора бейсика - больше их ассемблерных эквивалентов раз в 10.
TINY на вражеском языке означает крошечный. Типовой размер TINY BASIC-а для 8-ми разрядки 4 Кб. Но есть совсем экономные (убогие) версии на 3 Кб [Klein R.D.: BASIC Interpreter, Francis Verlag, Muenchen 1980].
Вопреки общему правилу, размер имеет значение, если у тебя ОЗУ на 2114, 2102 или даже на динамических 2107 (4 Кбит !). Т.е если ОЗУ - считанные килобайты, как в ZX-80 и аналогичных.
Графика (даже псевдо) в стандарте TINY BASIC не предусмотрена (в те времена графических машин не было). Хотя вызов ассемблерных подпрограмм позволяет что-то сделать с экраном на ассемблере. Главный сюжет в TINY BASIC - что он очень крошечный и в то же время, какой-никакой, а всё-же ЯВУ, т.е средство для развлечения чайников.
С таких бейсиков начинались все самодельные и промышленные западные рэтро-ЭВМ "эконом-класса" (т.е с маленьким ОЗУ). Но посмотрите, есть реализация TINY BASIC даже для 68000. TINY BASIC "пихают" даже в контроллеры. На этапе отладки, "ковырять" железо гораздо быстрее, делая оперативно программки на крошечном бейсике, чем транслировать коды тестов и каждый раз заново прошивать их в ПЗУ.
Так вот, я не справился с задачей написания TINY BASIC-а, - не уложился в 4 Кб. Это потому-что я сделал CP/M версию, с записью файлов на диск, а TINY BASIC-и использовались, когда дисководы ещё считались матерным словом даже на Западе. Для загрузки программ в них обычно, использовались средства монитора (операторов LOAD, SAVE, RUN не было). Кроме того, я расширил диапазон INTEGER чисел - (в оригинале только -32767...32768) и добавил ещё пару операторов. Так что меня надо ругать не за то, что я что-то не сделал, а за то, что я сделал лишнее, не предусмотренное стандартом.
Практически в каждой западой стране были свои варианты РК86 (только это было на 8-10 лет раньше, чем в СССР и без ВГ75). Т.е число примитивных рэтро 8-ми разрядок в мире было довольно велико. И на большинстве из них стояли такие крошечные бейсики или бейсики уровня РК86. И все они были предназначены, главным образом, для того, чтобы отвращать людей от программирования. Если бы сразу во всех книгах для начинающих написали - "БЕЙСИК - туфта, изучай ассемблер", то программ для 8-ми разрядок было бы на порядок больше.
Насчёт СПЕЦИАЛИСТА и трансляции объектного кода в 4 Кб. Думаю это небольшое преувеличение в запале. Понимаю, и ничуть не осуждаю.
Я пользовался СПЕЦИАЛИСТОМ с раширением ОЗУ D000...EFFF и эл.диском 256К. Редактор SCREEN и ассемблер МИКРОН работали из верхнего ОЗУ. Т.е для исходника и буфера трансляции оставались все 36К, что на 4К больше, чем в пакете МИКРОН для СПЕЦИАЛИСТА. Даже, если удалить почти все комментарии (что очень плохо для сложной программы) и всё форматирование свести к пробелу перед мнемоникой, то удаётся транслировать только чуть больше 3 Кб. Как же Вам, имея только базовое ОЗУ, удавалось транслировать 4 кб?
Насчёт плагиатов отечественных бейсиков. В такой плагиат верится с большим трудом, хотя против представленных фактов трудно спорить. Но считаю, что этот факт ещё нуждается в проверке, или хотя бы нужно узнать, что скажут авторы на этот счёт. А бейсик (Радио 01.1985 и, соответственно, его производные) действительно довольно грамотный (даже RST использует).
А если это правда, то конечно некрасиво. Авторам надо было указать первоисточник. Славы и уважения это им бы не убавило. А теперь, что о них думать? - Схему и п/п-му инициализации ВГ75 стырили, бейсик стырили... Это грустно и за державу обидно.
Хотя есть ещё такая мысль, что указом ЦК КПСС авторам просто запретили указывать, что бейсик - "цельнотянутый" с Запада.
О, да! Есть такое выражение "Программирование на Бейсике калечит мозг", хорошо, что я его уже почти забыл ))
Еще я видел, что пишут программы для микроконтроллеров на Бейсике, этот маразм мне не понять никогда.
Вы забываете один простой момент - простых пользователей на порядки больше чем программистов. И все эти "примитивные 8-разрядки" - они покупались и осваивались далеко не для программирования как такового. Прежде всего это был инструмент.
Могу привести пример из своей семьи. У меня отец был хирургом, писал диссертацию, по ваготомии (такой хирургический щадящий метод лечения язвы, в те времена ее преимущественно бактериальная природа была неизвестна). Тут мало разработать оригинальную хирургическую технику, надо еще научно показать эффективность метода. А для этого набирается статистика. С исходным материалом проблем не было - СА потоком поставляла 18-летних язвенников, а дальше начинались многолетние рассылки писем с опросными листами прооперированным пациентам - лет 10-20 после операции проводилось наблюдение. Физически это выливалось в два гросс-чемодана в нашей кладовке с 10 тысячами кодированных карточек пациентов, в каждой примерно 200 пунктов, и там цифрой закодировано значение (типа рецидив, самочувствие, анализы) и прочее. Собрать данные мало, их еще надо статистически обработать. И не один раз. Сначала это была Электроника Б30, потом МК61, потом была попытка напрячь новый госпитальный ВЦ с 1420, там процесс шел медленно, там же "программисты", они на ассемблере пишут, а это же ну гораздо сложнее чем абдоминальная и торакальная хирургия, да. Но, батя приехал в отпуск и увидел мой Орион, и сразу понял что весь его процесс статобработки можно очень сильно упростить. А главное - он увидел Бейсик. Да-да, в ассемблер хирургу и нафиг вникать не надо. А вот Бейсик у него "пошел" сразу, за пару часов он уже написал первую рабочую программку, и - главное, все это можно делать самому дома, в спокойной обстановке и никаких машинных залов, машинного времени и программистов :). Есть еще один пример - жена тоже диссертацию писала, и у нее тоже была куча экспериментальных данных, но это уже были тысячи файлов на XT-шке. Чем она их обрабатывала? Да майкрософтовским бейсиком же - она собиралась стать кфмн, а не программистом, поэтому бейсик ее вполне устроил :)
вау... потише, посоны(С)Цитата:
Программирование на Бейсике калечит мозг
Не трогайте Бейсик, этот пушной зверь далеко не одного человека вывел в мир компьютеров, и микроконтроллеров - тоже.
Хоть я тоже ржу с бейсиков на AVR и PIC (Си там ИМХО не только полезнее, но и удобнее), но ретрокомпьютеры без Бейсика - это даже не грустно, это катастрофа. Игрушка должна иметь возможность дать новому юзеру чувство понимания и власти над железом. Бейсики с этим справляются как никакой другой язык.
Даже тот же ТиниБейсик (а я их перелопатил несколько штук, под разные процессоры, изучил изнутри) даст первоначальный пинок изучать свою "лошадку" глубже.
Я хотел бы попросить Вас поделиться своим Тинибейсиком, можно даже на условиях "только тебе и больше никому". Просто я использую Бейсики в своих самодельных железках, было бы весьма интересно запустить и еще один вариант.