|
nedoPC.orgCommunity for electronics hobbyists, established in 2002 |
|
Операционная система CP/M
Author |
Message |
vitali
Senior
Joined: 17 Sep 2019 09:34 Posts: 136 Location: Finland
|
Я не нашел подходящего топика, пишу сюда. Хотел спросить про CP/M - в этой ОСи есть понятие "размер экрана" (длина строки и т.п.)? Что будет, если запускать на системе, куда влезает 40 х 25 символов?
|
05 Jul 2020 10:10 |
|
|
vitali
Senior
Joined: 17 Sep 2019 09:34 Posts: 136 Location: Finland
|
Спасибо за информацию! Откуда взялось 40 символов - начну издалека Я не так давно купил этот eInk дисплей 400х300 пикселей, с драйверной платой на основе esp32. Я думал применить этот дисплей как "умную" фоторамку, повесив у выхода из квартиры (показывать список дел и т.п.). Но руки не дошли. А недавно попался на глаза этот проект, RunCPM, эмулятор Z80 и CP/M. Все запустилось прекрасно на esp32, под терминалом. Но захотелось странного - запустить консоль CP/M на этом eInk. С разрешением 400 на 300 туда влезет 40 на 25 символов, если использовать классический шрифт 8х5.
|
05 Jul 2020 11:16 |
|
|
barsik
Doomed
Joined: 19 Feb 2017 03:46 Posts: 583 Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
|
А пачаму? Если ширина знакоместа в 6 точек, то по горизонтали влезет 400/6= 67 символов в строке. Обычно устройства имеют байтовую структуру, потому проще и намного быстрее выводить байтовый фонт шириной в 8 пикселей. Тогда по ширине в 400 точек влезет 400/8= 50 символов в строке. Это только у нас в РК86/Микро-80/Специалисте/Орионе классическим можно считать фонт 6*8. Я бы считал классическим фонт 8*8. Например такой приличный фонт в Корвете и Векторе, более-менее приличный фонт 7*8 в Правец-82. А совсем неприличный фонт 4*8 в ZX-Spectrum - в редакторе Tasword и при прогоне CP/M-программ на грамотных клонах ZX-Spectrum (чтобы работала CP/M нужно ОЗУ с 0 и экранчик не на $4000, потому в них отключается ZX-ПЗУ и мизерный ZX-экранчик аппаратно переносится на $E000). Это зависит от драйвера. Есть драйверы где символы выводимые за край экрана просто не видны, но перевода строки не возникает и есть драйверы, где например вывод за 63-ю позицию экрана вызывает перескок курсора на начало следующей строки. Как раз на машине с маленьким размером экрана в CP/M выгоднее иметь драйвер без автопереноса строки. А часто надо и так и этак. Например, если хочется на машине с терминалом в 64 символа в строке использовать программу рассчитанную на терминал с 80-ти символьным экраном, то нужно чтобы заворота строк не было (тогда колонки текста начиная с 64-й позиции нам просто не видны, но всё остальное работает). Но если вынужден сделать TYPE на текстовый файл форматированный на 80-ти символьный терминал, то чтобы увидеть концы строк такого текста нам нужен заворот. Потому в грамотных драйверах есть упр.код который включает/отключает заворот длинных строк. Кстати, авторы драйверов для ОРИОНА обычно делали ошибку и вывод следующего символа при курсоре стоящем в последней позиции последней строки приводил к ролику вверх всего экрана. Потому приходилось в текстовом редакторе и TYPE в нортоне использовать экран шириной не в 64 символа, а в 63. Подавляющее большинство иностранных бытовых ЭВМ, выпущенных до 1983 года имело формат экрана на 40 (или менее) символов в строке. Потому что у них в качестве устройства вывода был телевизор, где 64 и более символов в строке выглядят неразборчиво и текстообработка не является приоритетной задачей бытовой машины (задачей является замануха клиентов красивыми играми). На большинстве этих машин с CPU 8080 8085 Z80 ставилась CP/M. В CP/M есть два типа программ - построчно-текстовые и экранные. Построчно текстовые это все компиляторы (кроме Turbo Pascal) и дико неудобный построчный редактор ED.COM. Эти программы рассчитаны на работу с терминалом имеющим только построчный вывод, таким как терминал на базе АЦПУ (типа "Консул-260": это принтер с встроенной в него клавиатурой). Экранные программы отличаются тем, что перед выводом иногда используют позиционирование курсора в любое место экрана с помощью специальных непечатаемых цепочек символов (называемых искейп кодами). Почти все фирменные экранные CP/M-программы работают только на 64 или 80 символов в строке. Некоторые CP/M-программы имеют инсталляторы, где можно настроить упр.команды терминала и размер экрана. У большинства таких программ инсталляторы утеряны. Но в инсталлируемых программах ширина (и высота) установленного экрана хранится всего в одном байте. Потому, если некоторое время ковырять их отладчиком, то можно узнать эту ячейку. Например в 10-ти килобайтовом текстовом редакторе WordMaster можно настроить размеры экрана. Параметры экрана хранятся в следующих ячейках (отступ от начала файла): 0B9H - высота экрана в строках. Обычно 19H. 0BAH - ширина экрана в символах. Обычно 50H или 40H. Ширину в 40 в WordMaster-е я не делал, - обычно на Специалисте использовал 48 символов в строке (шрифт 8*10), т.к с детства ненавижу мизерные буквы (т.к с детства же ношу очки). Если драйвер без заворота, то даже на укороченном экране можно пользоваться удобным текстовым процессором SuperText. Это русифицированный для Корвета лучший CP/M текстов редактор Final Word (имеется ввиду из тех, что работают с 8-ми битовыми буквами, из 7-ми битовых может есть и лучше). Он не сразу впечатляет, т.к надо довольно долго запоминать много информации (тут отличная документация помогает). Но когда спустя недельку пользования в него "вьедешь", то он понравится. Я больше всего пользовался в CP/M именно им. Он изначально под 64 символа в строке, но инсталлируется под любое (разумное) число строк, хотя, например уже при 60 символах в строке часть нужной информации служебной строки справа становится не видна. Вот удобный архивчик, где в одном месте собраны CP/M-программы, в том числе куча текстовых редакторов (но чота, блин, Final Word-а я там не нашёл, возможно он в ASCII-странах был не особо популярен, т.к имелись и лучшие текстовые процессоры).
|
05 Jul 2020 19:23 |
|
|
vitali
Senior
Joined: 17 Sep 2019 09:34 Posts: 136 Location: Finland
|
Спасибо за подробный ответ!
В общем, получается, что экранные CP/M программы не получится запускать на таком eInk экране 400 x 300, в таком случае, смысла возиться с железкой не вижу.
P.S. А какой самый удобный редактор для замены ED.COM?
|
06 Jul 2020 14:01 |
|
|
barsik
Doomed
Joined: 19 Feb 2017 03:46 Posts: 583 Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
|
Так и непонятно почему. Если Вы считаете, что для CP/M требуется обязательно именно 80 символов в строке, то это не так. К тому же растр 400 x 300 прекрасно позволяет иметь 80 символов в строке шрифтом 5*11. Он хотя и уродливый для ряда широких букв (типа М, Ш, Щ, Ж, W), но это не создаёт проблем при чтении, т.к (если человек не первокласник читающий по слогам) восприятие происходит не по буквам, а схватывается всё слово целиком. Потому небольшие искажения букв не важны. Многие зациклены на идею, что для CP/M надо обязательно 80 символов в строке. Но это надо только для электронной таблицы (что нужна лишь, чтобы считать зарплату сотрудникам) и базы данных номер 2 (которая пригодна только для создания базы лишь чисто буквенно-цифровых данных, без графики, потому базу данных TTL-микросхем не сделать). Еще иметь 80 полезно для печати, т.к все матричные принтеры на 80 символов в строке. Но сейчас все такие принтеры ещё 20 лет назад выработали ресурс и выброшены. А даже если такой принтер у кого-то сохранился ещё в рабочем состоянии, то вряд-ли кто захочет печатать из CP/M-машины. А для всего остального хватает 64 символов в строке. Да и сама CP/M, если не нужны компиляторы CP/M не особо нужна. Как файловая система для 8-ми разрядки она избыточна. Если речь о том, чтобы хранить на каком-то массовом носителе маленькие файлы (обычно размером до 40 кб) достаточно любой, в том числе гораздо более примитивной DOS. А если задача только хранить и запускать не CP/M-программки, то как раз развитые свойства CP/M вредят. Не нужна для крошечных 8-ми разрядных игр и больших дисков способность дефрагментации (что позволяет с максимальным КПД использовать объём диска, но тормозит обмен). Если огромных файлов нет, то и способность работать с такими файлами не нужна. А логический обмен тормозит обмен с дискетой на порядок. В более примитивной RK-DOS на порядок быстрее обмен с диском, чем в CP/M, потому что обмен физическими секторами быстрее, чем обмен крошечными логическими секторами по 128 байт. Игр в CP/M есть вроде 3-4 штуки, как раз под 80 символов в строке. Т.о польза от CP/M есть лишь из-за компиляторов ЯВУ, но благодаря эмуляторам для этого уже не требуется иметь реальную CP/M-машину. Причём используя TSR-эмулятор можно CP/M-компиляторы эксплуатировать прямо в MSDOS или в Windows до Win XP (а для последующих Windows, в которых Билл Гейтс выпилил совместимость с MSDOS помогает DOSBOX). Это тайна покрытая мраком. Т.к в эпоху эксплуатации 8-ми разрядок особого выбора текстовых редакторов не было. А в XXI веке, когда появился Интернет и с ним возможность скачать и другие вражеские редакторы, это уже никого не интересовало и никто этим не озадачивался. Я лично рекомендовал бы SuperText, но это не крошечный редактор для мелких случайных работ и для него желателен такт >= 4 МГЦ и диски не менее 500 кб . Если надо редактировать мало и редко, то лучше найти что-то попроще размером до 10 кб. Когда в начале 90-тых CP/M стала доступна местному населению выбор был всего лишь между Word Master, Word Star и SuperText. Те у кого был Z80 могли еще пользоваться Турбо-Паскалевским редактором. Word Star использует 8-й бит символов для своих нужд, потому он 7-ми битовый. Т.о удобен лишь для РК86 и СМ-1800 (где КОИ-7 Н2) и для иностранцев пользующихся ASCII-кодировкой. Word Master объёмом в 10 кб объединяет в себе и построчный командный редактор и экранный редактор, потому избыточен (так что возможно написать CP/M-текстов редактор с нужным функционалом в объёме ~7 кб или менее). А SuperText от Корвета - не 10 кб, а 200 кб. И он не такой простой как апельсин. Требуется время на освоение и к нему надо привыкнуть. Потому сходу он понравился только тем у кого было достаточно ума, чтобы не пожалеть время на его изучение. Когда я в 1990 поимел Корвет и попытался редактировать, то не понравилось, т.к его надо осваивать и я тогда был привычен к простым редакторам ("Screen" на ДВК и "Пианола" на СМ-1800). Гораздо больше мне понравился редактор "Микромир". Лишь несколько лет спустя, поимев принтер, я смог распечатать и изучить документацию, а затем потратив время на освоение, убедился, что SuperText удобный, если привыкнешь. Но я сам встречал лишь единицы тех, кто пользовались бы SuperText-ом. SuperText не особо нужен, чтобы писать письма бабушке, но для программиста важно, что он работает с несколькими файлами одновременно. Похоже большинство людей на всех местных платформах пользовалось Word Master-ом или самодельными редакторами. Т.к Word Master не особо впечатлял по дизайну и свойствам, то, как мне кажется, для каждой 8-ми разрядки авторы любители писали свой текстов редактор, но не в виде корректной программы (т.е пригодной для любой CP/M-машины), а работающей по железу данной машины. Так было на Орионе. Вероятно на Векторе и Корвете также (другие отечественные восьмиразрядки имели или маленький экран или слишком мало ОЗУ для CP/M или крошечный тираж). Для Ориона с экраном в 512 точек мог бы быть создан отличный CP/M текстов редактор, но, увы, Орион был загублен ORDOS-ом (для которого ничего приличное невозможно). Сейчас любой может скачать с CP/M-архивов остальные вражеские текстовые редакторы и процессоры и заняться выбором лучшего. Часть редакторов исходно ориентирована на другие упр.коды терминала, но все более-менее грамотные редакторы/процессоры должны иметь инсталляторы. Но т.к никому из местных это уже не надо (все пишут исходники и в форумах на IBM PC или планшете), то никто с другими CP/M редакторами не разбирался. На мой взгляд даже сейчас имеет небольшой смысл, чтобы кто-нибудь не поленился написать минимальный по объёму (6 кб, максимум 7 кб) корректный текстов редактор, аналог "Word & Deed" Гутникова. По командам думаю это должен быть аналог Турбо-Паскалевского редактора, в который добавлено форматирование. У меня уже ~25 лет лежит исходник редактирующей части (3300 строк ассемблера, транслируется в 5 кб для работы на Орионе и РК86). Осталось добавить работу с файлами (желательно со свопингом, чтобы объём текста не ограничивался объёмом ОЗУ) и форматирование (т.е центровку заголовков, форматирование абзацев, автоперенос при наборе, черчение рамок и т.п.). Кстати, в конце 90-тых на TP я уже делал аналог W&D (любопытно, что переносы в словах при формате у меня были правильнее, чем у Гутникова). Но и на ассемблере это делается без проблем и это я сделаю, но не для CP/M.
Last edited by barsik on 06 Jul 2020 18:47, edited 1 time in total.
|
06 Jul 2020 18:24 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
А что был/есть "Микромир" для 8-и разрядок?
|
06 Jul 2020 18:45 |
|
|
barsik
Doomed
Joined: 19 Feb 2017 03:46 Posts: 583 Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
|
Возможно, что исходно он был как раз для Корвета, а после и для других платформ. Я видел его на Корвете в 1990. Раз редактор легко портировался, то явно был написан на ЯВУ, вероятно на Паскале, т.к Паскаль был в 80-тые годы популярнее, чем Си.
|
06 Jul 2020 18:52 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Про микромир и общие концепции я сначала прочитал в МПСС (примерно в 86году). Потом более подробно в какой-то книге по программированию. А попозже получилось с ним конкретно поработать на ДВК. Действительно очень удобная штука. Примерно в это-же время товарищ одолжил на время Партнер 01.01 (потом и совсем подарил) и я на нем сочинил нечто подобное. Но к сожалению к окончанию конкурса журнала Радио конкретно не успевал. Так и не сделал загрузки - сохранения на кассету. А в принципе в 2К все влазило. И конечно был маркер [КОНЕЦ ТЕКСТА] вроде было так. Потом на PC встретился с MultiEdit/Фотон (вроде так назывались) но удобства по сравнению с MIM не ощутил.
|
06 Jul 2020 20:47 |
|
|
vitali
Senior
Joined: 17 Sep 2019 09:34 Posts: 136 Location: Finland
|
А вот это интересная мысль. Если отбросить "винтажность" и привлекательность самого факта запуска CP/M на портативном недокомпьютере, то что тогда можно использовать? (под недокомпьютером я имею в виду вышеупомянутую комбинацию: eInk 400x300 + ESP32 + SDcard, и все это в корпусе маленькой PS/2 клавиатуры).
|
07 Jul 2020 00:20 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Либо взять готовый драйвер. Под многие популярные платформы драйверы давненько написали. Под "Специалистом" драйвер точно есть, наверняка есть подобный драйвер под "Орион", и даже под ZX Spectrum я такой драйвер видел... Конечно, он ужосс-ужосс на мой взгляд, но спектрумисты не привыкли к приличным экранам - им он нравился... Думаю, на специфических форумах, типа нашего, драйвер разыскать можно.
_________________ iLavr
|
07 Jul 2020 07:29 |
|
|
vitali
Senior
Joined: 17 Sep 2019 09:34 Posts: 136 Location: Finland
|
А нет желания, эээ, написать такой драйвер общими усилиями, в опенсорс? Ну, или хотя бы подсказать, с чего начать? Заманчиво дисплей выглядит
|
07 Jul 2020 08:29 |
|
|
barsik
Doomed
Joined: 19 Feb 2017 03:46 Posts: 583 Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
|
Спорное утверждение. Всё зависит от задачи, ресурсов машины и типа процессора. Как поставить CP/M на РК86-16К, если она отожрёт как минимум 9 кб ОЗУ, тогда как экранный буфер и раб.ячейки и без того уже отожрали в такой машине почти 3 кб. Не очень-то большие CP/M-программы мы сможем загрузить в оставшиеся 4 кб (даже самый простой CP/M-ассемблер имеет размер в 10 кб, Microsoft-бейсик 24 кб, а о запуске MSX-бейсика размером в 33 кб можно даже не мечтать, а ведь для всех этих программ ещё нужно, как минимум, 10...20 кб для их буферов). И по скоростным соображениям, CP/M не лучший вариант для РК86. Я как раз это проверил в реале. При средней скорости РК86 в ~1.31 МГЦ, тормознутости РК-КНГМД и тормознутости самой CP/M (что на порядок тормознее DOS использующих физ.сектора) получается дискозапильная DOS со скоростью загрузки программ лишь в несколько раз быстрее, чем с магнитофона (хотя скорости потоков данных с МГ-головок отличаются в 100 раз). И сейчас как раз задачи для DOS у большинства любителей редуцировались до простейшего запуска программ с винта или хранилища на базе флэш-памяти (microSD). А для решения этой задачи можно написать DOS размером всего в 1 кб. Что очень лампово. А самая ламповость в том, чтобы иметь компьютер с ОЗУ не более 16 кб (причём обязательно на деталях не старше 1985 года) и писать программы прямо на нём, не прибегая к использованию более мощных машин. Слишком смелое утверждение. Если под всеми понимать лишь клоны CP/M и MSDOS, то бесспорно. Но для всех остальных DOS - вовсе нет. Что у Apple-DOS, SOS, PRODOS, FLEX, GEOS, macOS, FUZIX и даже TR-DOS (для Z80) общего с ОС CP/M. -- Ничего общего, даже идей заимствованных нет. И даже отечественные самодельные DOS для КР580 от любителей, - вовсе нет. Похоже у авторов в то время даже не было информации о CP/M. Был дисковод и была задача его использовать. Хоть как-то. Потому между ОС CP/M (>8 кб без буферов) нет ничего общего с Хамелеон-DOS А.Мамонтова (2 кб), RK-DOS Е.Седова (4 кб), ORDOS (2 кб). Хотя тут ORDOS стоит в стороне, т.к она не дисководная (можно считать её менеджером памяти). ORDOS верна по идее (т.к в отсутствии дисковода RAM-диск отличный ход), но неудачна в реализации (ограничение размера дисков в 64К). Впрочем даже ORDOS могла бы стать полезной, если бы на неё догадались адаптировать макроассемблер от Микроши и какой-нибудь ЯВУ. А вообще в разработке DOS главное это придумать формат дискеты, это составляет 95% идеи DOS. А закодировать в исходник может и 6-ти летний ребёнок (если ему объяснив команды ассемблера, сказать, что написание DOS это игра и победитель тот, кто первым добъётся её работоспособности). Точно. Ещё важно, чтобы носитель был такой, что уже имеется у всех. Из этих соображений сейчас полезно сделать DOS, где в качестве носителя - RAM-диск загружаемый из 3.5" телефонного выхода мобильного телефона в МГ-формате со скоростью 1 кб в секунду.
|
08 Jul 2020 02:48 |
|
|
askfind
Devil
Joined: 04 Jan 2016 09:15 Posts: 683 Location: Russia, S.- Peterburg
|
Предлагаю сделать обзор исходного кода проектов. Например, 1) https://hackaday.com/2018/08/14/run-a-linux-terminal-on-cheap-e-ink-displays/2) Пример драйвера ядра Waveshare E-Ink Linux Framebuffer driver https://github.com/dpfrey/mangOH_Waveshare_Eink3) Этот вариант можно просто использовать как TTY 4.3inch e-Paper UART Module
_________________ "Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
|
08 Jul 2020 14:48 |
|
|
vitali
Senior
Joined: 17 Sep 2019 09:34 Posts: 136 Location: Finland
|
Забавно - я целые два дня обновлял открытую вкладку с этой веткой, пока сегодня не обнаружил, что там вторая страница Спасибо за ссылки, хорошие материалы для погрузиться в тему
|
11 Jul 2020 13:41 |
|
|
SAA
Senior
Joined: 12 Jul 2016 21:30 Posts: 136
|
В CP/M 2.2 при вызове функции bdos 0x0E (14) для диска не имеющегося в системе CP/M кидает сообщение об ошибке и по CR уходит в WarmBoot. Для CP/M 3.3 есть функция bdos 45 которая меняет реакцию CP/M на ошибку и вылет можно запретить. Как в CP/M 2.2 добиться того же?
|
04 Feb 2021 11:22 |
|
|
Who is online |
Users browsing this forum: No registered users and 3 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|