Текстовой редактор под CP/M-80 SED.COM

Компьютер Орион-128 (1990) расширяемый до 256 КБ и его развитие

Moderator: Shaos

User avatar
FizikS
Maniac
Posts: 245
Joined: 11 Oct 2018 07:52
Location: г. Клинцы, Брянская обл.

Текстовой редактор под CP/M-80 SED.COM

Post by FizikS »

На "Орион-128" есть мощный текстовой редактор под CP/M-80 SED.COM. К сожалению без исходников. Работал в нем. Остались приятные впечатления.
Внимание пиратов и "хакеров" !
Программа SED написана на языке Форт фирмы "Техно-Форт" (С-Петербург) и скомпилирована для получения обьектого модуля компилятором шитого кода
этой же фирмы. Автор программы сотрудник фирмы "Техно-Форт" (ранее Форт-Инфо) Владимир Крупский. Благодаря программированию на Форте, невозможно трассирование программы простыми отладчиками (стек не возвратов а данных), для трассирования необходимо использование специального фортпрепроцессора.
Форт позволяет не принимая никаких спец.мер защитить код программы от изменений - например при описании слов-определений Форта используется содержимое ОЗУ. Таким образом в отличие от ассемблерных "защит от модификации кода" собственно п/программ проверки на модификацию кода в программе нет, но модификация ОЗУ приводит к непредсказуемым изменениям в работе программы. Попробуйте сами (на ненужной дискете) изменить например текст в начале "дампа" программы, или любой другой текст в программе. Хакерам гарантирована нелегкая жизнь - чтобы изменить одну ячейку надо высчитать и соответственно изменить сотни других...
Имеется версия для процессора Z80. Программа благодаря применению оптимизированного для Z80 Форта вдвое быстрее, но и почти вдвое больше по обьему.
Текст составил В.Чистяков 03.93
User avatar
Lavr
Supreme God
Posts: 16622
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Текстовой редактор под CP/M-80 SED.COM

Post by Lavr »

А вот этот В.Чистяков - он какое отношение имеет к редактору SED.COM? :roll:
Как-то непонятно из текста... автор вроде не он.
А он - рекламный агент SED.COM или распространял его за деньги?
iLavr
User avatar
Shaos
Admin
Posts: 23655
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Текстовой редактор под CP/M-80 SED.COM

Post by Shaos »

Так ведь он "составил текст" :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16622
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Текстовой редактор под CP/M-80 SED.COM

Post by Lavr »

Я что-то не видел, чтобы ты составил какой-то текст к софту, что писал совсем не ты...
Да еще давал рекомендации "хакерам" и пр. Вот этот момент и интригует, собственно! :roll:
iLavr
User avatar
askfind
Devil
Posts: 743
Joined: 04 Jan 2016 16:15
Location: Russia, S.- Peterburg
Contact:

Re: Текстовой редактор под CP/M-80 SED.COM

Post by askfind »

У нас был редактор ME.COM. Удобный и простой.

Смотри проекты для CP/M https://github.com/lindehaven/CP-M

Визуальный текстовый редактор.

Code: Select all

├── makefile.dat
├── mem
├── README
├── README.OLD
├── test.txt
├── ue.c
├── ue.com
└── ue_make.sub
Micro Editor (ue)

Micro Editor (UE) enables easy editing of small source code files. Source
code files are limited in size to fit into the transient program area (TPA)
of CP/M.
The following functions and associated control keys are provided:

^E cursor up
^S cursor left
^D cursor right
^X cursor down
^A word left
^F word right
^[ start of line
^] end of line
^R page up
^C page down
^T top of file
^B bottom of file
^G delete cursor char
^H delete previous char
^Y delete rest of line
^U undo
^W write file to disk
^L look (search)
^Q quit
^I insert <TAB> char
Скачал. Тестирую в эмуляторе под linux.

Редактирование:

Code: Select all

A>UE TEST.TXT

Hello! 

Edit text for CP/M

Filename: TEST.TXT                              U:000% T:8 C:001 R:00001/00004
Смотрим результат:

Code: Select all

A>type TEST.TXT
Hello! 

Edit text for CP/M

A>
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
Error404
Maniac
Posts: 269
Joined: 05 Oct 2006 11:45
Location: Moscow

Re: Текстовой редактор под CP/M-80 SED.COM

Post by Error404 »

"Sed - отличный редактор. От других" :) главным образом тем, что при минимальном для такого функционала коде (да еще и написанного на ЯВУ) и удобном экранном функционале, он виртуализирует буфер и благодаря этому редактирует файлы размера больше чем ТРА (ОЗУ CP/M) чего не скажешь про te/ue и пр. Если у кого-то есть его исходники (или хотя бы грамотный дизасм), прошу поделиться - давно ищу что-то подобное для Uzix (для него редактор придется поправить т.к. в Юниксах конец строки принято обозначать одним байтом, а не двумя как в СРМ). Также принимаются ссылки на другие текстовые редакторы в исходниках, умеющие работать с файлами больше чем наличное ОЗУ.
Всем добра!
User avatar
barsik
Doomed
Posts: 585
Joined: 19 Feb 2017 10:46
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь

Post by barsik »

Дизассемблировать форт программу обычным дизассемблером бессмысленно, разобраться в логике будет сложнее, чем с нуля написать свой аналогичный редактор даже на ассемблере.

Написать аналог этого типового редактора на ассемблере отнимает менее месяца даже у программиста низкой квалификации. А на Турбо-Паскале пишется за 3 дня. Добавление в простой текстов редактор свопинга не сложно и доступно любому программисту. Объём кода занимаемый процедурами свопинга не превышает 0.75 кб. Размер такого редактора написанного на ассемблере для Z80 будет ~6.5 кб. Если на Турбо-Паскале, то (по моим представлениям) где-то 16 кб. На Паскале МТ+ (это для КР580) или Си (BDS, Aztec) ~20 кб.
User avatar
askfind
Devil
Posts: 743
Joined: 04 Jan 2016 16:15
Location: Russia, S.- Peterburg
Contact:

Re: Текстовой редактор под CP/M-80 SED.COM

Post by askfind »

Error404 wrote:"Sed - отличный редактор.
https://github.com/SmallRoomLabs/sed80

Screen EDitor for Z80 CP/M
What Since I can't find a small and easy-to-use fullscreen text editor that supports VT100 and the arrow keys I'll attempt to write one myself.
It is about 30 years since I wrote any real Z80 code so this will most likey be a long painful re-learning curve.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
barsik
Doomed
Posts: 585
Joined: 19 Feb 2017 10:46
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь

Post by barsik »

Кто-нибудь может странслировать версию этого SED для РК86 и Специалиста (в версии для CP/M с низким BDOS и VT52 и для машины "без-DOS"). У меня никогда не получалось странслировать что-то взятое с github. Потому не люблю github и давно уже даже перестал ходить туда по ссылкам. Исходники надо выкладывать так, как это делаю я, чтобы был BAT-файл, запуская который, через секунду получаешь исходник (т.е все потребные для трансляции инструментальные средства должны входить в архив).

Слово SED являющееся акронимом от Screen Editor (в противовес командным редакторам, используемым на заре цивилизации) использовалось много раз разными людьми и для разных платформ. Также, как и название SCREEN для таких же редакторов. Я например 5 лет пользовался редактором SCREEN (о нём есть статья в ж.МПСС) на ДВК и после 3 года на Специалисте и ещё пару лет на ОРИОНЕ. И сам написал на ассемблере редактор SCREEN (5 кб) для РК86. Но это всё абсолютно разные редакторы написанные разными людьми и не имеющие ничего общего.

PS. Считается, что (в соответствии с устоявшимся ударением в слове) правильно писать тЕкстовый редактор, не текстовОй. Или как я пишу по-болгарски - "тЕкстов редактор", т.к так и читать и произносить приятнее.
User avatar
askfind
Devil
Posts: 743
Joined: 04 Jan 2016 16:15
Location: Russia, S.- Peterburg
Contact:

Re:

Post by askfind »

barsik wrote:У меня никогда не получалось странслировать что-то взятое с github. Потому не люблю github и давно уже даже перестал ходить туда по ссылкам. Исходники надо выкладывать так, как это делаю я, чтобы был BAT-файл, запуская который, через секунду получаешь исходник (т.е все потребные для трансляции инструментальные средства должны входить в архив).
Рабочая станцияUbuntu Linux:

Code: Select all

$ git clone https://github.com/SmallRoomLabs/sed80
$cd sed80
$ sudo apt install z80asm
$ sudo apt install srecord
$ make 
$ tree -L 1
.
├── BUFFER.Z80
├── FILE.Z80
├── LICENSE
├── Makefile
├── README.md
├── SED80.hex
├── SED80.lst
├── SED80.Z80
├── STRCONST.Z80
└── UTILS.Z80

В CP/M преобразуй SED80.hex в SED80.com. Испытай C>LOAD SED80.hex.

Диски с CP/M 2.2 в проекте cpm8266-master.
Attachments

cpm8266-master.zip
(1.2 MiB) Downloaded 340 times

sed80_make.zip
(27.23 KiB) Downloaded 340 times

"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
barsik
Doomed
Posts: 585
Joined: 19 Feb 2017 10:46
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь

Post by barsik »

Это редкий случай, когда в архив, пусть и не COM-, а хотя бы HEX-файл, - уже приложен и транслировать никому неизвестным инструментарием не потребовалось.

Насторожило, что нет даже минимального руководства по пользованию редактором (обычно так бывает, когда продукт сырой) и сразу возникли сомнения, что это оригинальный исторический материал из 80-тых годов. Потому, что все настоящие оригинальные исторические исходники из 70-тых и 80-тых годов, которые я видел (из Public Domain RCPM), написаны для трансляции средствами CP/M (а не кросс-ассемблерами для MSDOS/Windows) и прекрасно транслируются любым CP/M-инструментарием. Данный исходник нет. В CP/M-компиляторах не бывает длинных имён, для них в TPA 8-ми разрядки не хватило бы места. Предположительно это кто-то, используя IBM PC в середине 90-тых или чуть позднее учился программировать, хотя автор написал, что уже 30 лет не видел в глаза Z80-кода и потому всё забыл.

Я потратил менее минуты, чтобы изучить исходник. Когда в исходнике видишь команды LD A,0, CP 0 и RET сразу после CALL, то это сразу наводит на грустные мысли. Вникать особо не стал, но могу сказать, что писал не профессионал, а любитель и даже не особо опытный. Профессионал сделал бы нормальную обработку дисковых ошибок. Естественно, это примитивный редактор без свопинга (сколько влезло в буфер в ОЗУ TPA, такой и максимальный размер файла). Но программист очень трудолюбивый и старательный, предположительно с большим опытом в ЯВУ, использовал говорящие имена и дал подробные комментарии. Исходник годится, как учебный материал.

При запуске с указанием параметром имени нового ещё несуществующего файла, новый файл не создаётся, а выдаётся сообщение об ошибке. Если командой SAVE 0 PROBA.TXT создать новый пустой текстовый файл, то при запуске командой SED80 PROBA.TXT тоже зависает. Редактор судя по приложенному тексту рассчитан на терминал VT100, но у меня такого драйвера нет (т.к в 80-тые, начале 90-тых информации о VT100 у меня просто не было). Похоже на терминале VT52 не работает. По-крайней мере с одним из моих драйверов VT52 редактор зависает. Не разбирался, то ли TPA не хватает (хотя оно у меня более 55 кб, с таким TPA из отечественных машин только Корвет), то ли упр.коды VT100 приводят к завису моего драйвера (что маловероятно), то ли лезет в "железо" или просто версия глючная (там указано, что это ранняя версия, что это значит не ясно).

Когда будет время и желание, возможно, попробую разобраться в исходнике. Похоже не станет проблемой сменить упр.коды на VT52 или можно просто выдрать из редактора редактирующую часть, если станет ясно, что она хороша (важно использует ли с пользой табуляции или нет). Вероятно других модификаций не потребуется, но совсем без модификаций никак не использовать. Да и формат экрана редактора шириной аж в 80 символов в строке неудобен для людей со слабым зрением и не подходит для самодельных отечественных 8-ми разрядок.

Польза от этого исходника могла бы быть, если на его основе сделать редактор для машины без DOS или с мелким TPA. Но тут, к сожалению, нам не повезло с процессором, отчего редактор не годится для советских машин, а т.к широко использует IX IY, его не переделать для процессоров КР580 (ВМ80 и ВМ1) и 1821ВМ85.

- - - Добавлено - - -

От исходника свежего эмулятора CP/M для Windows никому нет пользы, - чтобы это странслировать, (как всегда с исходниками из github) надо быть профессионалом в конкретном ЯВУ и конкретном компиляторе (а в данном случае ещё и в Linux/Unix). Заинтересовало лишь описание отладчика DDT-Z для Z80. Похоже он даже лучше, чем ZSID и ZSID3 (но точно не лучше, чем ZBUG). Но самой программы как раз в архиве не нашёл, - только бесполезное без наличия программы описание. В PD-архивах встречается другой Z80-отладчик ZDT (он 7 кб против 10 кб у ZSID3), полученный доработкой DDT до Z80 (в спойлере текст про него).

 ZDT
Documentation for ZDT Version 1.4.14

Software obtained in Seattle, April 1980.

This is a version of DDT that can use TDL Z80 Mnemonics. This software will automatically determine which chip (8080 or Z80) it is running on and will work accordingly.

This software will use TDL Z80 Mnemonics when in the Z80 mode. The commands to utilize this software are the same as for DDT with the addition of a few aditional commands:

Code: Select all

Extra command:                     Action:

 O                  Open File  ie  Ofilename.atr
                         filename is any CP/M legal filename
                         atr is CP/M file atribute ie hex, com, asm

 W                  Write to file  ie  Ws, f[, offset]
                         s=start address    
                         f=finish address
                         offset - optional 

 E                  End/Close file  ie E optional hex run address
Since this has been obtained occasionally there is no documentation except for this. The above text was reconstructed by me from scratch. Please feel free to improve this documentation.
.

Last edited by barsik on 21 Jul 2020 07:25, edited 3 times in total.
User avatar
askfind
Devil
Posts: 743
Joined: 04 Jan 2016 16:15
Location: Russia, S.- Peterburg
Contact:

Re:

Post by askfind »

barsik wrote:Это редкий случай, когда в архив, пусть и не COM-, а хотя бы HEX-файл, - уже приложен и транслировать никому неизвестным инструментарием не потребовалось.

Насторожило, что нет даже минимального руководства по пользованию редактором (обычно так бывает, когда продукт сырой) и сразу возникли сомнения, что это оригинальный исторический материал из 80-тых годов.
У меня вообще возникли сомнения о том, что для CP/M была реализация SED.COM от Digital Research, Inc.

Исторически:
Sed Текстовый редактор

Википедия

Потоковый текстовый редактор, применяющий различные предопределённые текстовые преобразования к последовательному потоку текстовых данных. Первоначально был написан как UNIX-утилита Ли Макмэхоном из Bell Labs в 1973-74 годах
"Потоковый редактор" и однозадачная CP/M.

Развей сомнения...

RetroProjects CP/M - https://freesoft.dev/program/55438422

https://github.com/MiguelVis/te
TE
A small text editor for CP/M (highly configurable; there are ports for various machines, operating systems and CP/M emulators: Amstrad PCW, Amstrad CPC, Spectrum +3, Kaypro, VT-52, VT-100, WordStar-like key bindings, CP/M-80 program EXEcutor from K. Murakami, CP/M Player from Takeda Toshiya, etc.).

It supports basic editing commands plus: find string and find next string, go to a line number, execute macro from file, help screen, etc.
Attachments

te-master.zip
(121.72 KiB) Downloaded 348 times

"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
barsik
Doomed
Posts: 585
Joined: 19 Feb 2017 10:46
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь

Post by barsik »

askfind wrote:"Потоковый редактор" и однозадачная CP/M. Развей сомнения...
Что-то про SED в книге про Unix от Кернигана попадалось. SED для других DOS это просто популярное название, использованное разными людьми (даже не знающими о Unix) множество раз, а SED из Unix может даже и не экранный, а просто один из мелких инструментов, которых там много. Вообще-то консольные ввод и вывод в CP/M можно считать потоками, там даже примитивное переназначение для устройств ввода/вывода есть. Правда в Unix есть ещё поток для вывода ошибок. Открытый CP/M-файл тоже можно рассматривать как отдельный поток, лишь средствами CP/M переназначение его на STD вход не предусмотрен.

Я ещё попробую запустить этот редактор в паре фирменных антикварных эмуляторов CP/M на PC, где поддержан терминал VT100, надо убедиться, что рабочее, - нет смысла разбираться в чужом, что не является законченным и отлаженым до конца полноценным исходником.

Есть странслированная версия этого свежего эмулятора Z80-CP/M из 2016 года?
User avatar
VituZz
God
Posts: 1344
Joined: 13 Nov 2010 11:06

Re:

Post by VituZz »

barsik wrote:SED из Unix может даже и не экранный, а просто один из мелких инструментов, которых там много.
SED в UNIX - это скорее построчный редактор, его целесообразно использовать в сценариях и в конвейерах. На интерактивное взаимодействие с пользователем он не рассчитан. Кстати, о Sedtrisе знаете?
User avatar
Error404
Maniac
Posts: 269
Joined: 05 Oct 2006 11:45
Location: Moscow

Re:

Post by Error404 »

barsik wrote:Дизассемблировать форт программу обычным дизассемблером бессмысленно, разобраться в логике будет сложнее, чем с нуля написать свой аналогичный редактор даже на ассемблере.
терпимо там дизассемблируется, просто я в свое время поленился этим заняться. Мне всего надо то - в обработке CR-LF скорректировать анализ CR при чтении файла и исключить CR при записи файла.
barsik wrote: Написать аналог этого типового редактора на ассемблере отнимает менее месяца даже у программиста низкой квалификации. А на Турбо-Паскале пишется за 3 дня. Добавление в простой текстов редактор свопинга не сложно и доступно любому программисту. Объём кода занимаемый процедурами свопинга не превышает 0.75 кб. Размер такого редактора написанного на ассемблере для Z80 будет ~6.5 кб. Если на Турбо-Паскале, то (по моим представлениям) где-то 16 кб. На Паскале МТ+ (это для КР580) или Си (BDS, Aztec) ~20 кб.
Ну то есть в среду уже можно ждать? Пускай будет хоть на Паскале, буфер то виртуализированный.
Last edited by Error404 on 24 Jul 2020 16:22, edited 1 time in total.
Всем добра!
Post Reply