Привет, Хабр! Это Антон Комаров, автор команды спецпроектов МТС Диджитал. Сегодня вспомним про Casio PB-1000. Он похож на карманный компьютер и, в общем-то, им и является — хотя производитель, компания Casio, в момент выпуска позиционировала его как программируемый калькулятор. Созданный в 1987 году, он объединил возможности BASIC и ассемблера. Я бы сказал, PB-1000 — одно из первых в своем роде портативных устройств, которое умеет решать серьезные инженерные задачи. Сегодня расскажу о его возможностях и причинах ухода с рынка. А еще — покажу, что у него внутри: я разобрал свое неработающее устройство и попробовал его отремонтировать.
Начало начал
PB-1000 появился на глобальном рынке в 1987 году и стал логичным продолжением линейки научно-инженерных вычислительных портативных устройств от Casio. В отличие от предыдущих моделей, PB-1000 позиционировался как программируемый компьютер, поддерживающий языки BASIC (Casio Computer Personal Basic, CCPB) и ассемблер. Устройство поступило в продажу за 300 $, и, несмотря на высокую стоимость, его компактные размеры, инновационный сенсорный дисплей и поддержка программирования сделали его популярным в узких профессиональных кругах.
Мощь в кармане: зачем создавали и что умел PB-1000
Процессор Casio PB-1000 — Hitachi HD61700 — 8-битный CMOS-микроконтроллер, созданный для энергоэффективных устройств. Его основные особенности — низкое энергопотребление и поддержка встроенного языка ассемблера. Это позволило устройствам, подобным PB-1000, выполнять достаточно сложные расчеты при малой потребляемой мощности.
Память устройства была расширяемой — с 8 Кб до 40 Кб. Соответственно, при необходимости можно было доверять PB-1000 решение задач, требующих обработки относительно больших объемов данных. Кроме всего прочего, у девайса есть встроенный калькулятор с возможностью выполнять тригонометрические, статистические и другие операции. Еще он оснащен базовым текстовым редактором.
Технические характеристики Casio PB-1000:
экран: ЖК-дисплей с разрешением 192 × 32 пикселя (четыре строки по 32 символа) с сенсорной панелью на 16 кнопок, что было новинкой для 1987 года;
процессор: 8-битный Hitachi HD61700;
память: 8 Кб ОЗУ (расширяемая до 40 Кб);
программирование: поддержка BASIC и ассемблера, возможность создавать программы для сложных вычислений и автоматизации процессов;
интерфейсы: RS-232C, который позволял подключать устройство к внешним системам, включая дисковод MD-100 для хранения данных на дискетах;
энергоэффективность: три батареи AA обеспечивали работу до 100 часов, так что на устройстве можно было работать вне офиса.
Casio PB-1000 поддерживал несколько периферийных устройств, которые расширяли его возможности:
Дисковод MD-100 — подключаемый 3,5-дюймовый дисковод для хранения и обмена данными на дискетах.
Док-станция FA-7 — включала порты RS-232 и Centronics, а также интерфейс, позволяющий подключать калькулятор к принтерам и другим устройствам.
Принтеры FP-100 и FP-40 — для печати расчетов и данных, что упрощало создание отчетов.
На службе науки и технологий: кто и как использовал Casio PB-1000
Плюсом Casio PB-1000 было то, что он поддерживал программирование не только на BASIC, но и на ассемблере, а это значительно расширяло его функциональные возможности. Встроенный модуль ассемблера позволял запускать программы, созданные в CASL — специально адаптированном языке для архитектуры PB-1000.
Конечно, для работы с этим языком требовались более глубокое знание архитектуры процессора устройства и навыки программирования на низком уровне. Но для инженеров и специалистов, нуждающихся в специфических расчетах или работе с ограниченными вычислительными ресурсами, это было отличной возможностью. В частности, потому, что на ассемблере можно было писать программы для расчета дифференциальных уравнений и физических симуляций, которые не были бы такими эффективными на BASIC. Все это делало PB-1000 отличным учебным инструментом, который также был полезен и для профессионалов, стремящихся к максимальной оптимизации программ.
Casio PB-1000 использовался исследователями и инженерами в Японии, США и Европе. Устройство применяли в университетах и лабораториях для расчетов, моделирования и полевых исследований. Благодаря возможности создания собственных программ устройство также использовалось энтузиастами для разработки пользовательских приложений.
Пользователь из Швейцарии, до сих пор владеющий девайсом, например, применял устройство для сбора и анализа лабораторных данных, а также для разработки и тестирования алгоритмов в области физики и химии. Благодаря возможности программирования на ассемблере PB-1000 также применялся в учебных лабораториях, где студенты создавали программы для лабораторных экспериментов.
Когда PB-1000 перестали выпускать и почему
Выпуск PB-1000 был завершен к началу 1990-х годов. Причины заключались в развитии технологий: ноутбуки становились дешевле, мощнее и компактнее, так что портативные девайсы прошлых лет становились менее актуальными. К тому же научные калькуляторы с расширенными возможностями памяти и программирования стали доступнее и совершеннее. PB-1000 при всех его достоинствах не смог конкурировать с более мощными компьютерами и специализированными инженерными калькуляторами.
И все-таки Casio PB-1000 остается одним из значимых портативных компьютеров 80-х. Технические особенности и возможности программирования на ассемблере сделали его знаковым устройством для своего времени.
Хватит истории — а что у него внутри?
С теорией закончили — теперь к практике. Свое устройство я разобрал. К слову, оно не включалось и не подавало никаких признаков жизни. Так что я решил поймать сразу двух зайцев: показать, что у него внутри, и попробовать отремонтировать. Удалось ли мне второе, узнаете дальше.
Разбираю устройство
Сначала снимаю заднюю крышку, обнаруживаю под ней наклеенную еще на фабрике инструкцию по замене еще какой-то крышки. Похоже, что это дополнительный модуль для чего-то. В любом случае у меня этого компонента не оказалось. Если кто знает, что изображено на рисунке, напишите в комментариях.
Откручиваю все винты на пластике, снимаю, открывается материнская плата. «Пищалка», то есть простейший динамик, припаяна к плате. Аккуратно отпаиваю.
Потом снимаю клавиатуру. Там несколько пленок и резиновая прокладка, позволяющая кнопкам нажимать на контакты на плате.
В верхнем левом углу на фото ниже как бы разорванный прямоугольник — это выключатель. Если замкнуть контакты, девайс должен включиться. Но этого не происходит, так что проблема не в выключателе.
Полностью убираю пластик с клавиатуры.
Теперь снимаю крышку и с экрана, с задней его части. Это позволяет полностью убрать пластиковый корпус и оставить только платы и кабели.
Сняв металлическую окантовку с прикрепленным экраном, вижу две микросхемы — это HD44353. Драйверы экрана управляют отображением информации на жидкокристаллическом дисплее. Основная задача этого чипа — преобразовывать цифровые сигналы от микропроцессора или микроконтроллера в управляющие сигналы, которые задают, какие пиксели на экране должны быть активированы для отображения нужного изображения или символов.
А вот плата с другой стороны. Устройство полностью разобрано.
Здесь есть два чипа, о которых тоже стоит рассказать. Toshiba TC5565AFL-15L — это статическая оперативная память (SRAM) объемом 65 536 бит, организованная в 8 192 слова по 8 бит каждое. Выполнена по КМОП-технологии, которая некогда была популярной.
А вот микросхема NEC 23C256EAG — это масочно-программируемая постоянная память (Mask ROM) объемом 256 Кб, организованная в 32 768 слов по 8 бит каждое.
В целом девайс разобран целиком и полностью, разбирать больше просто нечего.
Так что там с ремонтом?
Сразу к делу: отремонтировать девайс у меня не получилось. Плату до меня никто не трогал, выглядит она практически идеально. Проверил на короткие замыкания, поврежденные компоненты под микроскопом — ничего такого нет.
Зато удалось обнаружить отпаявшийся контакт резистора. На фото показываю щупом мультиметра, где проблема:
Припаял его, обрадовавшись, что теперь все заработает. Но нет, калькулятор так и не включился. Явной причины не нашел: ничего больше не отпаялось, компоненты выглядят прекрасно. Грешу на электролитические конденсаторы: с возрастом они часто выходят из строя. Например, если не включается портативная консоль Sega Gear примерно тех же лет, то замена конденсаторов решает проблему в 90% случаев.
Попробую заменить. Если получится отремонтировать, ждите вторую часть со включением калькулятора и работой с ним.
Расскажите, приходилось ли вам сталкиваться с этим редким зверем?
Комментарии (31)
RomanDrDev
16.11.2024 11:54Щуп вроде не на резистор указывает, а на диод.
vesowoma
16.11.2024 11:54Да, это диод, возможно стабилитрон. Стоит проверить ото трехвыводное, похожее на транзистор на предмет выполнения своих обязанностей. Интересная шелкография на плате, не номера элементов, а их тип+номинал. 100% пайка вручную.
vorphalack
16.11.2024 11:54пайка кмк в печи, уж слишком всё ровненько, а вот вместо pick&place скорее всего действительно сидели биороботы.
jar_ohty
16.11.2024 11:54"Некогда популярная" технология КМОП нынче -- практически единственная используемая в цифровой электронике, за исключением какой-нибудь редкой экзотики.
Zamix80
16.11.2024 11:54Подсветки в нём не было ? И ещё все-таки название "Personal Computer" - это маркетинговый ход в те времена, т.к. было их целое семейство и не только Casio ? Компьютер ведь ассоциируется с более-менее универсальным устройством, хотя бы в виде клавиатуры и подключения к ТВ. А вот флоппик-приставка - удивил, так и вообразил что загружаю туда игры...
commanderxo
16.11.2024 11:54Общеизвестно, что если хочешь в чём-то хорошо разобраться, то нужно написать затравочный пост на Хабр и разжечь дискуссию, так что поехали!
PB-1000 был далеко не первым "программируемым компьютером" фирмы Casio, он пришёл на смену устаревшему PB-700.То был отличный программируемый калькулятор с языком BASIC, который после установки в док-станцию превращался в компьютер с принтером и накопителем на кассетах, но проблемой 700-го было то, что он вырос из предыдущих моделей калькуляторов и унаследовал 4-х битную архитектуру. Для компьютера он был ужасно медленным, рисование графика синусоиды на небольшом экране занимает несколько секунд. Бэйсика - построчно интерпретируемый язык, что добавляет тормозов. Док-станция продавалась со специальным чемоданчиком, напротив разъёмов были отверстия и работать можно без разпоковки. Было отделение для блока питания, кассет, запасных рулонов ленты. В те времена весьма популярный форм-фактор.
Чёрные чемоданчики из 80-х
Интересно, что в доковой станции PB-700 плоттер встроенный, а магнитофон выполнен в виде съёмного модуля. Возможно продавался отдельно для снижения цены на базовый набор.
Также плёнка в кассете необычно двигается справа налево (впрочем, может в микрокассетах так принято, нигде кроме японских калькуляторов они мне не встречались).
У PB-1000 были братья FX-850 и FX-880 - более компактные, но с двухстрочным дисплеем.Casio FX-8xx
swapper9
16.11.2024 11:54Прекрасно помню FX-880, именно с него и началось мое знакомство с программированием, там по моему было 4кб памяти.
commanderxo
16.11.2024 11:54Интересно, что в калькуляторах тех лет часто земля была положительной, а питание отрицательным (им что-ли PNP транзисторы было проще производить чем NPN? Интересно мнение знатоков), помните об этом, если захотите заменить питание от батареек на внешний БП.
Наклейки на блоках питания как-бы намекают
Я столкнулся с этим когда паял шнур для передачи данных через последовательный порт, так-как программы на Бэйсике проще набивать на большом компьютере, а потом перебрасывать по кабелю. Уровни TTL, нашёл один из USB<->Serial переходников на оригинальном FTDI чипе, там можно в конфигурации задать инверсию всех выходов. Ну или добавить инверторы на микросхемах (у меня другой шнурок был с китайским клоном FTDI и в нем активировать инверсию не получилось)
Кабель
Идеально, конечно, использовать родную доковую станцию, но они встречаются реже чем сами микрокомпьютеры.
commanderxo
16.11.2024 11:54Боюсь что в предыдущем посте я ошибся, это у Sharp E500 UART выведен на боковой разъём и нужно лишь проинвертировать сигнал. Гляжу на схему док-станции FA-7 и вижу в ней полноценный микроконтроллер. Боюсь что для связи по последовательному порту нужно или искать оригинальный док или паять собственный (если передавать данные не системными вызовами, а собственной программой, то можно обойтись упрощённой версией).
Схема док-станции FA-7
commanderxo
16.11.2024 11:54Главным отличием PB-1000 от конкурентов и собратьев по цеху был экранный модуль. Кроме, большого по тем временам экрана на 4 строки, инженеры из Casio добавили две изюминки:
Во-первых системные кнопки LCKEY, MENU, CAL и т.д. - напрямую можно вызывать системные функции в любое время, например менеджер файлов, чтоб сохранить программу на диск/кассету/послать по последовательному порту.
Во-вторых у нас есть тач-скрин! Как видно на предыдущей картинке, редактор показывает внизу экрана "функциональные клавиши", как в старом-добром Нортоне. [search], [next] можно нажимать прямо пальцем на экране, именно это значит надпись "LCD touchkeys" справа. Весь экран разбит на 16 кнопок сеткой 4x4 и их нажатие можно опрашивать программно. Например, можно написать на Бэйсике игру "пятнашки" и играть прямо на экране. За 20 лет до смартфонов иметь такой компьютер в кармане было просто неимоверно круто!
Справедливости ради, этот экран был хорош только по меркам 80-х, в наше время раздражает изменение контрастности при наклоне. Если держать в руках то это не мешает, экран-то повортный, но вот когда работаешь со станции и экран раскрыт на все 180 градусов, то приходится наклоняться, нависая над экраном, чтоб смотреть на него по возможности перпендикулярно. Впрочем, в наше время проблему легко решилась распечаткой на 3D-принтере пластикового клина и экран снова всегда в оптимальной позиции.Современные технологии на службе человечества
commanderxo
16.11.2024 11:54В 80-е стандартной практикой было выводить на разъём шины адреса, данных и управляющие сигналы, что позволяло расширять память добавляя ОЗУ или ПЗУ со служебными программами. В карманных компьютерах как Casio, так и Sharp, выведен наружу GPIO и их использовали в полевых условиях для управлением промышленным оборудованием. ROM-ы были как со специфичным софтом, так и общего назначения, например Casio выпускало транслятор Си и, кажется, Пролога. Для Sharp e500 энтузиасты добавили Форт (написан на ассемблере который компилируется из Турбо-Паскаля).
Часто в компьютер ставились две батареи. Вспомогательная питала память на время замены основной.Casio PB-700
Casio-FX850
Casio-PB1000
Sharp E500
Сделать свой модуль расширения не так уж сложно, я реверс-инженерил по фотографии модуль памяти для Sharp, сделал расширение на 256Кб, причём энергонезависимое, со своей батарейкой. Если кому интересно - KiCad проект в открытом доступе.
Главной проблемой было найти хорошую фотографию оригинального модуля, чтоб расположить контакты в правильных местах.
Как-то так
Есть у меня в коллекции и модифицированный Casio PB-1000, который, если верить наклейкам, использовался в немецком телекоме. У него нестандартный разъём GPIO и установлен собственный модуль расширения с ОЗУ и ППЗУ
Чудо немецкой инженерии
commanderxo
16.11.2024 11:54Casio мне все попались в рабочем состоянии, а вот Sharp пришлось чинить. У него с точки зрения архитектуры два дисплея, у каждого свой контроллер и свой драйвер. Просто пиксели обоих дисплеев распложены рядом на одном ЖК индикаторе. Конденсаторы в драйверах высыхают с разной скоростью, и в попавшем мне экземпляре правая половина экрана имела лучшую контрастность чем левая.
Если компьютер работает, то при нажатии на кнопки должен раздаваться короткий писк. После включения нажимаете один раз кнопку "Contrast" (над буквой P) и стрелками вверх/вниз (на экране) его можно менять. Долгое нажатие на кнопки стрелок должно сопроваждаться писками раз 10 в секунду.
commanderxo
16.11.2024 11:54На доковой станции обращает внимание 36-контактный разъём для подключения принтера. В мире PC до распространения USB стандартом был D-SUB-25 "мама" со стороны компьютера и 36-контактный на принтере, а тут с обеих сторон 36 контактов. Пришлось разрезать два обычных принтерных кабеля и спаять новый. Последовательный порт RS-232 тоже с изюминкой - "мама" вместо "папы". Японские инженеры были на редкость творческими людьми.
На боковой стороне есть выключатель RS-232 - если не пользуешься последовательным портом, то, отключив генератор выского напряжения на +/-15V, можно сильно продлить жизнь батарейкам.
Вот он на схеме
Кроме ожидаемых входа и выхода для подключения кассетного магнитофона, есть и управляющий выход "Remote".
На продававшихся в то время компактных магнитофонах для калькуляторов (музыку играет ужасно, но для цифры сойдёт), был соответствующий вход. Человек перематывал кассету на нужное место, а компьютер по этому проводу включал/выключал лентопротяжных механизм.
Дискета, кстати, используется обычная, на 3,5 дюйма, но вместо стандартных 1,44 Мб форматируется всего на 320 Кб. Впрочем, если набивать программы из журналов вручную на четырёхстрочном дисплее, то это немало.
Stackoverflow 40 лет тому назад
Wesha
16.11.2024 11:54Это стандартная репортёрская фишка: у него на микрофоне, которым он в интервьюируемого тычет, кнопочка; когда он её держит — лента идёт, отпустил — лента встала. Всевозможные калькуляторы и микрокомпьютеры тоже стали эту фичу активно пользовать.
commanderxo
16.11.2024 11:54Был у PB-1000 и старший брат - Casio PB-2000. Построен на том же процессоре HD61700, но добавили памяти, а главное появился второй слот расширения, куда можно вставлять ПЗУ с допронительными языками программирования. Были карточки с Лиспом, Си, Паскалем и Прологом. Купить их сейчас нереально, но народ на форумах занимается реверсинжтнирингом.
У PB-1000 весьма тяжёлая дисплейная часть, кроме экрана там расположены батарейки и долго держать его в руках не слишком удобно. На PB-2000 дисплей перенесли вниз, тач-скрин заменили четырьмя функциональными кнопками. Клавиатуру и дисплей защищает пластиковая крышка, в откинутом состоянии точно повторяющая габариты разложенного PC-1000. Это делает его полностью совместимым с доковыми станциями FA-7 и MD-100.Близнецы братья
checkpoint
Хотел бы я познакомиться с таким инженером. Наверное сейчас у него борода пробила пол и ушла вниз на три этажа.
Спасибо за обзор.
saipr
Ну, наверное, это вы про меня, хотя бороду и не ношу. А в кодах (именно в кодах) написал в свыое время интерпретатор для языка RPG на ЭВМ М-220. Да, в те далёкие 60-е, 70-е, когда на ЭВМ было памяти с гулькин... И программисты творили чудеса в её использование. Для меня вершиной программирования в кодах (автокоде, ассемблере) всегда было и будет реализация Шурой-Бурой библиотека стандартных подпрограмм ИС-2, где был и расчёт дифферинциальных уравнений:
На фотографии М.Р. Шура-Бура (слева) стоит вмести с академиком Ершовым А.П.
GospodinKolhoznik
Золотое было время. Достаточно было знать ассемблер, алгоритмы, диффуры и вычматы, чтобы быть высококлассным программистом. По сегодняшним меркам человек с такими знаниями будет даже не джун, а меньше джуна.
checkpoint
Человек спосоный прогать на асме математические алгоритмы тянет на джуна 80-го разряда. Дайте мне такого "джуна", современному шлаку я его бысто обучу. Если в этом вообще будет необходимость.
GospodinKolhoznik
В теории да, а на практике такой человек скорее всего просто не пройдет hr фильтр, потому что в его резюме нет слов git, postrgresql, docker, оркестратор, не знает ни бэк ни фронт, сетевой стек, паттерны программирования и принципы solid. Уже не говоря о том, что он не знает самого языка на котором придется работать и его основных фреймворков.
И вы серьёзно возьмёте такого сотрудника? Да вам начальство не позволит. Начальство скажет: его же надо всему этому учить, это займёт пару лет. За это время мало того, что он не будет приносить пользу бизнесу, так ещё и вас будет отвлекать от работы, а через несколько лет, когда он всему научится он просто встанет и уйдёт в другую компанию. Поэтому таких и не берут.
playermet
К слову, вот что про подобную ситуацию думает сам создатель принципов SOLID:
checkpoint
А я вот не соглашусь с автором этих строк. Отправив современного кодера в 60-е годы прошлого столения мы не сможем заставить его писать код, так как прогать в машинных кодах придется сначала у себя в голове, потом на листочке бумаги, а потом уже набивать на перфоленте или перфокарте. А потом так же дебажить. Это весьма серьезный навык который развивается с годами и за один день его не освоить при всём желании. А вот текстовый редактор и компилятор освоить можно если не за один день, то за неделю точно. Я считаю что программисты прошлого было более приспособлены к экстремальным условиям работы, нежели расслабленное поколение современных смузихлёбов. Я же говорю, дайте мне человека который способен кодить математику на асме и всем остальным современным примудростям я обучу его в кратчайшие сроки. А многим вещам обучать даже не стоит, да бы не испортить "высокоточный инструмент".
playermet
Кроме неудобного инструментария у них были и противоположные факторы. Некоторые я прочувствовал на себе, когда попробовал писать код для Motorola 68000 для Sega Mega Drive. Например, ограниченные возможности машины на корню режут количество и размах хотелок. Или отсутствие гадания как это будет работать на машине - кеша нет, предсказателя ветвлений нет, скорость чтения из ROM равна скорости чтения из RAM. Целый пласт современных метаний с учетом всех этих деталей просто отсутствует как категория. Не нужно думать о сожительстве с ОС и другими приложениями. Не нужно думать о многопоточности (хотя у SMD есть отдельный процессор для управления звуком). И при этом решение многих обыденных современных задач в ограниченных ресурсах становится очень интересным. Мозг полностью занят непосредственно алгоритмами и всякими хардварными уловками.
checkpoint
Ну, кэши, предказатели и OoO исполнение появились достаточно давно, так что научиться работать с ними не так сложно. Да, потребуется некоторое время на эксперименты, но это не то же самое что обучить современного программиста вколачивать машинный код на перфоленту.
playermet
Смысл не в том, что этому сложно учиться. А в том что на старых процессорах об этом вообще не нужно думать как о факторе на что-то влияющем. На современном процессоре легко написать структуру данных или алгоритм, которая ассимптотически (и числом операций) намного лучше, а фактически производительность такая же или медленней (на этом моменте Александреску шутит про выкидывание книг). На старом процессоре код выполняется ровно сколько времени, сколько занимают в сумме его отдельные операции. И о расположении данных в памяти не нужно думать, кроме как чисто в контексте удобства и решении задачи.
Если получилось написать код чтобы было меньше операций или столько же но более дешевых - поздравляем, ваш код стал быстрее. А теперь сравним это с задачами литкода, где в рейтинге времени выполнения вторые места (5ms) отделяет от первого (<1 ms) переписывание одного и того же по смыслу, пока у компилятора не щелкнет озарение. Без бенчмарка понять стал код быстрее или медленней очень сложно.
Wesha
Вы явно не жили в те времена. Подходим к заданию радикально: переписываем компилятор!