Комментарии 32
В частности, потому, что на ассемблере можно было писать программы для расчета дифференциальных уравнений и физических симуляций, которые не были бы такими эффективными на BASIC
Хотел бы я познакомиться с таким инженером. Наверное сейчас у него борода пробила пол и ушла вниз на три этажа.
Спасибо за обзор.
Хотел бы я познакомиться с таким инженером. Наверное сейчас у него борода пробила пол и ушла вниз на три этажа.
Ну, наверное, это вы про меня, хотя бороду и не ношу. А в кодах (именно в кодах) написал в свыое время интерпретатор для языка RPG на ЭВМ М-220. Да, в те далёкие 60-е, 70-е, когда на ЭВМ было памяти с гулькин... И программисты творили чудеса в её использование. Для меня вершиной программирования в кодах (автокоде, ассемблере) всегда было и будет реализация Шурой-Бурой библиотека стандартных подпрограмм ИС-2, где был и расчёт дифферинциальных уравнений:

На фотографии М.Р. Шура-Бура (слева) стоит вмести с академиком Ершовым А.П.
Золотое было время. Достаточно было знать ассемблер, алгоритмы, диффуры и вычматы, чтобы быть высококлассным программистом. По сегодняшним меркам человек с такими знаниями будет даже не джун, а меньше джуна.
Человек спосоный прогать на асме математические алгоритмы тянет на джуна 80-го разряда. Дайте мне такого "джуна", современному шлаку я его бысто обучу. Если в этом вообще будет необходимость.
В теории да, а на практике такой человек скорее всего просто не пройдет hr фильтр, потому что в его резюме нет слов git, postrgresql, docker, оркестратор, не знает ни бэк ни фронт, сетевой стек, паттерны программирования и принципы solid. Уже не говоря о том, что он не знает самого языка на котором придется работать и его основных фреймворков.
И вы серьёзно возьмёте такого сотрудника? Да вам начальство не позволит. Начальство скажет: его же надо всему этому учить, это займёт пару лет. За это время мало того, что он не будет приносить пользу бизнесу, так ещё и вас будет отвлекать от работы, а через несколько лет, когда он всему научится он просто встанет и уйдёт в другую компанию. Поэтому таких и не берут.
К слову, вот что про подобную ситуацию думает сам создатель принципов SOLID:
When you really look closely at the practice of programming computers, you realize that very little has changed in 50 years. The languages have gotten a little better. The tools have gotten fantastically better. But the basic building blocks of a computer program have not changed.
If I took a computer programmer from 1966 forward in time to 2016 and put her in front of my MacBook running IntelliJ and showed her Java, she might need 24 hours to recover from the shock. But then she would be able to write the code. Java just isn’t that different from C, or even from Fortran.And if I transported you back to 1966 and showed you how to write and edit PDP-8 code by punching paper tape on a 10 character per second teletype, you might need 24 hours to recover from the disappointment. But then you would be able to write the code. The code just hasn’t changed that much.
Younger programmers might think this is nonsense. They might insist that everything is new and different nowadays, that the rules of the past are past and gone. If that is what they think, they are sadly mistaken. The rules have not changed. Despite all the new languages, and all the new frameworks, and all the paradigms, the rules are the same now as they were when Alan Turing wrote the first machine code in 1946.
А я вот не соглашусь с автором этих строк. Отправив современного кодера в 60-е годы прошлого столения мы не сможем заставить его писать код, так как прогать в машинных кодах придется сначала у себя в голове, потом на листочке бумаги, а потом уже набивать на перфоленте или перфокарте. А потом так же дебажить. Это весьма серьезный навык который развивается с годами и за один день его не освоить при всём желании. А вот текстовый редактор и компилятор освоить можно если не за один день, то за неделю точно. Я считаю что программисты прошлого было более приспособлены к экстремальным условиям работы, нежели расслабленное поколение современных смузихлёбов. Я же говорю, дайте мне человека который способен кодить математику на асме и всем остальным современным примудростям я обучу его в кратчайшие сроки. А многим вещам обучать даже не стоит, да бы не испортить "высокоточный инструмент".
Я считаю что программисты прошлого было более приспособлены к экстремальным условиям работы
Кроме неудобного инструментария у них были и противоположные факторы. Некоторые я прочувствовал на себе, когда попробовал писать код для Motorola 68000 для Sega Mega Drive. Например, ограниченные возможности машины на корню режут количество и размах хотелок. Или отсутствие гадания как это будет работать на машине - кеша нет, предсказателя ветвлений нет, скорость чтения из ROM равна скорости чтения из RAM. Целый пласт современных метаний с учетом всех этих деталей просто отсутствует как категория. Не нужно думать о сожительстве с ОС и другими приложениями. Не нужно думать о многопоточности (хотя у SMD есть отдельный процессор для управления звуком). И при этом решение многих обыденных современных задач в ограниченных ресурсах становится очень интересным. Мозг полностью занят непосредственно алгоритмами и всякими хардварными уловками.
Ну, кэши, предказатели и OoO исполнение появились достаточно давно, так что научиться работать с ними не так сложно. Да, потребуется некоторое время на эксперименты, но это не то же самое что обучить современного программиста вколачивать машинный код на перфоленту.
Ну, кэши, предказатели и OoO исполнение появились достаточно давно, так что научиться работать с ними не так сложно
Смысл не в том, что этому сложно учиться. А в том что на старых процессорах об этом вообще не нужно думать как о факторе на что-то влияющем. На современном процессоре легко написать структуру данных или алгоритм, которая ассимптотически (и числом операций) намного лучше, а фактически производительность такая же или медленней (на этом моменте Александреску шутит про выкидывание книг). На старом процессоре код выполняется ровно сколько времени, сколько занимают в сумме его отдельные операции. И о расположении данных в памяти не нужно думать, кроме как чисто в контексте удобства и решении задачи.
Если получилось написать код чтобы было меньше операций или столько же но более дешевых - поздравляем, ваш код стал быстрее. А теперь сравним это с задачами литкода, где в рейтинге времени выполнения вторые места (5ms) отделяет от первого (<1 ms) переписывание одного и того же по смыслу, пока у компилятора не щелкнет озарение. Без бенчмарка понять стал код быстрее или медленней очень сложно.
Щуп вроде не на резистор указывает, а на диод.
Да, это диод, возможно стабилитрон. Стоит проверить ото трехвыводное, похожее на транзистор на предмет выполнения своих обязанностей. Интересная шелкография на плате, не номера элементов, а их тип+номинал. 100% пайка вручную.
Чем же, интересно, может быть отсутствующий модуль у девайса у которого заявлена возможность расширения памяти??
"Некогда популярная" технология КМОП нынче -- практически единственная используемая в цифровой электронике, за исключением какой-нибудь редкой экзотики.
Функционально напоминает 16-битную Электронику МК-85
Подсветки в нём не было ? И ещё все-таки название "Personal Computer" - это маркетинговый ход в те времена, т.к. было их целое семейство и не только Casio ? Компьютер ведь ассоциируется с более-менее универсальным устройством, хотя бы в виде клавиатуры и подключения к ТВ. А вот флоппик-приставка - удивил, так и вообразил что загружаю туда игры...
Общеизвестно, что если хочешь в чём-то хорошо разобраться, то нужно написать затравочный пост на Хабр и разжечь дискуссию, так что поехали!
PB-1000 был далеко не первым "программируемым компьютером" фирмы Casio, он пришёл на смену устаревшему PB-700.

То был отличный программируемый калькулятор с языком BASIC, который после установки в док-станцию превращался в компьютер с принтером и накопителем на кассетах, но проблемой 700-го было то, что он вырос из предыдущих моделей калькуляторов и унаследовал 4-х битную архитектуру. Для компьютера он был ужасно медленным, рисование графика синусоиды на небольшом экране занимает несколько секунд. Бэйсика - построчно интерпретируемый язык, что добавляет тормозов. Док-станция продавалась со специальным чемоданчиком, напротив разъёмов были отверстия и работать можно без разпоковки. Было отделение для блока питания, кассет, запасных рулонов ленты. В те времена весьма популярный форм-фактор.
Чёрные чемоданчики из 80-х


Интересно, что в доковой станции PB-700 плоттер встроенный, а магнитофон выполнен в виде съёмного модуля. Возможно продавался отдельно для снижения цены на базовый набор.
Также плёнка в кассете необычно двигается справа налево (впрочем, может в микрокассетах так принято, нигде кроме японских калькуляторов они мне не встречались).
У PB-1000 были братья FX-850 и FX-880 - более компактные, но с двухстрочным дисплеем.
Casio FX-8xx

Интересно, что в калькуляторах тех лет часто земля была положительной, а питание отрицательным (им что-ли PNP транзисторы было проще производить чем NPN? Интересно мнение знатоков), помните об этом, если захотите заменить питание от батареек на внешний БП.
Наклейки на блоках питания как-бы намекают

Я столкнулся с этим когда паял шнур для передачи данных через последовательный порт, так-как программы на Бэйсике проще набивать на большом компьютере, а потом перебрасывать по кабелю. Уровни TTL, нашёл один из USB<->Serial переходников на оригинальном FTDI чипе, там можно в конфигурации задать инверсию всех выходов. Ну или добавить инверторы на микросхемах (у меня другой шнурок был с китайским клоном FTDI и в нем активировать инверсию не получилось)
Кабель

Идеально, конечно, использовать родную доковую станцию, но они встречаются реже чем сами микрокомпьютеры.
Боюсь что в предыдущем посте я ошибся, это у Sharp E500 UART выведен на боковой разъём и нужно лишь проинвертировать сигнал. Гляжу на схему док-станции FA-7 и вижу в ней полноценный микроконтроллер. Боюсь что для связи по последовательному порту нужно или искать оригинальный док или паять собственный (если передавать данные не системными вызовами, а собственной программой, то можно обойтись упрощённой версией).
Схема док-станции FA-7

Главным отличием PB-1000 от конкурентов и собратьев по цеху был экранный модуль. Кроме, большого по тем временам экрана на 4 строки, инженеры из Casio добавили две изюминки:

Во-первых системные кнопки LCKEY, MENU, CAL и т.д. - напрямую можно вызывать системные функции в любое время, например менеджер файлов, чтоб сохранить программу на диск/кассету/послать по последовательному порту.
Во-вторых у нас есть тач-скрин! Как видно на предыдущей картинке, редактор показывает внизу экрана "функциональные клавиши", как в старом-добром Нортоне. [search], [next] можно нажимать прямо пальцем на экране, именно это значит надпись "LCD touchkeys" справа. Весь экран разбит на 16 кнопок сеткой 4x4 и их нажатие можно опрашивать программно. Например, можно написать на Бэйсике игру "пятнашки" и играть прямо на экране. За 20 лет до смартфонов иметь такой компьютер в кармане было просто неимоверно круто!
Справедливости ради, этот экран был хорош только по меркам 80-х, в наше время раздражает изменение контрастности при наклоне. Если держать в руках то это не мешает, экран-то повортный, но вот когда работаешь со станции и экран раскрыт на все 180 градусов, то приходится наклоняться, нависая над экраном, чтоб смотреть на него по возможности перпендикулярно. Впрочем, в наше время проблему легко решилась распечаткой на 3D-принтере пластикового клина и экран снова всегда в оптимальной позиции.
Современные технологии на службе человечества
В 80-е стандартной практикой было выводить на разъём шины адреса, данных и управляющие сигналы, что позволяло расширять память добавляя ОЗУ или ПЗУ со служебными программами. В карманных компьютерах как Casio, так и Sharp, выведен наружу GPIO и их использовали в полевых условиях для управлением промышленным оборудованием. ROM-ы были как со специфичным софтом, так и общего назначения, например Casio выпускало транслятор Си и, кажется, Пролога. Для Sharp e500 энтузиасты добавили Форт (написан на ассемблере который компилируется из Турбо-Паскаля).
Часто в компьютер ставились две батареи. Вспомогательная питала память на время замены основной.
Casio PB-700

Casio-FX850

Casio-PB1000

Sharp E500

Сделать свой модуль расширения не так уж сложно, я реверс-инженерил по фотографии модуль памяти для Sharp, сделал расширение на 256Кб, причём энергонезависимое, со своей батарейкой. Если кому интересно - KiCad проект в открытом доступе.
Главной проблемой было найти хорошую фотографию оригинального модуля, чтоб расположить контакты в правильных местах.
Как-то так

Есть у меня в коллекции и модифицированный Casio PB-1000, который, если верить наклейкам, использовался в немецком телекоме. У него нестандартный разъём GPIO и установлен собственный модуль расширения с ОЗУ и ППЗУ
Чудо немецкой инженерии

Casio мне все попались в рабочем состоянии, а вот Sharp пришлось чинить. У него с точки зрения архитектуры два дисплея, у каждого свой контроллер и свой драйвер. Просто пиксели обоих дисплеев распложены рядом на одном ЖК индикаторе. Конденсаторы в драйверах высыхают с разной скоростью, и в попавшем мне экземпляре правая половина экрана имела лучшую контрастность чем левая.
Если компьютер работает, то при нажатии на кнопки должен раздаваться короткий писк. После включения нажимаете один раз кнопку "Contrast" (над буквой P) и стрелками вверх/вниз (на экране) его можно менять. Долгое нажатие на кнопки стрелок должно сопроваждаться писками раз 10 в секунду.
На доковой станции обращает внимание 36-контактный разъём для подключения принтера. В мире PC до распространения USB стандартом был D-SUB-25 "мама" со стороны компьютера и 36-контактный на принтере, а тут с обеих сторон 36 контактов. Пришлось разрезать два обычных принтерных кабеля и спаять новый. Последовательный порт RS-232 тоже с изюминкой - "мама" вместо "папы". Японские инженеры были на редкость творческими людьми.

На боковой стороне есть выключатель RS-232 - если не пользуешься последовательным портом, то, отключив генератор выского напряжения на +/-15V, можно сильно продлить жизнь батарейкам.

Вот он на схеме

Кроме ожидаемых входа и выхода для подключения кассетного магнитофона, есть и управляющий выход "Remote".

На продававшихся в то время компактных магнитофонах для калькуляторов (музыку играет ужасно, но для цифры сойдёт), был соответствующий вход. Человек перематывал кассету на нужное место, а компьютер по этому проводу включал/выключал лентопротяжных механизм.

Дискета, кстати, используется обычная, на 3,5 дюйма, но вместо стандартных 1,44 Мб форматируется всего на 320 Кб. Впрочем, если набивать программы из журналов вручную на четырёхстрочном дисплее, то это немало.
Stackoverflow 40 лет тому назад

Был у PB-1000 и старший брат - Casio PB-2000. Построен на том же процессоре HD61700, но добавили памяти, а главное появился второй слот расширения, куда можно вставлять ПЗУ с допронительными языками программирования. Были карточки с Лиспом, Си, Паскалем и Прологом. Купить их сейчас нереально, но народ на форумах занимается реверсинжтнирингом.
У PB-1000 весьма тяжёлая дисплейная часть, кроме экрана там расположены батарейки и долго держать его в руках не слишком удобно. На PB-2000 дисплей перенесли вниз, тач-скрин заменили четырьмя функциональными кнопками. Клавиатуру и дисплей защищает пластиковая крышка, в откинутом состоянии точно повторяющая габариты разложенного PC-1000. Это делает его полностью совместимым с доковыми станциями FA-7 и MD-100.
Близнецы братья

Да, Casio делал крутые штуки.
Мне где-то в начале 90-х досталась «записная книжка» Casio. 64 Kb ПЗУ, ЖК экран, QWERTY клавиатура.
Где-то лежит до сих пор, может даже живая....
Инновация из 80-х: как создавался компьютер Casio PB-1000 и что у него под капотом