PDA

Просмотр полной версии : Самодельный комп на i8080



freddy
03.02.2017, 18:55
Всем привет!
Давайте сюда будем выкладывать свои разработки компов на КР580ВМ80 и обсуждать их.

Мой комп на 8080
На данный момент все цели достигнуты.
Краткие характеристики:
__________________________________________________ _____________________________
Конструкция: модульная,расширяемая, с буферизированой шиной.
Процессор i8080@3,5MHz, RAM 64Kb, ROM 2-32Kb.
Порты ввода-вывода: 2xRS232 в базовом варианте
Операционная система CP/M 2.2, хранилище файлов - жесткий диск IDE.
__________________________________________________ _____________________________
Для облегчения скачивания, все материалы по моему компьютеру собрал здесь:
__________________________________________________ _____________________________
Схемы, печатные платы, прошивка монитора
64649
Исходники монитора с описанием
64650
Прошивка и инструкция для отладки (если не заработал с первого раза)
64725 тест материнской платы
65065 тест IDE контроллера
Адаптированная CP/M 2.2 с исходниками и инструкции по установке
64651
__________________________________________________ _____________________________
Видео с демонстрацией работы:
https://www.youtube.com/watch?v=jrBZHd6nbbA
https://www.youtube.com/watch?v=wykk0T3HxiU
__________________________________________________ _____________________________

Есть несколько печатных плат и запчасти, писать мне в ЛС.

Totem
03.02.2017, 19:19
Всем привет!
Давайте сюда будем выкладывать свои разработки компов на КР580ВМ80 и обсуждать их.
К примеру, вот мой:
59637
В архиве схема и печатка.
Планируется портировать на него CP/M.
В качестве накопителя - HDD IDE, связь с внешним миром через UART.
Отдельно один UART зарезервировван под терминал типа VT52/VT100.
Софт еще сырой, пока в стадии написания BIOS.
Целая тема есть,
http://zx-pk.ru/threads/25682-samodelnyj-kompyuter-na-z80-i-ne-tolko.html

hobot
04.02.2017, 03:08
Целая тема есть
вот и я удивился, почему во флейм? )

freddy
04.02.2017, 19:25
Ну это... похоже больше всего на флейм. Народ давно не разрабатывает на 8080 с нуля, в основном изредка реплики строят или че то типа калькуляторов с бейсиком :) Мне интересно, пытаются ли на нем строить что то практичное, полноценное с накопителем под файло, осью, совместимостью с другими компами на таком же проце? Может кто имеет опыт по переделке биоса CP/M, MP/M? А может у кого-нибудь уже есть готовые печатки и документация? :)

Totem
05.02.2017, 12:45
Ну это... похоже больше всего на флейм. Народ давно не разрабатывает на 8080 с нуля, в основном изредка реплики строят или че то типа калькуляторов с бейсиком :) Мне интересно, пытаются ли на нем строить что то практичное, полноценное с накопителем под файло, осью, совместимостью с другими компами на таком же проце? Может кто имеет опыт по переделке биоса CP/M, MP/M? А может у кого-нибудь уже есть готовые печатки и документация? :)
Тут трудно придумать, что то новое и полезное, я считаю, что для "8битки" "OCъы" любые зло, но если очень хочется, то в англоязычном сегменте "этих ваших интернетов" проектов более чем достаточно, найти единомышленика, сложнее чем написать ОСъ

freddy
05.02.2017, 13:43
В англоязычном сегменте проц 8080 не популярный. На нем чего-нибудь серьезного в тырнете не попадалось. Все в основном ваяют на Z80, а это совсем другой конструктив. Печатки чаще всего не разрабатывают. Более менее что то стоящее есть на http://www.s100computers.com/My%20System%20Pages/8080%20CPU%20Board/8080%20CPU%20Board.htm
Идея использовать стандартную шину мне очень нравится, но дома такое собрать будет трудно. Плата у них сложновата для ЛУТ. Мне удалось сделать все на 20 микросхемах, при том же функционале, плата как раз под ЛУТ с большими зазорами и толстыми дорожками.
Ну а ось всеже полезна. Под CP/M есть много вкусного для разработки софта. Когда она уже есть, чего б ее не использовать? Хотябы ради большого количества софта.

Totem
05.02.2017, 16:05
В англоязычном сегменте проц 8080 не популярный.
очень даже

Все в основном ваяют на Z80
это говорит только о пользе и популярности процессора и минимальной "обвязки".

Идея использовать стандартную шину
таких плат единицы, в основном это реплики, читай "новодел".


Печатки чаще всего не разрабатывают
все настолько давно изложено и доступно, что смысла просто нет.


http://www.s100computers.com/My%20Sy...PU%20Board.htm
http://www.s100computers.com/Hardware%20Folder/Multiflex/Z80%20CPU%20Board/Z80%20CPU%20Board.htm


Плата у них сложновата для ЛУТ.
для лут сложно сделать а4, без ламинатора и это того не стоит.


Мне удалось сделать все на 20 микросхемах
Покажите если не трудно.


Ну а ось всеже полезна.
Она реально бесполезна "для 8 бит", если только "минималистичаская", как "ретро" поддержка оправдана, все остальное только в плане самооброзавания.


Под CP/M
Мы уже вообщем взрослые люди, лично я думаю, что cli, хорошо в работе, а "ретро" должно радовать безумными "демами" и игрушками с хорошим "геймплеем", в рамках существующих платформ.


http://kaput.retroarchive.org/

freddy
05.02.2017, 17:04
Вы так много написали, даже ссылку привели на s100computers, только плата там на z80. Это немного не то.
В итоге чего то простого и функционального и законченного на 8080 в сети нет. Хочется на нем компик для кодинга, чтоб не на эмуляторе...


Покажите если не трудно.
Ну... Это... Я выложил, кому надо тот посмотрит. Сейчас я делаю в мониторе базовый загрузчик с HDD. CP/M пока не работает.
Терминал на ВГ75, подходящий под это дело, давно готов. Осталось напрячся и биос CP/M написать.
Сюда написал, потому что подумал, может кто то уже все сделал до меня, однако маловероятно.
Еще видел более менее простую и функционально законченную машину у Гранта Сирла, но у него на Z80 :(

Totem
05.02.2017, 18:09
только плата там на z80
точно такая как и на 8080

Я выложил, кому надо тот посмотрит.
если не трудно , можно схему в pdf или картинкой хорошего качества?

freddy
05.02.2017, 18:55
если не трудно , можно схему в pdf или картинкой хорошего качества?
Ну там же в архиве как раз в pdf, качество отменное! Там сразу все: материнская плата, источник питания, шина, контроллер IDE винта.



точно такая как и на 8080
Не такая. На Z80 получается проще.

Но нужно на 8080.

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

Еще есть интересный комп IMSAI 8080, всем устраивает, но слишком громоздкий для самостоятельного повторения. Разве что, если в виде кита прикупить.

barsik
05.02.2017, 19:13
Софт еще сырой, пока в стадии написания BIOS

Из текста не ясно, речь идёт о ROM-BIOS или CP/M-BIOS. При разработке своего компьютера возникает вопрос архитектуры.

В конце 80-х, начале 90-х у меня было хобби делать компьютеры с текстовыми адаптерами и я сделал их 4 штуки. Все монохромные, но некоторые с атрибутом инверсии (тогда экр.ОЗУ не 8-ми, а 9-ти битовое). Обычно ставил ПЗУ с F800, но в одном случае, когда текстов.адаптер был отдельный, сделал ПЗУ с 0. Тогда экран с 2000 и весь блок 0...3FFF программно заменяется на основное ОЗУ, т.е - есть режим FULL RAM (64 Кб). Архитектура с отключением ПЗУ и экрана - самая выгодная, т.к можно загрузить в ОЗУ любой монитор и любую ДОС, а драйвер вывода на экран работает из "теневого" ПЗУ, не тратя ОЗУ.

Могу предложить ROM-BIOS для текстового адаптера. Там вывод на экран и встроенный RAM-монитор. Если экран организован линейно по горизонтали с шагом по строкам в 64, то для адаптации на другое число символов в строке и иное число строк достаточно заменить константы и адрес экрана. Вывод на экран для текстового адаптера написать легко, а вот RAM-монитор может пригодиться. Если ROM-BIOS поддерживает ESC-коды терминала DEC VT52, то эмуляцию VT52 не надо делать в CP/M-BIOS. Реально VT52 нужен только для ТУРБО-Паскаля, Word Master-а, СУПЕР-ТЕКСТА и игр. Но TP и Word Master не нужны и даром. Что касается CP/M-игр, то для КР580 их трудно найти.


трудно придумать, что то новое и полезное, я считаю, что для 8-ми битки любые ДOC-ы - зло

Чтобы удобно пользоваться компьютером нужна массовая внешняя память, т.е диск и, соответственно, нужна ДОС. Так что ДОС - не зло, а необходимость. Фактически без ДОС нет компьютера.

Придумать и сделать новую ДОС не так уж трудно. Труднее придумать организацию диска, чтобы ДОС была лучше, чем CP/M. Многозадачные MP/M и TURBO-DOS бессмысленны. Популярная на Западе ZCPR3 это модификация CP/M на Z80, дающая подкаталоги и командный процессор, как в MSDOS. В 80-х в США любители сделали много модификаций CP/M, есть и пара оригинальных ОС, но всё для Z80. Т.о CP/M вне конкуренции. Но CP/M имеет фатальный недостаток, - по ряду причин не годится для дисков большого объёма.

Сначала надо определиться зачем нужна ДОС.Т.е нужна лишь файловая система? Или ДОС нужна, чтобы получить доступ к компиляторам, написанными для неё? Я считаю, что компиляторы ЯВУ малополезны, т.к ресурсов 8-ми разрядки не хватает, чтобы их полноценно использовать? При наличии эмуляторов и кросс компиляторов для КР580 от реальной ДОС на реальной ЭВМ остаётся нужной только файловая система. Актуальна ДОС, поддерживающая диски большого размера.

Чтобы поставить CP/M нужны лишь п/п-ммы чтения и записи физического сектора и процедура деблокирования, которая высчитывает положение 128-ми байтного блока в дисковом буфере. У меня есть эти подпрограммы для 4-х типов носителей - для НГМД от КОРВЕТА на ВГ93, для РК-КНГМД, для IDE-винта (по моей схеме на 3-х 1533 и ППА) и для эл.диска с интерфейсом через F836/39. Не хватает только версии для "micro-SD".

Для КР580 годятся только CP/M, ISIS и RK-DOS. У меня есть исходники ещё 3-х ДОС, которые использовались с РК-КНГМД, но они "повязаны" на Z80. Тип носителя не играет роли, если есть п/п-ммы чтения и записи сектора. Могу выложить исходники CCP и BDOS CP/M с комментариями. В сети нашёл исходник BDOS CP/M 1.0 на PL/M и последующих на ассемблере. На PL/M были написаны первые версии CP/M, но через пару лет 1976 был переписан на ассемблере, т.к хотя PL/M очень эффективен, но даёт в 1.2-1.5 раза больший обхём кода, чем ассемблер.

Гарри Килделл в июне 1972 написал PL/M для 8008 и продал его Intel. В марте 1974 он сделал PL/M для КР580. А затем написал на нём CP/M. Т.е CP/M в 1973 быть не могло, т.к ещё не было PL/M, она появилась только в 1974. В 1973 были лишь первые опыты с НГМД. Первая копия CP/M была продана для IMSAI в 1976 и в некоторых западных книгах указано, что CP/M разработана в 1976. Фирма Intel отказалась купить CP/M всего за 20.000 USD, что принесло бы ей впоследствии миллионы. Почитайте биографию Гарри Килделла http://www.drdobbs.com/architecture-and-design/gary-kildall-and-collegial-entrepreneurs/184410428?pgno=1.

Для КР580 существует ДОС ISIS. СМ-1800 и СО-04 - первые отечественные 8-ми разрядки поставлялись именно с ISIS, а не с CP/M. Для ISIS изначально программ было больше, чем для CP/M. Но она умерла, т.к работала не в старших, а в младших адресах ОЗУ, имела больший объём и не настраивалась на другое железо, также легко как CP/M. Это её и сгубило. ISIS тоже написана на PL/M фирмой Intel для ЭВМ MDS (прототип СМ-1800). К сожалению, PL/M на отечественных ЭВМ работал именно в ISIS, а не в CP/M. Из-за чего PL/M для CP/M не распространилась в СССР.

Компилятора PL/M для CP/M ещё не нашёл, а компилятор PL/M для ISIS доступен на многих сайтах. Нашёл только кросс-компиляторы PL/M-80 на PC. Можно подумать о применении ISIS в качестве ДОС для самодельной ЭВМ. Я пришёл к выводу, что для медленной 8-ми разрядки не нужны крутые ЯВУ, т.е СИ, ПАСКАЛЬ и АДА. От ДОС нужна только файловая система, макро ассемблер и PL/M. Тем самым, для нас CP/M с её 20.000 программ не намного лучше, чем ISIS с всего двумя программами.

Чтобы удобно делать ПО для нового компа надо иметь его эмулятор. Эмулятор B2M настраивается на "железо". Возможно его можно настроить на Вашу архитектуру. Я тоже собираюсь сделать самодельный комп на КР580. Но виртуальный, а не реальный (реальный, скорее всего, тоже сделаю, но много месяцев спустя, когда будет время). Речь о самодельном КР580-компьютере из книги http://zx-pk.ru/threads/20927-quot-prostejshaya-mikro-evm-quot-i-drugaya-literatura/page12.html.

У меня есть эмулятор ОРИОНА на PC (не на ЯВУ, целиком на ассемблере, отчего работает на 286/386-той), а т.к экран организован точно также (лишь меньше по горизонтали), то переделка эмулятора ОРИОНА для такой ЭВМ требует лишь несколько часов. В принципе, ROM-BIOS для такой ЭВМ писать тоже не требуется, достаточно изменить пару байтов в исходнике ПЗУ ОРИОНА. Но интереснее написать именно свой ROM-BIOS для этого компьютера.

Totem
05.02.2017, 22:40
barsik, зачем выдирать кусок из контекста? если интересно, то никто не может запретить. сейчас 2017 доступны детали и исходники. Чем кстати закончилось с 180 в "иришке"?

barsik
06.02.2017, 11:30
если интересно, то никто не может запретить. Сейчас в 2017 доступны исходники. Чем кстати, закончилось с Z180?
Актуальна разработка ДОС, что может работать с приемлемой скоростью с большими дисками (более 2-3 Мб). CP/M с большими дисками сильно тормозит и резко падает размер TPA. Поэтому нужна ДОС в которой каталог не общий на весь диск (что тормозит), а как в MSX-DOS разбит на много маленьких каталогов. Так что дело не только в интересе сделать что-то своё, а есть реальная задача. А исходники чужих ДОС не очень-то и доступны. Например, хотелось бы взглянуть на исходник МИКРО-ДОС и MSX-DOS.

С Z180 ничего не закончилось. Закончил монтаж, но кое-чего нет, отчего пока даже не включал. Закончился энтузиазм. Возиться с железом не люблю, поэтому могу им заниматься лишь кратковременно. Но сложностей не предвижу, всё получится.

freddy
06.02.2017, 15:35
У меня архитектура вообще проста. Монитор из ПЗУ копируется в старший килобайт ОЗУ. Больше ПЗУ не используется (переключается портом #FC, реализованом на U11,U24, см. принципиальную схему в стартовом посте). Никакой экранной области нет, вместо нее есть два COM-порта и тот самый терминал на ВГ-75(Вы его видели).
Монитор будет уметь грузить бут-сектор с HDD и hex файлы через COM-порт. Таким образом по большому счету не важно какая будет ОС. Ее загрузчик будет в бутсекторе. И с PC можно будет загружать и запускать файлы на реальном железе через COM-порт. На PC среда разработки под 8080 будет ограничена только фантазией :)
Что же до CP/M, то мне ее возможностей за глаза. Я не буду на CP/M дисках хранить гигабайты :) Она мне интересна и как ДОС и как источник тонны полезного софта.
По тормознутости будущей железки есть некоторые тонкости. С небольшим радиатором 8080 работает на 3МГц, может быть можно и больше, быстрее не хочет запускаться ГФ24. Хотя должен, может экземпляр не удачный или кварц тупой. Поэтому насчет тормознутости вопрос спорный. Учитывая, что обработку управляющих ESC-последовательностей при выводе изображения на себя возьмет терминал, то работать все должно шустро. И паскаль и фортран и си здесь как бы к месту.

barsik
06.02.2017, 23:17
Никакой экранной области нет, вместо неё есть COM-порт и и подключенный к нему терминал на ВГ75

Таким образом у Вас видео терминал связанный с компом по последовательному интерфейсу. Такая конструкция была в мини-ЭВМ и в первых ЭВМ на микропроцессорах. Отчего вскоре отказались из-за низкой скорости вывода и громоздкости. Экранное ОЗУ в адресном пространстве оказалось эффективнее и намного дешевле. Интересно с какой скоростью у Вас будет работать СУПЕР-ТЕКСТ.

В 1989 я писал КР580-программы в ОС ISIS на СМ-1800 используя такой видео терминал. Это был не интеллектуальный терминал (со своим CPU), а отечественный терминал на жёсткой логике (6-8 плат по 40 корпусов 155, экранное ОЗУ 565РУ1). Терминал понимал много управляющих ESC-команд, что позволяло иметь не только командный редактор, но и экранный редактор (который назывался ПИАНОЛА). То же делал и болгарский видеотерминал ИЗОТ-1031. Для мини-ЭВМ существовали терминалы с графическим экраном и развитым графическим языком. У Вас в терминале графический экран, но CP/M-программы могут его использовать только, как текстовый терминал.

Т.к у Вас в терминале Atmega128, то вся конструкция является двухпроцессорным компьютером. То же самое получается, если ввести в РК86 красивый фонт и подключить его по параллельному интерфейсу к чуть доработанному ZX-48К (где все 64К - ОЗУ). Именно это сделал один мой знакомый с ИРИШЕЙ в 1989, когда возникли проблемы с программами для неё. Тогда он подключил ИРИШУ к ZX-48K, превратив её в качественный видеотерминал. И даже написал текстовый редактор для такого компа (CP/M не было).

Я тоже хотел сделать подобный двух процессорный комп на базе ОРИОНА в середине 90-х. Цель - без труда получить ЭВМ на Z80H с клоком 12 МГЦ, что предназначался для эмуляции компьютера на 6502.

КР580 устойчиво работает на 3.5 МГЦ. У меня КР580 до сих пор работает в СПЕЦИАЛИСТЕ с ВК28 и кварцем в 13 МГЦ (такт КР580 3.25 МГЦ). 580ГФ24 может работать с высоким кварцем только, если последовательно с кварцем включить емкость всего в 3...5 пф. ГФ24 устойчиво работал с кварцем 32 МГЦ.

Когда делал CP/M для винчестера, то отказался от размещения кода CP/M на системных треках. Удобнее иметь файл DOS$.ORD, который можно прошить в ROM-диск. К тому же одной версии ДОС мало. Делать подкачку кода CCP+BDOS с системных треков - глупо. Для этого была удобна архитектура ОРИОНА, т.е наличие излишних банок ОЗУ, откуда и делается подкачка кода CCP+BDOS. Поэтому в ЭВМ, что использует CP/M следует иметь ОЗУ 80 кб.

freddy
07.02.2017, 14:38
Такая конструкция была в мини-ЭВМ и в первых ЭВМ на микропроцессорах. Отчего вскоре отказались из-за низкой скорости вывода и громоздкости.
Мне низкая скорость и громоздкость не грозит.

У Вас в терминале графический экран, но CP/M-программы могут его использовать только, как текстовый терминал.
Тот терминал - это отдельная песня, он себя еще покажет во всей красе, когда я дострою PC/XT. В этом году планирую биос закончить.


КР580 устойчиво работает на 3.5 МГЦ.
Скорость на уровне zx-specrum, и при выбранной архитектуре, процессору графикой ворочать не надо.


Когда делал CP/M для винчестера, то отказался от размещения кода CP/M на системных треках. Удобнее иметь файл DOS$.ORD, который можно прошить в ROM-диск. К тому же одной версии ДОС мало. Делать подкачку кода CCP+BDOS с системных треков - глупо. Для этого была удобна архитектура ОРИОНА, т.е наличие излишних банок ОЗУ, откуда и делается подкачка кода CCP+BDOS. Поэтому в ЭВМ, что использует CP/M следует иметь ОЗУ 80 кб.
Ну мне бы просто CP/M портировать, а RAM-disk это уже дело пары выходных.

bigral
09.02.2017, 03:51
Похоже с какого-то момента (с самого раннего) Z80 РЕЗКО вытеснил i8080\8085 изза того что не требовал много обвязки, производился в огромных количествах разными производителями, имел кучу доп. регистров и команд. Таким образом огромное количество CP/M-80 софта на i8080 таки НЕ заработает. Кроме того cross компиляторов именно под i8080 тоже немного (в основном все под z80). Исходя из этого не удивительно что накопать в интернет схем и плат на i8080 работающих с CP/M почти невозможно. (IMSAI? разве что). По сути такого плана компьютеров как ОРИОН и ВЕКТОР я и не встречал. Т.е. это как бы намекает что на западе им сделать нормальный комп (домашний) с графикой очень даже не просто было (да и безсмысленно при наличии Z80 и с учетом что конкурировать ему с apple2, atari400, commodore vic-20).

По поводу отсутствия экранной памяти в адресном пространстве для 8bit платформы это здравое решение, так как 16bit адреса это реально мало. Тот же pdp11 выживал "на грани" только за счет того что диспечер памяти давал 8 окон со страницами длинной до 8 кб + плотность кода высокая + нету экрана в адресном пространстве (+ на самом крутом проце разные пространства инструкций и данных). TI-99/4A, MSX (а за ихним примером NES, SEGA) показали как надо правильно вешать экран на систему у которой 16bit адресов. К тому же не забываем про то что шина видеопамяти и основной памяти должна быть разделена (а иначе пропускная способность памяти будет делится между экраном и процом что ограничит возможности и первого и второго). Даже в нищебродском ZX48 видеопамять отделена резисторами от "дополнительной 32кб".

По поводу банков памяти, видимо оптимальная схема у MSX (не сильно сложная и достаточно мощьная). В конце-концов на ATM2 (типа как вершине спектрум клоностроения у нас) пришли к очень похожей схеме. Это конечно не то что у PDP11 но во многом приемы программирования с оверлеями можно применять в такой схеме. Однозначно убогая схема была принята при расширении ZX48 в ZX128, и это уже ПОСЛЕ того как все было давно известно про pdp11 и ПОСЛЕ выхода MSX, и при том что явно ULA перерабатывали по новой и могли спокойно влепить mapper похожий на тот что в MSX (не говоря про экран от timex и т.д.).

Vadim
09.02.2017, 07:48
Актуальна разработка ДОС, что может работать с приемлемой скоростью с большими дисками (более 2-3 Мб). CP/M с большими дисками сильно тормозит и резко падает размер TPA. Поэтому нужна ДОС в которой каталог не общий на весь диск (что тормозит), а как в MSX-DOS разбит на много маленьких каталогов.


Меня поражают такие вот "эксперты". Я в шоке просто. Откуда вообще все эти сведения??? Разве диск 2-3 мегабайта большой? CP/M поддерживает 8 мегабайт на диск, если что. Совместимые системы типа ZSDOS много больше. про MSXDOS вообще полная чушь написана.
Тотем бред ляпнул про ненужность ОС для 8 бит. Ну давай без ОС будем, и как работать? Как файлы читать? Как их писать? Без ОС получаем ZX-Spectrum с процедурой чтения/записи магнитофона со всеми вытекающими или с трдос, который не ОС вовсе и с кучей проблем. А если были бы там ОСи, то и софт был бы гораздо лучше.

>CP/M с большими дисками сильно тормозит и резко падает размер TPA.

что за бред? У меня, к примеру, система совместимая с CP/M поддерживает диски размером в гигабайты, размер TPA - 58K. Скорость работы с диском просто огромна, почти максимально возможная. система и драйверы сидят в страницах. ФС - FAT12/16 с полноценной поддержкой подкаталогов.

ZCPR это не ОС, а замена стандартного CCP, в котором есть некие улучшения, типа переименования областей пользователя на диске (USER'ов) в текстовые имена, + более удобная CLI

Sayman
09.02.2017, 08:08
Totem, про ос/дос ты сильно ошибаешься.

В конце-концов на ATM2 (типа как вершине спектрум клоностроения у нас)
с каких это вдруг АТМ2 (или АТМ3) вершина местного спектрум клоностроения? На мой взгляд, Спринтер куда круче. Управление памятью несколько более удобное (для программиста), чем у атм. а про структуру экрана - вообще халява, АТМ даже рядом не валялся.

Бука
09.02.2017, 09:03
По сути такого плана компьютеров как ОРИОН и ВЕКТОР я и не встречал.

Навскидку: https://en.wikipedia.org/wiki/DAI_Personal_Computer

CPU: Intel 8080A at 2 MHz
Memory: a maximum of 48 kB dynamic RAM, 24 kB ROM and 256 Bytes of static RAM (stack RAM)
Keyboard: 56 Keys
Video interface: PAL compatible UHF CH 36 color-TV (antenna) output signal with audio
Text mode: 60 characters × 24 lines (66 characters per line supported)
Graphics modes: Low - 88 x 65 pixels; Medium - 176 x 130 pixels; High - 352 x 260 pixels; Very high - 528 x 240 pixels (non-square)
available colors: 4 or 16 colors (16 color mode was actually 4 color palette)
Sound generation: 3 frequency generators + 1 noise generator

Shiny
09.02.2017, 09:06
Еще есть интересный комп IMSAI 8080, всем устраивает, но слишком громоздкий для самостоятельного повторения

кстати да! машинка весьма интересная. Клавиатура+моник+дисковод + cp/m : чем не компьютер?

Бука
09.02.2017, 09:11
Хотя да, покопался - на 8080 очень мало машин. https://en.wikipedia.org/wiki/Compucolor_II

Z80 быстрей дешевле и проще оказался.

Зато у нас как скопировали 8080 так десять лет не чесались, угу. :(

freddy
09.02.2017, 19:25
Ось безусловно должна быть. По прошествии лет мне кажется что, CP/M - наиболее логичный выбор.
На 8080 было много машин. Но это были громоздкие конструкции. Я же задался целью сделать на маленькой плате с шагом под ЛУТ и не большим количеством деталей. Чтобы дома можно было легко собрать. Плата 150х110 получилась.
Из того, что упоминается в Интернете, есть только общие описания, схемы и документация давно ушли в Реку Времен.
И еще у нас делали инвентаризацию склада, выкинули все микросхемы. Там было много от 580 комплекта, решил практически применить.


Z80 быстрей дешевле и проще оказался.
Ну и 8080 работает на 3,5МГц, так что тогда в 80-е годы Z80 не был быстрее. Это сейчас китайцы клепают Z80 на 20МГц.
То что проще -да. Условно. Всеравно в большой системе ему тоже придется шины буферизировать, а то здуется :)

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


Похоже с какого-то момента (с самого раннего) Z80 РЕЗКО вытеснил i8080\8085 изза того что не требовал много обвязки, производился в огромных количествах разными производителями, имел кучу доп. регистров и команд. Таким образом огромное количество CP/M-80 софта на i8080 таки НЕ заработает.
Вытеснить, то вытеснил. Однако софта все же заработает большее количество!
Насчет компиляторов я сильно призадумался. Я юзаю MAC в связке c Wordstar. Доволен. На PC юзаю ASM8080 в связке с Win asm editor v2.2.
Раньше юзал TASM, перенастроенный на 8080/8085. Здесь ключевое слово "перенастроенный". Сейчас много ассемблеров развелось с поддержкой макросов.
Поэтому можно перенастроить на любой проц.

Shiny
09.02.2017, 20:33
Раньше юзал TASM, перенастроенный на 8080/8085. Здесь ключевое слово "перенастроенный"

не так перенастроен наверное.

TASM 3.2 готовит код 8080:
tasm -85 -b -g3 bl.asm bl.bin

barsik
09.02.2017, 21:43
Исходники чужих ДОС не очень-то и доступны. Например, хотелось бы взглянуть на исходник MSX-DOS.
Про MSX-DOS вообще полная чушь написана

Чтобы иметь основание писать, что это чушь, надо привести работающую ссылку на скачивание исходника MSX-DOS. И что здесь чушь? И надо быть вежливее. Разве не лучше было бы написать "Извините, но мне кажется, что Вы неправы" и привести доказательства этого.


Меня поражают такие вот "эксперты". Я просто в шоке. Откуда вообще все эти сведения? Разве диск 2-3 мегабайта большой? CP/M поддерживает 8 мегабайт на диск, если что. Совместимые системы типа ZSDOS много больше.

Уверен, что Вы никогда не видели, с какой скоростью CP/M работает с диском в 8 мб. И речь о CP/M. Сведения из личного опыта, не из книг.

В 1997 я купил б/у IDE-винчестер 42 Мб, специально чтобы поставить в ОРИОН. Но, т.к флопа 3.5" в формате 1640 Кб хватало, только в 1999 наконец собрался его подключить. Не было смысла ставить 16-ти разрядные регистры, - винты с ATA-интерфейсом допускают восьми разрядный обмен. Поэтому всё доп.железо - 1533 ЛА3, ИР22 на доп.платке и ИЕ7 в качестве регистра на основной плате ОРИОНА. Работа заняла лишь пару дней, т.к до этого я уже несколько раз решал ту же задачу (в 1989 для СПЕЦИАЛИСТА с КНГМД от КОРВЕТА и в 1994 для РК-КНГМД).

Скорость обмена с винчестером получилась примерно вдвое меньшей, чем на ВГ93 с DD-НГМД в формате 800К. Т.е в 4 раза меньше, чем в формате HD флоповода 3.5". Такая скорость получалась при дисках в 1 Мб и числе экстентов каталога до 256.

CP/M хранит список файлов всех юзеров в общем каталоге. При увеличении размера дисков и, соответственно, размера каталога и числа экстентов, скорость работы CP/M быстро падает. Если при дисководе и числе экстентов в 128, просмотр каталога отнимает 1-2 секунды, то при увеличении размера каталога в 16 раз, поиск в каталоге во столько же раз удлиняется. Учтите ещё вдвое меньшую скорость обмена.

Таким образом даже теоретически фактор торможения при поиске - 32. Не говоря уже о том, что CP/M использует оперативное построение "Allocation Table", в отличие от APPLE-DOS, где готовый VTOC просто читается с диска, или MSDOS, где FAT16 тоже в готовом виде читается с диска. По горячему старту и при копировании в НОРТОНЕ происходит построение "Allocation Table". Т.к НОРТОН рассчитан на сменяемые диски, то при каждой дисковой операции выполняется функция RESET, что вызывает торможение, - сначала для поиска файла в огромном каталоге, затем на построение Allocation Table для диска копирования и только затем выполняется копирование со скоростью вдвое медленнее, чем дисковод.

А учитывая, что сама CP/M врожденно тормозная, то работа с винтом в 8 Мб получается очень медленной.

Это чётко видно на дисководах. РК-ДОС на РК с реальным тактом в 1.3 МГЦ работает в 10 раз быстрее, чем CP/M на ОРИОНЕ с вдвое большим тактом и вдвое большей скоростью потока (MFM вместо FM). Это из-за того, что обмен в CP/M происходит логическими секторами по 128 байт, что вызывает много пересылок. Сначала физический сектор читается в дисковый буфер, а затем нужный 128-ми байтный блок пересылается на адрес DMA. А РК-ДОС работает физическими секторами и сразу читает физ.сектор в нужное место. Никаких лишних пересылок. Вот чем вызвана врождённая тормознутость CP/M.

Кстати, если программа глупая и, копирование делает не используя свой большой буфер (кратный размеру группы), а логическими блоками по 128 байт (считал-записал), то вообще получается кошмарная скорость - для каждого чтения и записи куска в 128 байт читается целый дисковый буфер. Т.к буфер стремятся сделать размером в группу, то получается 16/32 лишних считывания и записи при размере группы в 2/4 кб. Фирменных программ с такой глупостью нет, а вот любительские программы встречал.

По указанным причинам пришлось разбивать винт на партиции по 3-4 Мб. Но таблицы для дисков занимали очень много места. Решить эту проблему можно было только понижая уровень BDOS, т.е сокращая TPA, что делает саму ДОС бессмысленной. В одном BIOS уместить и дискетные п/п-ммы для ВГ93 и п/п-ммы для винта и таблицы для кучи дисков не получалось, не хватало ОЗУ. Поэтому пришлось сделать две версии ACP/M 1.63 и 1.64. В одной - только одна партиция винта и один флоповод. В другой - 12 партиций винта и эл.диск 120К из ОЗУ, но без флоповода. Опускать уровень BDOS ниже CC00 было нельзя, т.к все программы ОРИОНА сдуру привязаны к этой вершине TPA. Причём, мне не удалось даже использовать весь винчестер. И даже 12 партиций были доступны не одновременно, а спец.командой CCP выбирались, только 4 текущие партиции (одна общая для обмена). Так что винт размером более, чем 40 мб для CP/M не нужен.

Я много лет пользовался таким винчестером. Причём из-за тормознутости, только для хранения, не для использования. Когда в 2000 произошёл крах винта PC, то программы и исходники сохранились только на этом винте, отчего я потерял только половину архива.

Интересно, что ещё до винчестера, увидев насколько РК-ДОС быстрее CP/M, я написал в 1996 свою DOS, называемую TURBO-DOS (не знал, что имя уже занято в 80-х). В которой обмен не по 128 байт, а физическими секторами, что резко ускорило обмен. Также я написал вариант APPLE-DOS, не для 6502, а для Z80, но идеология была взята от APPLE. И здесь тоже обмен физическими секторами, отчего быстрее, чем CP/M.


CP/M поддерживает 8 мегабайт на диск, если что

Я тоже встречал такое утверждение в литературе. Но не вижу чем вызвано такое ограничение. При размере группы в 16 кб и двухбайтовой нумерации групп получается 16 кб * 65536 = 1000 мб. Просто при больших дисках таблицы займут всё ОЗУ 64К, а поиск в каталоге займёт вечность.


Что за бред? У меня, к примеру, система совместимая с CP/M поддерживает диски размером в гигабайты, размер TPA - 58K. Скорость работы с диском просто огромна, почти максимально возможная. система и драйверы сидят в страницах. ФС - FAT16 с полноценной поддержкой подкаталогов.

Нельзя так писать человеку, который Вам ничего не сделал и не писал ничего грубого. В форуме надо быть вежливым. Только больные люди, точнее психологические вампиры, стремятся обидеть, т.к получают от унижений людей кайф. Даже если кто-то заблуждается и написал в посте ерунду (кто не ошибался?), то не надо называть это бредом. Это нарушение правил форума. Гораздо лучше и выгоднее (всем) никого не обижать, а вежливо информировать в чём именно кто-то не прав, приведя неоспоримые доводы.

В CP/M не может быть TPA 58К, т.к сама CP/M занимает более 8 кб. А раз у Вас файловая система FAT16, то это даже, как минимум, не полностью совместимо с CP/M. Тем самым, Вы просто подтвердили то, что я написал. Что быстрой может быть только ДОС не использующая структуру диска CP/M, имеющая не один гигантский каталог в 200 кб, а множество мелких каталогов.


ZCPR это не ОС, а замена стандартного CCP, в котором есть некие улучшения

Это ясно из названия: "Z80 Command Processor Replacement". Поэтому я и написал - "ZCPR3 это модификация CP/M на Z80, дающая подкаталоги и командный процессор, как в MSDOS." Заменой CCP это было лишь в первой версии, а последние размещают большой кусок кода выше BIOS, потому изменяют и модули BDOS и BIOS. Кроме того заменяются и утилиты (SUBMIT и т.п). Исходник ZCPR - 2 мб, а исходник всей CP/M - лишь 150 кб. Да и документации на порядок больше. О ZCPR я узнал 27 лет назад из журнала "Компьютер за Вас" 7.1990 страница 26. Кстати, есть версия ZCPR2 для КР580 и CP/M 2.2, хотя из 100 утилит ZCPR, для КР580 адаптированы лишь десяток основных.

Shiny
09.02.2017, 21:56
Также я написал вариант APPLE-DOS, не для 6502, а для Z80, но идеология была взята от APPLE
свой вариант? AppleDOS мало документирован.

barsik
09.02.2017, 23:00
свой вариант? AppleDOS мало документирован.

Apple-DOS 3.3 по сути не ДОС, а расширение резидентного бейсика. Программый интерфейс там на уровне командных строк, а не подпрограмм. Я и не собирался адаптировать программный интерфейс, т.е функции, даже если бы они были. Ведь использовать ПО для 6502 всё-равно бы не смог.

Целью было - повторить идеологию организации диска. Т.е сектор VTOC, отражающий занятость секторов, каталог в виде связанного списка секторов и T/S LIST для каждого файла. Естественно, формат каталоговой записи изменил (зачем мне ограничение диска в 124 кб и максимум 105 файлов). Организация трековой записи во VTOC тоже иная, рассчитанная на РК-КНГМД. Размер сектора не 256, а 512 байт, что дало максимум 1280 кб на диск.

Главная задача была получить быструю ДОС, т.е с обменом физическими секторами, а не логическими, и чтобы дохлота секторов не особо вредила (в CP/M если дохлота на месте каталога или сектора с БПД - выкидывай диск). Я использовал эту ДОС с РК-КНГМД в формате 880 кб на диск 3.5" (11 секторов на трек). В начале 21 века дискеты стали дохнуть (т.к были куплены в самом начале 90-х) и большую часть дискет пришлось перевести на формат 7 секторов на трек, 560 кб на диск, который использовался для DD-дисков на НГМД 5.25". Интересно, что самые "породистые" диски с пожизненной гарантией сдохли первыми, а дешевые беспородные тайваньские служат спустя 25 лет.

ДОС работает на ОРИОНЕ в банке 0. Для всех ДОС есть цветные оконные НОРТОНЫ, программы LORD, отладчик DDT (КР580), текстовый редактор (аналог турбопаскалевского) и два макроассемблера (увы, мнемоника КР580). К сожалению, данная ДОС рассчитана на дисковод. Идеология Apple-DOS не годится для винчестера, т.к во VTOC на каждый сектор выделен бит, а не 1 бит на целую группу в 16 кб. Это позволяет более экономно тратить диск, чем в CP/M, но не годится для больших дисков.

Когда поставил винт, стал думать о формате PRODOS, но там всё намного сложнее. Главное не кодирование, а придумать саму идею грамотного и удобного формата диска. Написал ещё одну ДОС, в которой в каталоге хранились не только записи о файлах, но и записи о свободных местах (тем самым я избавился от VTOC или Allocation Table). Но и в этой ДОС тоже общий каталог, а не много маленьких. В общем, нужна грамотная идея организации диска для приводов большого размера.




fboot EQU 0
fconin equ 1
fcout EQU 2
fdirect EQU 6
fmssgc EQU 9
frdstr EQU 10
fstatus EQU 11
fvers EQU 12
freset EQU 13
fseldsk EQU 14
fopen EQU 15 ; Вход: (ENTADR)=FCB, (ENTBYT)= 1...4 (Read/Write/Append/OverWr)
fclose EQU 16
ffind EQU 17
ferase EQU 19
fsread EQU 20 ; последовательное чтение сектора (TRACK,SECTOR)
fswrite EQU 21 ; последовательная запись сектора (TRACK,SECTOR)
fcreate EQU 22
frenam EQU 23
;factive EQU 24 ; выдать вектор действующих дисков
faskdsk EQU 25
fsetdma EQU 26
;falloc EQU 27 ; get VTOC TABLE
fsetatr EQU 30 ; задать атрибут файла
;fgetdpb EQU 31 ; get DPB
fuser EQU 32
fovwrit EQU 34 ; Прямая перезапись любого сектора файла
fsize EQU 35 ; Возвращает размер файла, HL= байтов
fsetns EQU 36 ; Позиционирует на нужный сектор файла
fkill EQU 38 ; Удаление без освобождения занятых секторов, сектор T/S LIST освобождается, если он читается

fervec EQU 39 ; вход: DE= blok of ADDR. Установить свои вектора ошибок BDOS
frstvec EQU 40 ; Восстановить стандартные вектора ошибок BDOS
fgetdir EQU 41 ; считать каталог диска
fopros EQU 42 ; опрос клавиатуры
ffrfcb EQU 43 ; формат FCB из ASCII-строки. DE-адрес FCB, HL-source line
fload EQU 44 ; загрузить файл целиком
fsave EQU 45 ; записать целый файл
fgetlin EQU 46 ; ввод строки символов с редактированием и тимплетом (курс.вверх)
ffree EQU 47 ; Выход: HL= число своб. секторов на диске
fsetadr EQU 48 ; установить адрес загрузки файла
fgetatr EQU 49 ; получить адрес загрузки файла
fdecsz EQU 50 ; Сократить размер файла на 1 сектор

for_rd EQU 1 ; файл открывается для чтения
for_wr EQU 2 ; --"-- для записи
for_ap EQU 3 ; --"-- для дополнения
for_ov EQU 4 ; --"-- для перезаписи секторов

Вот что исполняется по нажатию <F1> в CCP

XHELP: RST 18H
defb 'SAVE/SAVE$ NAME Н.АДР К.АДР',13,10
defb 'LOAD/LOAD$ NAME [АДР]',13,10
defb 'TYPE/TYPE$ NAME',13,10
defb 'COPY/COPY$ NAME d:',13,10
defb 'REN/REN$ SOURCE TARGET',13,10
defb 'DEL/DEL$ NAME',13,10
defb 'DIR/DIR$ [d:]',13,10
defb 'ATTR NAME HEX',13,10
defb 'CLS',13,10
if FULL
defb 'GET [d:] ТРЕК СЕКТ [N СЕКТ]',13,10
defb 'MOV ОТКУДА КУДА СКОЛЬКО',13,10
defb 'FILL Н.АДР К.АДР БАЙТ',13,10
defb 'KS Н.АДР К.АДР',13,10
defb 'TEST d:',13,10
defb 'INIT [d:]',13,10
defb 'MAP [d:]',13,10
endif
defb 0
RST 38H



Как видите, где возможно, все функции совмещены с CP/M, так что адаптация программ при наличии исходника занимает полчаса. Размер файла с точностью до байта, есть дата и время файла. У файлов есть адреса загрузки. Считывание каталога. Есть запись-чтение файлов целиком (естественно, если размер менее TPA). Встроенный цветной оконный драйвер. Встроенный эл.диск из ОЗУ. CCP работает как с дисками DOS, так и с квазидисками ORDOS.

Sayman
10.02.2017, 18:25
barsik, у ФАТа тоже есть свои костыли. вы забыли, на секундочку, при стандартном форматировании диска, скажем, на пару гигов в фат16, корень диска уже позволяет держать 512 файлов. в каждом каталоге их так же может быть много.
тут суть в том, что у цпм из-за мелкого размера диска, много файлов туда не записать. у вадима и у меня были профики (у Вадима и сейчас есть), а профик это цпм машина. У меня, к примеру, было 3 версии цпм для профи - старая древняя микродос (отечественный аналог цпм в представлении Кондора), их же следующая версия concurrent bios версии 4 и не помню чья версия 5.30 с расширением для работы с винтов. и винт я тоже цеплял, гигабайтный и создавал там сразу 4 раздела по 4 - 8мб (точно сейчас не вспомню).
интересно, от куда вы взяли, что у цпм были организации секторов в группы (кластера?). если я верно помню, то у цпм в классическом виде сектор был 128 байт и только позднее каждый производитель наделал свои стандарты этой фс, по которым сектор мог быть увеличен до 1кб. На профи именно этот вариант использовался. диск двойной плотности на 160 треков, по 5 секторов на трек. сектор 1024 байта. корень диска это список юзеров от 0 до 15. юзер по умолчанию для чтения и записи, как я помню был 0, а юзер 15 как правило использовали под всякий системный хлам типа драйверов. при всём желании вы туда 512 файлов не запишите. чтение каталога мало чем отличается от чтения каталога для фат.
Опять таки, у Вадима была своя версия доса изначально полностью совместимая с цпм, но с фатом в качестве фс. ЦПМ софт не умеет работать с каталогами, каждый каталог для цпм софта выставлялся как текущий, грубо говоря, юзер. это сильно накладывало ограничения на работу с софтом, но зато было проще хранить, т.к. был винт и фат16.
тпа в 58кб это реальность. просто большая часть ядра системы спрятана где-то в страницах, а видимая часть это типа диспетчер апи. а если посмотреть на спринтера, то там "тпа" в 4 метра)))) если в цпм размер ком файла ограничен размером тпа, то у доса на спринтере нет такого ограничения, ехе файл может быть хоть 100мб. не забываем про эмуляторы цпм. там тпа под 60кб.

Касательно msx-dos, тут действительно, вы немного не правы. во1х, есть исходники. во2х, есть куча документации по этой дос и есть весьма не маленькое комьюнити на msx.org. сама мсх-дос явно писалась под впечатлением от мс-доса и она сильно на неё похожа по некоторым логическим моментам. при этом, мсх-дос так же является цпм совместимой системой.
опять-таки не ясна ваша формулировка

в MSX-DOS разбит на много маленьких каталогов
что за маленькие каталоги? почему они маленькие? скажем 256 или 512 файлов на каталог это много или мало? или они маленькие по объёму в байтах? так каталог не регулируется таким методом.
почитайте про файловые системы фат, многое вам станет понятно, благо мануалов в инете много.

и ещё про Орион - тут вам сразу дорога к Error404. я уже давно понял, что на Орионе есть штук 5 разных досов и все они цпм подобные, есть даже с прикруткой фата.

Totem
10.02.2017, 19:23
пожалуй самая быстрая реализация на реальном железе cpm из самоделок и да- Z80 образном.
http://noplabs.com/cpm50/cpm50.html

Error404
10.02.2017, 20:42
Актуальна разработка ДОС, что может работать с приемлемой скоростью с большими дисками (более 2-3 Мб). CP/M с большими дисками сильно тормозит и резко падает размер TPA.


Часто встречаю это утверждение. Думаю, просто какая-то неудачная реализация в прошлом установила блок на повторное осмысление, надо еще раз попробовать. CP/M 2.2 нормально работает с файловыми системами любого размера в пределах ее математической модели. Конечно, для использования бОльших емкостей приходится размер кластера увеличивать с 2кб (какой он на дисководных распространенных реализациях) до максимальных 16кб. Я не замечал замедления версии дисков с большим кластером которые мы используем для HDD по сравнению с "дисководным" форматированием (BDOS оба раза одинаковый).

Максимальный размер диска для CP/M 2.2 ЕМНИП - 1 гигабайт, а максимальный размер файла - 4Mб. Конечно для 1Гб все ТПА надо отдать под буфер ALV. Но для к примеру 100Мб диска (а это весьма прилично для 8-битки, тот же UZIX имеет предел в 32Мб на одну ФС), надо всего лишь 800 байт для буфера ALV (всего на семь сотен байт больше чем для дисковода) - вполне разумные траты. Учитывая, что ФС можно отмонтировать и менять на другую (как дискетку заменить), все выглядит очень удобно.

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



тут суть в том, что у цпм из-за мелкого размера диска, много файлов туда не записать.


И файлов туда можно записать весьма много. Считать лень, но даже на один 16кб-шный кластер пишется 512 файловых дескрипторов (файлы до 128кб размером умещаются в один дескриптор), а кластеров под каталог можно отвести до 16 штук - умножьте сами. :) Но конечно когда диск большой (что достижимо). Для маленьких (и не очень) носителей очень часто употреблялись библиотеки LBR как подкаталоги (если не хватало штатных Юзеров) - это давало уплотнение и позволяло писать на небольшой диск большее количество файлов чем есть есть файловых дескрипторов. Многие пробвинутые CCP от CPM 3.х работали c LBR как с каталогами (по крайней мере на чтение).

Другое дело, что надо наверное брать продвинутые реализации CP/M - c датами файлов и т.п., такие тоже были (даже в исходниках встречал).

barsik
11.02.2017, 01:15
Интересно, откуда вы взяли, что у CP/M были организации секторов в группы (кластера?). Если я верно помню, то у CP/M в классическом виде сектор был 128 байт и только позднее каждый производитель наделал свои стандарты этой ФС, по которым сектор мог быть увеличен до 1 кб.

Совсем не понял этот абзац. И терминология тоже неясная. Кластер это терминология из MSDOS и это совсем не то, что CP/M-группы. CP/M-группа это англоязычный термин, в отечественой литературе обычно это заменяют словом CP/M-блок. Иными словами, это минимально расходуемый фрагмент диска, и его используют для того, чтобы сократить число записей в каталоге.

Под блоком понимается минимальный размер участка диска, который можно занять, т.е отметить занятым. Размер блока может быть 1, 2, 4, 8 или 16 килобайт. И так это было даже в самой первой CP/M версии 1.3. Таким образом, даже, если CP/M-файл имеет размер всего один логический сектор в 128 байт, то на диске всё-равно занимается целый блок.

Физический сектор может быть увеличен или уменьшен до любого размера. Именно это и есть свойство CP/M, что позволило ей победить. CP/M вообще наплевать, как физически устроен диск и на размер физического сектора, тем более. BDOS работает через всего 2 подпрограммы - считать 128 байт и записать 128 байт. 128 байт называют логическим сектором, чтобы говорить, что CP/M имеет обмен логическими секторами. А BDOS занимает пространство диска с кратностью в блок, т.е в минимальном случае - это 8 логических секторов (1 кб).

Исторически первым форматом дисков был формат дисковода ЭВМ MDS-800, что также применён в СМ-1800. Этот дисковод называется ЕС-5074 и имеет формат 77 треков, 26 физических секторов по 256 байт в каждом. Чем больше размер сектора, тем меньше пространства диска впустую тратится на межсекторные гапы. Поэтому у СИНКЛЕРА с секторами в 256 байт на диске всего 640 кб, в MSDOS с секторами 512 на диск влезает 720К, а у КОРВЕТА с секторами в 1024 байта размер диска 800 кб (а у MAC - 880 кб, т.к там 1 сектор на весь трек). ВГ93 не может иметь сектора большего размера, а вот РК-КНГМД может иметь 1 сектор на весь трек. За счет чего ёмкость увеличивается на 20%).


У ПРОФИ - диск DD, 160 треков, 5 секторов на трек, сектор 1024 байта.

Это обычный формат. Он у всех компьютеров с контроллером от КОРВЕТА. Гораздо сложнее найти компьютер, у которого был бы иной формат.


корень диска это список юзеров от 0 до 15

В CP/M нет корня диска. А если есть, то это не CP/M.


у Вадима была своя версия DOS изначально полностью совместимая с CP/M, но с FAT в качестве ФС.

FAT это не файловая система, хотя иногда ошибочно так говорят. FAT это область на диске.

Если есть FAT, то это файловая система MSDOS. И она "полностью совместима с CP/M" никак быть не может. Только частичная совместимость, хотя для многих программ этого хватает. Если есть FAT, то значит не строится Allocation Table и часть функций BDOS не работают. Такая ДОС по работе дисководных функций близка к MSX-DOS. В MSX-DOS 1.0 (1984), как и в MSDOS 1.0, не было подкаталогов, хотя уверен, что изначально они были задуманы, т.к без подкаталогов формат MSDOS с FAT даёт лишь небольшой выигрыш (за счёт того, что не надо строить в ОЗУ Allocation Table).

А вот введение подкаталогов, отчего каталоги нижнего уровня размещены в файлах, для винта даёт существенный выигрыш, т.к для поиска файла, не надо сканировать общий каталог размером в 200 кб. Но FAT, т.к он один для всего диска, при больших дисках имеет очень большой объём (обычно сколько мегабайтов, столько килобайтов FAT) и тем самым, или TPA для 8-ми разрядки становится маленьким или надо сканировать FAT по кусочкам, что также тормозит.

Речи о гигабайтных дисках для 8-ми разрядки - это просто сказки для дураков. Такого в природе не бывает.


CP/M софт не умеет работать с каталогами, каждый каталог для CP/M софта выставлялся как текущий, грубо говоря, юзер. Это сильно накладывало ограничения на работу с софтом, но зато было проще хранить, т.к. был винт и FAT16.

Смысла абзаца не понял. Возможно Вы пытались сказать, что, т.к CP/M работает только с юзерами, то какими-то средствами чтение/запись секторов каталога, заменялось на чтение/запись файла подкаталога, отчего CP/M работала с файлами подкаталога, как с юзером CP/M. Так и должна работать MSX-DOS 2.0.


TPA в 58 кб - это реальность

Не для базовой CP/M 2.2. Это другая ДОС на основе BDOS CP/M. Понятно, что основная часть кода ДОС в другой банке. Но больший размер TPA оплачивается быстродействием, т.к считанные данные приходится пересылать из банки в банку.


У "Спринтера" TPA в 4 метра. Если в CP/M размер COM-файла ограничен размером TPA, то у DOS на "Спринтере" нет такого ограничения, EXE-файл может быть хоть 100 мб.

Это не CP/M. ОЗУ в других банках, это не TPA, это просто какое-то ОЗУ. Если так считать, то в ОРИОНЕ с 256К, TPA в CP/M - тоже большое, но это же не так. TPA это только то, что в адресном пространстве DOS. Незачем грузить COM-файл в другие банки. Для больших файлов в CP/M грузят оверлеи или организуют "сокеты" для динамической подкачки кусков кода. И если есть RAM-диск и оверлеи подгружаются оттуда, то это ничуть не тормозит. Если бы был компилятор ЯВУ, что поддерживает банки ОЗУ, тогда это имело бы смысл, т.к для кода созданного ЯВУ как раз не хватает объёма TPA. Без этого от излишнего ОЗУ польза только для организации эл.диска.


MSX-DOS. Во-первых, есть исходники. Во-вторых, есть куча документации по этой ДОС и есть весьма не маленькое комьюнити на msx.org.

Естественно, когда начинаешь искать что-то по MSX, то находишь кучу сайтов про MSX-компьютер. Но где исходники? Чтобы писать, что где-то есть - дайте ссылку на скачивание исходника.


Сама MSX-DOS явно писалась под впечатлением от MSDOS и она сильно на неё похожа

Естественно. Её писал тот же Тим Паттерсон, что написал MSDOS. Он написал её по заказу Microsoft за 3 месяца 1984-го за 200.000 USD. Но он написал только MSX-DOS 1.0, где нет подкаталогов. Подкаталоги ввела уже сама фирма Microsoft 4 года спустя (видимо тогда на 8-ми разрядках появились винты и стали актуальны подкаталоги).

Все функции MSX-DOS для КР580 реализовал в 1997 С.Коровкин. Он сначала хотел написать полноценную ДОС с форматом MSDOS. Но в итоге сделал только программу обмена файлами между MSDOS и ОЗУ (под ОЗУ имею ввиду ORDOS, т.к по сути это тоже самое). Но он говорил мне, что он реализовал все функции нужные для MSDOS. Так что желающие могут дизассемблировать и получить нечто подобное MSX-DOS.


Что за маленькие каталоги? Почему они маленькие? Скажем 256 или 512 файлов на каталог, это много или мало? Или они маленькие по объёму в байтах?

Я писал о маленьких каталогах безотносительно к их размеру, а чтобы сказать что есть не один общий каталог винта в 200 кб, а он разделен на много частей, со средним размером в 4 кб и числом экстентов до 256 (или даже 128). Поэтому поиск в подкаталоге занимает не 10 секунд, а 1 секунду.

Так сделано в моей TURBO-DOS. Там на части разбивается не только общий каталог, но и само пространство диска. При организации подкаталога, для него сразу выделяется сплошной кусок диска. В начале этого куска есть свой каталог. Для корневого каталога (корневого диска) все блоки входящие в подкаталог заняты. Но программе, находясь в подкаталоге не приходится работать с огромным каталогом. Она работает с маленьким каталогом. А с учётом того, что работа идёт не логическими секторами, а физическими и нет ненужных копирований, то скорость с винтом получается в 20 раз больше, чем в CP/M. Однако, если выделенное при создании подкаталога место закончилось, то для увеличения размера области для файлов в подкаталоге нужна специальная программа (освобождающая блоки за концом области выделенной подкаталогу). Но даже такая структура диска намного лучше, чем жёсткое разбиение винта на кучу мелких партиций, т.к такие подкаталоги можно оперативно создавать и удалять. В этой ДОС для больших файлов в каталоге не создаётся моря экстентов, как в CP/M, причём при сохранениии дефрагментации файлов, а размер блока - разный для разных файлов. Не знаю, поняли ли идею, но не важно.

При ускорении CP/M надо решить 3 задачи (но почти всё это полностью или частично лишает совместимости с CP/M)

- замена работы логическими секторами на физические
- устранение построения Alloccation Table (хранение её в готовом виде)
- разбиение общего гигантского каталога на много маленьких подкаталогов

Вариант использования структуры диска MSDOS я не рассматривал, т.к мне интересно было сделать что-то своё. К тому же я не уверен, что из-за низкой скорости CPU и малости ОЗУ, эта идеология лучшая для 8-ми разрядки. Совместимость с CP/M меня не волновала, т.к я давно убедился что от ЯВУ пользы нет.


была неудачная реализация в прошлом... надо еще раз попробовать. Желательно попробовать, но я сомневаюсь, что можно что-то ускорить без ПДП.

Посмотрел свои старые листинги CP/M-BIOS винчестера и хотя ничего уже не понял, но всё-же увидел, что приняты меры ускорения (линейные участки для чтения-записи в одной итерации цикла сразу 16 байтов). Цикл чтения из флоповода существенно проще и короче. Поэтому так и должно было получиться, что скорость обмена вдвое ниже, чем с контроллером НГМД на ВГ93.

Во вложении привожу include-файл c подпрограммами для винта (петли чтения-записи это метки: 're_loo' и 'wrs_loo'). В 1990 я видел американский CP/M компьютер с винчестером и он тоже был тормозной.


Максимальный размер диска для CP/M, если мне не изменяет память, - 1 гигабайт, а максимальный размер файла - 4 Mб.

Максимальный размер диска определяется максимальным размером блока (16 кб) умноженным на 65536 (номер блока двухбайтовый). Т.о это 1 Гб, т.е тут память не подвела. Максимальный размер файла определяется максимальным числом байтов описываемый одним экстентом умноженным на максимально допустимое число экстентов. В одном экстенте описывается 8 блоков по 16 кб. Указатель номера экстента (RC) может быть до 128. Итого максимальный размер файла: 8 * 16 кб * 128 = 16 мб.


кластеров под каталог можно отвести до 16 штук - умножьте сами

16 блоков по 16 кб каждый, дают размер каталога в 256 кб. Такой каталог при реальных скоростях CPU будет сканироваться до минуты. При построении Allocation Table сканируется весь каталог в 256 кбайт, что займёт 1 минуту. То же самое произойдёт, если дать DIR. При запуске файлов, если файлов мало, то поиск будет быстрый. Но если ошибиться и задать имя файла, которого нет, то тоже будет сканироваться весь каталог целиком, и система будет читать каталог целую минуту. Будет ли такая система приемлемой?

Раз у Вас есть CP/M для винта и есть мнение, что она сохранится быстрой и при больших дисках, давайте узнаем, сколько будет читаться каталог в 256 кб. Для этого скопируйте файл размером в 256 кб и засеките время копирования. Результат не надо делить пополам, т.к CPU тратит время не только на само считывание, но и на просмотр экстентов. А при копировании просматривается весь каталог целевого диска в поиске есть ли файл с таким же именем. А затем строится Allocation Table целевого диска. В итоге копирование одного файла займёт ~3 минуты.

Sayman
11.02.2017, 09:19
barsik, давайте называть вещи своими именами, без всякой тавтологии.

Кластер это терминология из MSDOS
кластер = объединение чего-либо в одну группу. В англоязычной технической терминологии эта группа названа была кластером. CP/M не русское изобретение. Если заглянуть в мануал (я сейчас расковырял старые архивы с мануалом на фс cp/m). понятие кластера там есть. А все остальные названия это уже наши извратили.

Гораздо сложнее найти компьютер, у которого был бы иной формат.
ничего сложного. У эппла у МС и у всяких комодоров свои размеры секторов были. вариаций целое множество. даже ждрайвер где-то у меня валялся под мс дос подключающий реальные цпм дискеты. в качестве параметров надо было указывать и размер сектора. там и шаблоны были. штук 20 наверное разных.

В CP/M нет корня диска. А если есть, то это не CP/
серьёзно? т.е. прочитав у дискеты 0й сектор я корень диска не найду? и то, что "юзера" это не физическое. а логическое представление тоже фигня? вот открыл я сейчас 0 сектор дискеты. первый же байт у файла указывает на принадлезность к юзеру. при этом все файлы от всех юзеров лежат к одном физическом каталоге. а разделяются на юзера этим первым байтом (смещение 0 грубо говоря).


Поле 1 содержит номер USER области к которой относится данный файл или 0E5h, если данный экстент не используется.

поэтому корень он и в Африке корень. корень, он же рут. есть и на мсдос диске и на ufs и на многих других.

FAT это не файловая система, хотя иногда ошибочно так говорят. FAT это область на диске.
FAT = File Allcation Table. Но МС сами назвали свои ФС как fat12, fat16 и fat32 соответственно по 12 бит, 16 бит и 32 бита этой самой таблицы. не надо придираться к словам.

Если есть FAT, то это файловая система MSDOS. И она "полностью совместима с CP/M" никак быть не может.
где я писал про совместимость между ФС? я написал про совместимость на программном уровне. или вы наивно полагаете, что для того же m80.com обязателен цпм диск для работы? я вас уверяю, это не так. проблемы возникают только в тех случаях, когда программа начинает напрямую залезать в каталог диска и пытаться самостоятельно разбирать структуру каталога.

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

есть не один общий каталог винта в 200 кб
ну вот если откунить тут всякие нтфс, фат32 и прочие сильно крутые фс, а посмотреть, скажем, на фат16, то при размере раздела в 2гига, размер рута в 512 файлов = 16384 байта ровно или 32 сектора. про какие 200кб для рута идёт речь? осоебнно если говорить про дискеты, там размер каталога ещё меньше.

сколько будет читаться каталог в 256 кб
для того чтобы это узнать, в него нужно запилить 8192 файла. я даже если винду десятую всю перетащу в 1 каталог, столько файлов не наберу (наверное)))))

кстати, можно ещё вспомнить про совместимость мсдос со старым софтом для цпм-86. но это фигня и к нам не имеет никакого отношения.

Vadim
11.02.2017, 09:54
Физический сектор может быть увеличен или уменьшен до любого размера. Именно это и есть свойство CP/M, что позволило ей победить.
не до любого, а кратного числу в степени 2. 256, 512, 1024 итак далее

Вы писали о MSXDOS v1, которая имеет один каталог в системе FAT, и работает только с дискетами. Т.е. всё остальное чушь и бред. Каких "маленьких каталогов"? Вы перепили что ли? Перестаньте постить бред.

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


Максимальный размер диска для CP/M 2.2 ЕМНИП - 1 гигабайт, а максимальный размер файла - 4Mб
Откуда эти данные? Из памяти мозга?, что отложилось? Это неверные сведения, советую освежить знания и не вводить в заблуждения других людей.

Error404
11.02.2017, 11:22
Откуда эти данные? Из памяти мозга?, что отложилось? Это неверные сведения, советую освежить знания и не вводить в заблуждения других людей.

Эти данные из исходников CPM 2.2, освежить их может любой из вложения этого поста (http://zx-pk.ru/threads/24285-orion-pro-softvernye-dela.html?p=880766&viewfull=1#post880766), рекомендую заблуждающимся, я это делал не далее как полгода тому назад при помощи b2m, который нашел ошибку в BDOS 2.2 из-за которой файлы были ограничены в размере до 512кб при теоретическом размере в 4Мб (или 8Мб? вот тут я уже забыл) по ссылке до поста и после поста идут расчеты b2m. И после того как я исправил (http://zx-pk.ru/threads/24285-orion-pro-softvernye-dela.html?p=880893&viewfull=1#post880893) процедуру вычисления кластера (=группы) с 16 бит до 24 бит (заменив 16 битное сложение Килдалла 24 битным умножением) максимальный размер файла прекрасно стал обрабатываться, т.к. это не дефект модели, в косяк реализации обсчета в коде.

Это что касается файла. Размер же файловой системы всегда корректно работал, и до вышеописанных правок, с момента подключения HDD, я систем менее 32мб и не использовал, 64Мб также использовал и не вижу причин почему не будут работать бОльшие (в коде ограничений нет, я всего лишь экономлю место в TPA для буфера ALV). Миф про 8Мб я узнал уже позже - тут на форуме (кстати, может путаница из-за заявленного ограничения в размере файла? как раз такого же). Ограничение в 8Mb ЕМНИП было только для CP/M 1.х, уже в 2.0 (который сейчас и не найти, у всех 2.2 и выше) структуры были переписаны для поддержки 1Гб.

Кстати, учитывая что Килдалл писал BDOS CP/M на PL/M где есть только 2 типа int8 и int16, можно понять откуда растут ноги у этого бага с размером файла (или фичи - как посмотреть)

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



Раз у Вас есть CP/M для винта и есть мнение, что она сохранится быстрой и при больших дисках, давайте узнаем, сколько будет читаться каталог в 256 кб. Для этого скопируйте файл размером в 256 кб и засеките время копирования. Результат не надо делить пополам, т.к CPU тратит время не только на само считывание, но и на просмотр экстентов. А при копировании просматривается весь каталог целевого диска в поиске есть ли файл с таким же именем. А затем строится Allocation Table целевого диска. В итоге копирование одного файла займёт ~3 минуты.

Договорились. Но не очень скоро (я пока попаять собрался немного). Рано или поздно я все равно собирался делать что-то подобное для тестирования различных схем SD-карт. Правда, там я бы тестировал "сырое" (посекторное) чтение, ну добавлю еще и через BDOS. Но опять же есть ньюансы - в моей реализации CPM ядро ОС сидит в одной странице ОЗУ, а TPA - в другой (ради размера TPA в 58к, да код самой ОС очень вырос по размеру доработками), и соответственно любое чтение сопровождается межстраничной пересылкой, что, вангую, даст существенную погрешность.

Пока же могу только впечатлениями поделиться времен 2007 года (когда я первую СompactFlash на реале в схеме IDE 8255 тестировал - изначально не самой быстрой реализацией IDE) - на чтение с файловой системы в 32Мб (и с кластер=блок=8кб) работало вдвое быстрее дисковода (800кб, кластер=блок=2кб). Дальше уже только в эмуляторе. BIOS работы с дисководом цельнотянутый с Altair-DOS v 1.6 А.Балдина с буфером сектора в 2кб (читает 2сектора по 1024 за раз), это была самая быстрая реализация что нам попадалась в прошлом веке (а к нему наверное попала от ACPM? и там и там сходство в обработке HD-дискет). Поэтому и преемственность в названии, и вообще некоторая идеологическая преемственность ("шлюзы", как и подкаталоги и многое другое, я правда убрал или заменил другим функционалом, слишком не абстрактно и платформеннозависимо). BIOS работы с IDE - мой самописный с буфером сектора в 512байт (читает 1 сектор с IDE за раз), тоже там особо не заоптимизируешь. Так что если субъективно, я не отношу разность скорости к влиянию BDOS/BIOS, а скорее зависит от скорости носителя.

Sayman
11.02.2017, 11:40
оторый нашел ошибку в BDOS 2.2 из-за которой файлы были ограничены в размере до 512кб
ойли? ошибка ли это или такова была задумка авторов?

HardWareMan
11.02.2017, 11:44
Sayman,
http://www.igram.net/modules/Upload/News2007_2/billi.jpg

Error404
11.02.2017, 11:51
ойли? ошибка ли это или такова была задумка авторов?

Если бы это был мой код, то такого рода у меня именно ошибки по недосмотру, а не задумки. Также непохоже на задумку выглядит разервирование в описателе файла места под определенный размер, а в коде нечто странное (*****коде кстати, не математика там а "а ну ка я вот так выкручусь чтобы не умножать нормально" у нас там по этому поводу с b2m даже дебаты были в треде по ссылке выше - в смысле *****код или нет, а не про ошибку: на счет ошибки оба согласны)

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

И опять же, это граничение файла, а не максимального размера файловой системы. И опять же я говорю только за v2.2 и выше. Также я находил на зарубежном форуме тред где люди спорят с примерами с реалов: один пишет у меня файл режется по границе 512кб, а второй "у меня нормально, никогда такого не видел". У обоих CPM 2.x

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

Т.е. видимо этот баг ранее находили и фиксили, мы с b2m прошли уже по костям предшественников. :)

Vadim
11.02.2017, 11:53
Эти данные из исходников CPM 2.2, освежить их может любой из вложения этого поста, рекомендую заблуждающимся, я это делал не далее как полгода тому назад при помощи b2m, который нашел ошибку в BDOS 2.2 из-за которой файлы были ограничены в размере до 512кб при теоретическом размере в 4Мб (или 8Мб? вот тут я уже забыл)

Советую почитать доки по ЦПМ, и там англ. по белому написано, как работают функции чтения. Последовательного и произвольного. Из них следует, что рзамер файла ограничивается 8Мб. Размер устройства конечно нет, там ограничения иные. Сейчас я не вспомню, но если посмотреть описание BIOS для CP/M - и просто помножить значения то всё прояснится.

Error404
11.02.2017, 11:56
Советую почитать доки по ЦПМ, и там англ. по белому написано, как работают функции чтения. Последовательного и произвольного. Из них следует, что рзамер файла ограничивается 8Мб. Размер устройства конечно нет, там ограничения иные. Сейчас я не вспомню, но если посмотреть описание BIOS для CP/M - и просто помножить значения то всё прояснится.

Советую меньше советовать, и вообще быть добрее.

Sayman
11.02.2017, 12:02
Error404, а теперь посмотри на это с другой стороны. ты говоришь - фирменная ошибка, я её пофиксил. ОК. ты пилишь файло по новым правилам (после исправления) и волшебным образом это файло не читается на других машинах с другими вариантами bdos`а, включая фирменную реализацию.
поэтому это ошибкой назвать сложно.
про ограничение в 512кб на профике точно такого не было, но и про гигабайты там речи тоже нет. а ты говоришь про гигабайты.

Error404
11.02.2017, 12:25
Error404, а теперь посмотри на это с другой стороны. ты говоришь - фирменная ошибка, я её пофиксил. ОК. ты пилишь файло по новым правилам (после исправления) и волшебным образом это файло не читается на других машинах с другими вариантами bdos`а, включая фирменную реализацию.
поэтому это ошибкой назвать сложно.
про ограничение в 512кб на профике точно такого не было, но и про гигабайты там речи тоже нет. а ты говоришь про гигабайты.

Если на других машинах этот баг сохранен, то на них не могло существовать файлов размером более 512кб (BDOS с багом их просто не запишет). Если BDOS с багом будет читать большой файл записанный в соответствии с правилом заполнения структуры файла, то она после границы в 512кб начнет читать мусор. Все что в пределах 512кб прекрасно будет и читаться и писаться, т.к. структура хранения на диске никак не правилась (в BDOS с багом она просто не до конца использовалась). Кстати, многие отечественные клоны CP/M (например Микродос от Вектора) тоже живут с исправленным багом (отуда и обнаружили: WAV-файлы большие нормально жили на Векторе, но не писались на Орионе), а прижился он на Орионе (возможно не только).

freddy
11.02.2017, 16:14
Это... я тоже хочу вставить пять копеек. Есть книжечка The soul of CP/M, Митчел Вэйт кажись написал. Так Вот тама усе разжевано, особенно как работают дисковые операции. Еще есть доки от Digital Research, книжечка по проще на русском того же Митчела Уэйта "Операционная система CP/M".
Это я все к тому, что все давно изобретено. Ни с чем не совместимый велосипед не нужен, софт под него никто не напишет.
К стати с винта быстрее работает, чем с флоповода :)

b2m
11.02.2017, 17:44
Из них следует, что рзамер файла ограничивается 8Мб. Размер устройства конечно нет, там ограничения иные.
Если говорить о CP/M 2.2, то ограничение только одно: API между BDOS и BIOS предполагает фиксированный размер сектора 128 байт и двухбайтовый номер сектора, т.е. 65536 секторов. Т.е. максимальный размер логического диска 65536 * 128байт = 8Мб, логических дисков может быть 16, а на одном устройстве или нет - решать BIOSу.

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


Если на других машинах этот баг сохранен, то на них не могло существовать файлов размером более 512кб
Дык вроде нет там никакого бага. Баг был в твоей проге, которая файлы в образ записывала и номер экстента не так, как надо, сохраняла.

freddy
11.02.2017, 18:08
Если говорить о CP/M 2.2, то ограничение только одно: API между BDOS и BIOS предполагает фиксированный размер сектора 128 байт и двухбайтовый номер сектора, т.е. 65536 секторов. Т.е. максимальный размер логического диска 65536 * 128байт = 8Мб, логических дисков может быть 16, а на одном устройстве или нет - решать BIOSу.
Профессионально сказано.
Так и делаю. Физическая адресация будет CHS, чтоб старые винты работали. Использовать буду 16 дисков по 8Мб = 128Мб. В первом секторе будет лежать загрузчик CP/M, в мониторе - загрузчик первого сектора.

Sayman
11.02.2017, 19:26
b2m, о чём и речь. от куда там могут взяться баги, про которые Ерррор говорит и про какие гигабайты тоже не понятно. это если учесть тот факт, что "640кб хватит всем" и это было сказано намного после того, когда была выпущена мс-дос с поддержкой фат12 и фат16.

barsik
11.02.2017, 19:27
Физический сектор может быть увеличен или уменьшен до любого размера. Именно это и есть свойство CP/M, что позволило ей победить не до любого, а кратного числу в степени 2. 256, 512, 1024 и, так далее.

Ошибаетесь. Я могу сделать CP/M с секторами в 2 байта, так и любое, не слишком большое число (т.к это определяет дисков.буфер). Для РК-КНГМД, чтобы выжать максимум, я имел один сектор на трек. И размер сектора имел совершенно произвольный (что зависело от кварца в РК-КНГМД). Для упрощения п/п-мм READ/WRITE, удобно делать размер сектора кратным 128-ми байтам. Кратно 128, но не кратно в степени 2, как Вы утверждаете.

А вот БИС ВГ93 действительно работает только с физическими секторами "256, 512, 1024 и, так далее", как Вы пишете. Правда без "так далее". Максимальный размер сектора - 1024. Но CP/M здесь ни при чём.

Кстати, для ускорения работы самой CP/M почему-то стремятся сделать дисковый буфер равным размеру CP/M-блока. Так сделано в CP/M КОРВЕТА. Там в буфер читаются сразу 2 сектора, отчего размер буфера 2 кб, что невыгодно, т.к опускает BDOS на 1 кб. Достаточно иметь буфер размером в физический сектор. Это не только не тормозит, но даже ускоряет чтение файлов размером до 1 кб. Я это проверил на практике, когда делал CP/M ОРИОНА для ВГ93 для банки 0, где важно максимально увеличить TPA.

Кстати, вспомнил, что подпрограммы для ВГ93 читают (пишут) из неё стеком, а в моём BIOS для винта стек не использован, т.к это ускорило бы незначительно.


Вы писали о MSXDOS v1, которая имеет один каталог в системе FAT, и работает только с дискетами. Т.е всё остальное чушь и бред. Каких "маленьких каталогов"? Вы перепили что ли? Перестаньте постить бред.

Я вообще не пью, никогда. Это Вы, кажется, сегодня психически нездоровы. Что плохой день? Но разве становится легче, когда кому-то нахамишь? Не берите трёп в форуме так близко к сердцу. Тут все знатоки, каждый в чём то лучше. Зачем же обижать людей низачто.

Я писал о CP/M. Здесь обсуждают ДОС, что подойдёт для КР580. MSX-DOS на Z80 упомянули лишь оттого, что она быстрее, чем CP/M при больших дисках, благодаря тем самым "маленьким каталогам" в файлах, которые Вас так всбесили. MSX-DOS я не дизассемблировал и знаю про неё только то, что прочитал в книжках 25 лет назад.


Всё остальное чушь и бред

Что всё остальное? И где доказательства этого? Вы не смогли опровергнуть ни одной моей фразы (кроме цифры макс.размера файла). Так что это у Вас бред, причем больной.


Советую почитать документацию по CP/M, и там английским по белому написано, как работает функция произвольного чтения. Откуда следует, что размер файла ограничен размером в 8 Мб.

Имею перевод этого из "Всесоюзного центра переводов. 1982", мне удобнее читать русским по белому, чем искать первоисточник на вражеском языке.

В документации к CP/M описаны поля FCB называемые R0,R1,R2. Про них сказано что это необязательный (?) номер записи при прямом доступе в диапазоне 0...65535, а R2 назван байтом переполнения. Эти байты, т.е номер 128-ми байтной записи в файле надо ставить вручную при прямом доступе.

В описании функции 33 (прямое чтение) указано, что логич.сектор внутри файла адресуется с помощью 24-байтной величины из R0,R1,R2 (где R0 младший байт величины). Но ниже сказано:


CP/M 2.0 не ссылается на байт R2, за исключением функции 35 (вычисление размера файла). Однако, байт R2 должен быть нулевым, поскольку ненулевое значение указывает на переполнение файла (адресация после конца файла).

Из этого следует, что максимальный номер лог.записи для прямого доступа - 65535. А если умножить 128 на 65536, то и получается ровно 8 мб. Из написанного следует, что если файл имеет объём более 8 мб, то к нему нельзя адресоваться с помощью прямого чтения/записи.

Не ясно можно-ли создать файл больше 8 мб используя последовательную запись.

Таким образом относительно размера файла Vadim прав, а я и error404 заблуждались. Хотя без разницы, ограничение 4 или 8 мб. Не встречал в CP/M файлов с размером более 512 кб.


давайте называть вещи своими именами, без всякой тавтологии.

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


Кластер - объединение чего-либо в одну группу. В англоязычной технической терминологии эта группа названа была кластером. CP/M не русское изобретение. Если заглянуть в мануал (я сейчас расковырял архивы с мануалом на CP/M). Понятие кластера там есть. А все остальные названия это уже наши извратили.

Насчёт слова кластер в фирменной документации CP/M - очень сомневаюсь. Дайте ссылку для проверки. За 80-е и начало 90-х я собрал много документации по CP/M (что тогда было совсем не так просто, как сейчас) и слово кластер не встречал.

Разница между кластером и блоком CP/M в том, что кластер это любое объединение ФИЗИЧЕСКИХ секторов по 512 байт (1,2,3..20), а CP/M-блок - объединение ЛОГИЧЕСКИХ секторов и может быть только 8, 16, 32, 64 или 128 логических секторов. Поэтому называть CP/M-блоки кластерами неправильно.



Гораздо сложнее найти компьютер, у которого был бы иной формат
Ничего сложного. У APPLE, у MSX, и у Сommodore-128 свои размеры секторов. Вариаций целое множество.

Не передёргивайте. Речь шла о контроллере на ВГ93, в 1986 впервые применённом в КОРВЕТЕ, а затем и во всех отечественных 8-ми разрядках. А у перечисленных Вами вражеских ЭВМ совсем другой (и гораздо более убогий) контроллер.


Даже драйвер где-то у меня валялся под MSDOS подключающий реальные CP/M дискеты. В качестве параметров надо было указывать и размер сектора. Там и шаблоны были. Штук 20 наверное разных.

Речь об UniForm-TA из 1986 года?


Про ограничение размера файла в 512 кб. На ПРОФИ точно такого не было, но и про гигабайты там речи тоже нет

Мне кажется, что получалось архивировать файлы с размером более 512К, но я не уверен. Надо проверить.



В CP/M нет корня диска. А если есть, то это не CP/M

Cерьёзно? Т.е, прочитав у дискеты 0-й сектор, я корень диска не найду? и то, что "юзеры" это не физическое, а логическое представление тоже фигня?

Прочитав у дискеты 0-й сектор, корень диска Вы не найдёте. На дискете грамотной CP/M Вы считаете BOOT-сектор, где находится БПД, который считывается и настраивает CP/M на конкретный дисковый формат. А также вторичный загрузчик, что раскручивает загрузку ДОС, также грамотно, как это в MSDOS. Если этого нет, то эта версия CP/M - неграмотная. На нормальной CP/M в начале диска находятся системные треки.

У ПРОФИ, в отличие от КОРВЕТА, упрощённый BIOS. Он не читает БПД, оттого работает только в одном формате дискет (ни DD/SD, ни DS/SS, ни 35/40/41/80/82 физ.треков). А грамотный CPM-BIOS считывает блок параметров диска, отчего поддерживает вообще любые форматы дискет. Также сделано и в MSDOS и MSX-DOS. Кроме того, во всех книгах написано, что иметь каталог на 0-вой дорожке невыгодно, т.к она крайняя, отчего быстрее дохнет.

Что в ПРОФИ сам код CP/M грузится из файла, как в MSDOS?

Корень означает корневой каталог, что означает, что в него входят подкаталоги. А в CP/M нет подкаталогов, каталог только один, значит и нет корневого каталога. Предъявите ДОК по CP/M, где каталог CP/M называется корневым. Такого нет, и соответственно Ваше утверждение, "что прочитав 0-й сектор Вы найдёте корень диска" бессмысленно.


Первый же байт у файла указывает на принадлежность к юзеру. При этом все файлы от всех юзеров лежат к одном физическом каталоге

Понятно, что Вы забыли слово экстент - это одна каталоговая запись в 32 байта. Первый байт, не файла, а экстента указывает юзер. Экстенты (не файлы) всех файлов из всех юзеров хранятся в одном каталоге.

Но это все знают, и это никак не превращает каталог CP/M в корневой.


корень он и в Африке корень. Корень, он же ROOT.

Покажите слово ROOT хоть в одной документации по CP/M. Такого термина там нет. Думаю, что его нет и в документации про MSDOS 1.0 и MSX-DOS 1.0 (в которых совсем не было подкаталогов). Переносить терминологию MSDOS 2.0 нет никаких оснований и смысла. Зачем путать людей и вводить ненужные и никак неиспользуемые понятия.


Я написал про совместимость на программном уровне. Или вы наивно полагаете, что для того же M80.COM обязателен CP/M диск для работы? Я вас уверяю, это не так.

CP/M-эмулятором Z80MU (Joan Riff, 1986) и 22NICE я начал пользоваться в 1988 на компьютере НЕЙРОН-И9-66 и использовал M80 на MSDOS дисках. C 1992 (кода собрал личный XT-ТУРБО) использую M80 для программирования КР580/Z80, т.к ничего лучше не нашёл (TASM хуже).


проблемы возникают только в тех случаях, когда программа начинает напрямую лезть в каталог диска и пытаться самостоятельно разбирать структуру каталога

Проблемы возникают в основном для грамотных программ, которые перед записью файла пытаются проверить наличие на целевом диске места для его записи. Для чего они сканируют Allocation Table, что отображает занятость диска. А так как в неполноценных CPM-эмуляторах и в MSX-DOS этой Table нет, то возникают проблемы.


В описанном мной случае, ДОС просто в разы быстрее, чем классическая CP/M.

О чём и речь. А я о чём тут толкую? Пытаясь сообщить, что базовая CP/M для больших дисков имеет слишком большой каталог, отчего его, неизбежное частое сканирование, фатально тормозит. И опять мы приходим к, почему-то всех раздражающих, упоминанию о "маленьких подкаталогах", хранимых в файлах и упразднению построения Allocation Table. Т.е приходим к структуре диска используемой в MSX-DOS 2.0.


Про какие 200 кб для ROOT идёт речь? Особенно если говорить про дискеты, там размер каталога ещё меньше

Речь о базовой CP/M с номером 2.2, а не о Вашей быстрой ДОС с кучей "маленьких подкаталогов". И речь не про дискеты, а про винчестер. Для дискет и базовая CP/M годится (хотя РК-ДОС и любая ДОС с обменом физическими секторами в 10 раз быстрее).


Для того чтобы узнать сколько читается каталог 256К, в него нужно запилить 8192 файла

А зачем файлы? По DIR сканируется весь каталог, независимо от того, есть на диске файлы или нет. В своих ДОС, чтобы избежать ненужного сканирования пустых секторов каталога, я записываю после последнего файла стоп-байт FF, что означает конец каталога. Поэтому DIR и поиск даже на большом диске при малом числе файлов быстрый.


BIOS работы с дисководом от Altair-DOS 1.6 А.Балдина с буфером сектора в 2K, это была самая быстрая реализация что попадалась в прошлом веке (а к нему, наверное, попала от ACPM? И там и там сходство в обработке HD-дискет). Поэтому и преемственность в названии, и вообще идеологическая преемственность.

Хорошо, что Вы подхватили и развили Altair-DOS. У меня исходники погибли в конце 1995. Остались только листинги BDOS и CCP на бумаге. А BIOS там почти тот же самый, что в ACP/M. Буфер 2К это наследие КОРВЕТА, в котором это из вражеского прототипа. Я тоже думал, что буфер 2К ускоряет, но нет. 1К был бы выгоднее, поднялся бы BDOS. Как-раз на других компах были CP/M с BDOS на D000, а не CC00, что из-за двойного буфера и 4-х приводов (2 достаточно).

Удивлён, что Вы считаете, что тот вариант Altair-DOS быстрый. Эта ДОС копирует вдвое медленнее, чем ACP/M, отчего я её сразу же "задвинул" в начале 1995, когда А.Балдин купил 386DX40, отчего выкинул ОРИОН. После чего доработкой ДОС никто не занимался. Пошла ДОС плохо, потому что устоялся стандарт размещения ОС в банке 1.

Т.к на сайте нет исходника BDOS с комментариями на русском, то привожу свой вариант документированного BDOS. Это оригинал КОРВЕТА "разобранный вручную" в 1990 после дизассемблера. Думаю, что здесь комментарии лучше, чем в англоязычном исходнике (который как раз получен на основе исходника на PL/M, что в 100 раз проще).

С 1994 я использовал чуть исправленный BDOS. Исправлена функция RESET. Эта функция вызывается в НОРТОН-ах при смене диска. В BIOS КОРВЕТА настройка на формат диска выполняется только по WARM BOOT (считывается БПД из BOOT-сектора). Поэтому менять диск на диск другого формата можно только в CCP. Заменил и нажал Control-C. От этого нельзя заменить диск в оболочке, надо обязательно выходить в CCP.

Чтобы это исправить достаточно в функцию RESET ввести одну команду CALL DSKNEW, а в BIOS добавить вход DSKNEW = BIOS+33H (сразу после последнего стандартного входа), который просто делает JMP NASTR на уже имеющуюся подпрограмму настройки на формат диска. Это вставка одной команды в BDOS и одной команды в BIOS. Доработка доступная ребенку. Чтобы не особо менять BDOS, чтобы адреса меток не менялись, в BDOS надо освободить 3 байта. В конце функции DISKRES стоит команда JMP DSELCT. Чтобы освободить 3 байта достаточно перенести подпрограмму DSELCT в конец функции DISKRES (удалив строку JMP DSELCT). Посмотрите в листинге.

hobot
11.02.2017, 20:03
Intel 8080
откуда такой интерес снова и снова к УГ?
Зачем вам для 8бит недокомпов???

ФС - FAT12/16 с полноценной поддержкой подкаталогов.

Рядом помирают и просят ухи камушки с нормальным ассемблером (Зеленоградские процессоры),
вот никто что то не берётся на них корманное или своё разрабатывать, отчего бы это? Я никого
не хочу задеть или троллить, реально хочу понять в чём прелесть разработки на таком УГ как i8080,
вместо pdplike Ангстремовских процессоров? Буду рад любому ответу,
Оскорбления игнорирую, мой тон исключительно доброжелателен (поскольку хочется адекватной беседы на эту
интереснейшую тему).

Shiny
11.02.2017, 21:12
реально хочу понять в чём прелесть разработки на таком УГ как i8080
реально хочется услышать - в чем же он УГ?

hobot
11.02.2017, 21:36
реально хочется услышать - в чем же он УГ?
Выражаясь строго не научно - Прежде всего в общей предельно низкой возможности учитываю опыт инженерного его использования в уже сложившихся конфигурациях реально существующего железа.
А в чём прелесть? Разве там удобный ассемблер или что то из внушающих восхищение промышленных стандартов
поджидает разработчика во время работы над такими проектами?
Чем он интересней PDPLike камушков вот что пнять бы ? Или это за гранью где-то : хочу и буду мучить барахло )
Ведь не секрет, что тот же Z-80 и спектрумы в целом (в отличии от PDPlike машинок), были добровольно сданы,
проданы, на тарелочке с нормальным ценником в СССР (причём в огромных количествах) - что реально приводит к однозначному выводу - этот хлам уже тогда никому (ТАМ) был не нужен, так откуда такая любовь сегодня ? (И как авторы могут брат такие темы"смайл" )
Все подробности по ангстремовским камушкам - можно и есть у кого уточнить на этом форуме - и они то как раз я
думаю интереснее прежде всего тем, что являются уникальными разработками только отчасти схожими и совместимыми
с процессорами PDP11/nn . В сторону политику и слишком глубокую научную часть вопроса (оставим это профи программистам), вы мне можете простым языком обосновать - Warum i8080 >>> 1801ВМn ??? Я вот такой пытаюсь вопрос сформулировать ?

Mick
11.02.2017, 21:42
Все подробности по ангстремовским камушкам - можно и есть у кого уточнить на этом форуме - и они то как раз я
думаю интереснее прежде всего тем, что являются уникальными разработками только отчасти схожими и совместимыми
с процессорами PDP11/nn . В сторону политику и слишком глубокую научную часть вопроса (оставим это профи программистам), вы мне можете простым языком обосновать - Warum i8080 >>> 1801ВМn ??? Я вот такой пытаюсь вопрос сформулировать ?

Вот что происходит с людьми, когда на Z80 делают Эвы, а на ангстремовском камушке 1801ВМn такого никто не делает - обидно однако ;)
Блин, народ ну сделайте ему Эву на 1801ВМn :)

blackmirror
11.02.2017, 21:57
hobot, у вас случайно нету программки для PDP11 вычисляющей Пи по формуле Мачина? и сколько времени ей требуется на 1000 знаков?

hobot
11.02.2017, 22:41
Эвы
Что есть ЭВА? )

Вот что происходит с людьми
http://beta.fortune.com/fortune500

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


у вас случайно нету программки для PDP11
случайно нету, я не программист и мне сложно на ваш вопрос ответить.
Однако и на мой вопрос пока только эмоции ) Вместо внятного перечня каких-либо конкретных
удобств\неудобств потребств\непотребств по разработке и главное критерий выбора в пользу не к ночи упомянутого )))

Вам что мало было ИСКР? Ещё охота ) Ну-ну )

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

вот честно написали бы - простота в доб. периферии, простота в разработке выраженная в чём то (в попугаях).
просто ностальгия. а так кусать Хобота за заведомо слабые места - имхо не есть гуд, но я по прежнему призываю
просто нормально пообщаться на тему выбора ядра разработки (сердца, то есть ЦП). Зачем вам i8080 ?

Sayman
12.02.2017, 07:00
кластер это любое объединение ФИЗИЧЕСКИХ секторов по 512 байт (1,2,3..20)
Вообще говоря от 2 до 128. Во всяком случае, если вспомнить про fat16, максимальное значение кластера 64кб.
а вообще, я вас не понимаю. расскажите, что в вашем понимании логические и физические сектора?

А у перечисленных Вами вражеских ЭВМ совсем другой (и гораздо более убогий) контроллер.
Серьёзно? Пользователи MSX и Apple сейчас с вами очень сильно не согласны)))

Речь об UniForm-TA из 1986 года?
Не помню. Может быть. Пошарившись по архивам нашёл ещё один драйвер. но не для пц мс-дос, а для профи, под profi-dos. Но там тоже есть конфигурирование драйвера под разные форматы и вариации файловой системы цпм. Исходники есть. Если автор разрешит (Вадим), могу расшарить их тут.

Прочитав у дискеты 0-й сектор, корень диска Вы не найдёте. На дискете грамотной CP/M Вы считаете BOOT-сектор
Что в вашем понимании "грамотная дискета CP/M"? Я ещё раз напомню, что форматов дисков для цпм превеликое множество. Если говорить конкретно за профи, то такая структура диска вполне логичная. Наличие контроллера на ВГ93 тут совершено не причём.

Что в ПРОФИ сам код CP/M грузится из файла, как в MSDOS?
Поясните это момент? Не понятно про что вы говорите. Если вы говорите про загрузку системы с диска, ну так да. любая нормальная ос/дос должна загружаться с диска. а не как у атм из пзу)))

У ПРОФИ, в отличие от КОРВЕТА, упрощённый BIOS. Он не читает БПД, оттого работает только в одном формате дискет
Да, это есть такое.

Корень означает корневой каталог, что означает, что в него входят подкаталоги
Корневой каталог это, корневой каталог. Это есть оглавление диска (по русски говоря, не по вражески :wink:). Подкаталогов может не быть вовсе. Остановимся на термине - оглавление диска.

Понятно, что Вы забыли слово экстент - это одна каталоговая запись в 32 байта.
экстент или просто запись, не надо передёргивать.

Проблемы возникают в основном для грамотных программ, которые перед записью файла пытаются проверить наличие на целевом диске места для его записи. Для чего они сканируют Allocation Table, что отображает занятость диска. А так как в неполноценных CPM-эмуляторах и в MSX-DOS этой Table нет, то возникают проблемы.
Странно. Запустил эмулятор msx, запустил msx-dos 1. Прогнал тот же m80 для сборки мелкого исходника. Странно, всё пишется и создаётся. Или М80 это не грамотная программа? А компилятор Hi-Tech C тоже тогда не грамотная программа, раз всё хорошо записывает? Я лично, когда это нужно, использую консольный эмулятор цпм под винду (http://www.vector.co.jp/soft/win95/util/se378130.html).

в чём прелесть разработки на таком УГ как i8080
собственно говоря, профи дос это не для i8080, а для z80.

hobot
12.02.2017, 10:38
обственно говоря, профи дос это не для i8080, а для z80.
Я тут немного почитал по процессорам и наверное почти понял (во всяком случае увлечение части
населения калькуляторами) - возможно функции калькулятора первичны для тех кто подобными
проектами занят и занимается.

В сети есть такое вот предложение из статьи "история развития калькуляторостроения"

Other manufacturers also entered the race, from Britain's Clive Sinclair through Japanese giants such as Casio or Sharp all the way to Russia's Elektronika models.

В общем для меня - это многое объясняет. Погоня за мистическими

hobot, у вас случайно нету программки для PDP11 вычисляющей Пи по формуле Мачина? и сколько времени ей требуется на 1000 знаков? - то есть расчёты первоочерёдны, тогда доп. вопрос от меня, что мешает PDP-процессорам стать сердцем платы вычислителя?
http://old.computerra.ru/vision/628684/

Shiny
12.02.2017, 10:41
что мешает PDP-процессорам стать сердцем платы вычислителя?
громоздкость наверное. Хотя, я только с PDP-1 знакомился немношк.



Пользователи MSX и Apple сейчас с вами очень сильно не согласны)))
Кстати, о Apple. файловые операции документированы только для ProDOS, а не о AppleDOS. Не с чем соглашаться, наверное.

hobot
12.02.2017, 10:51
Хотя, я только с PDP-1 знакомился немношк.
Хотел ещё раз оговориться (извиняюсь за оффтоп!) - я веду речь только о Ангстремовских разработках конечно же ) А в целом - громоздкость, в список аргументов против принимается.

Vadim
12.02.2017, 11:17
У ПРОФИ, в отличие от КОРВЕТА, упрощённый BIOS. Он не читает БПД, оттого работает только в одном формате дискет (ни DD/SD, ни DS/SS, ни 35/40/41/80/82 физ.треков). А грамотный CPM-BIOS считывает блок параметров диска, отчего поддерживает вообще любые форматы дискет. Также сделано и в MSDOS и MSX-DOS. Кроме того, во всех книгах написано, что иметь каталог на 0-вой дорожке невыгодно, т.к она крайняя, отчего быстрее дохнет.

У Профи вообще нет БИОСа в ПЗУ, ни упрощённого ни усложнённого (это я о чуши и о бреде). В реализации МикроДОС + CBIOS биос имеется в ОЗУ. Так как размер физ. сектора 1024 байт, то драйвер флоппи использует буфер в размер сектора. БДОС обращается к BIOSу за чтением записью логических секторов по 128 байт, драйвер проверяет, есть ли указанный длог. сектор в буфере? Если да, то данные берутся из буфера, если нет, то производится чтение нужного сектора с диска.

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


FAT это не файловая система, хотя иногда ошибочно так говорят. FAT это область на диске.
верите нет, но и ФС называется ФАТ.

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


Если есть FAT, то это файловая система MSDOS. И она "полностью совместима с CP/M" никак быть не может. Только частичная совместимость, хотя для многих программ этого хватает.
Тут всё верно. Совместимость на уровне BDOS, на уровне эмулятора BIOS CP/M совместимости по дисковым процедурам нет.

Shiny
12.02.2017, 11:19
Хотел ещё раз оговориться (извиняюсь за оффтоп!) - я веду речь только о Ангстремовских разработках конечно же ) А в целом - громоздкость, в список аргументов против принимается.

Без малейших придирок, но Вы на вопрос "почему 8080 УГ?" не ответили.

Vadim
12.02.2017, 11:51
Но FAT, т.к он один для всего диска, при больших дисках имеет очень большой объём (обычно сколько мегабайтов, столько килобайтов FAT) и тем самым, или TPA для 8-ми разрядки становится маленьким или надо сканировать FAT по кусочкам, что также тормозит.
Максимальный размер ФАТ16 около 250К, да, это много. Но читать ФАТ целиком не имеет смысла, и даже в MS-DOS никогда вся целиком при работе ОС не читалась. Для работы с ФАТ используются буферы, читать достаточно 1-2 сектора, у меня сейчас в PQDOS читается всего 1 сектор ФАТ, никаких тормозов не наблюдаю. Увеличение кол-ва буферов ускорит операции незначительно. И ещё раз повторяю. Уменьшение ТПА не происходит. Давным давно на 8 бит компах ОЗУ больше 64К, используя страничную адресацию. Код БДОС и драйверов вынесены в страницы. Ещё раз говорю, что в моей ОС размер ТПА 58К. Это мало? Это гигантский размер. Система рабочая, не какие то там сферические кони в вакууме, а реальная рабочая система, которая запускается на реале - Профи.

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


Так что это у Вас бред, причем больной.
Херассе. Я написал систему, при том работающую, драйверы. Имею все доки, собирал их годами, и я больной? Открываю тему и вижу тут просто один бред. Какие-то маленькие каталоги, какие-то гигабайты. С "маленькими каталогами" - я не понял, т.к. описания не было, потом прочитал - понятно. Ладно, не чушь. Но остальное всё - чушь. Про уменьшение ТПА. Вас кто-то заставляет писать кривокод? Религия не позволяет убрать что-то в страницы? Я выше написал, что у меня система работает на ФС ФАТ12/16 при этом код БДОС сидит в странице, драйверы тоже. Буферы тоже. Где уменьшение ТПА???? Я написал об этом, но вы твердите как робот одно и тоже.

ilyaspb
12.02.2017, 11:52
Кстати, о Apple. файловые операции документированы только для ProDOS, а не о AppleDOS. Не с чем соглашаться, наверное.
первая ссылка в гугле https://mirrors.apple2.org.za/Apple%20II%20Documentation%20Project/Books/Beneath%20Apple%20DOS.pdf
было бы желание читать...

Vadim
12.02.2017, 13:05
Это обычный формат. Он у всех компьютеров с контроллером от КОРВЕТА. Гораздо сложнее найти компьютер, у которого был бы иной формат.
Да легко. Amstrad CPC 6128, ZX Spectrum +3.

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


Уверен, что Вы никогда не видели, с какой скоростью CP/M работает с диском в 8 мб. И речь о CP/M. Сведения из личного опыта, не из книг.

В 1997 я купил б/у IDE-винчестер 42 Мб, специально чтобы поставить в ОРИОН. Но, т.к флопа 3.5" в формате 1640 Кб хватало, только в 1999 наконец собрался его подключить. Не было смысла ставить 16-ти разрядные регистры, - винты с ATA-интерфейсом допускают восьми разрядный обмен. Поэтому всё доп.железо - 1533 ЛА3, ИР22 на доп.платке и ИЕ7 в качестве регистра на основной плате ОРИОНА. Работа заняла лишь пару дней, т.к до этого я уже несколько раз решал ту же задачу (в 1989 для СПЕЦИАЛИСТА с КНГМД от КОРВЕТА и в 1994 для РК-КНГМД).

Скорость обмена с винчестером получилась примерно вдвое меньшей, чем на ВГ93 с DD-НГМД в формате 800К. Т.е в 4 раза меньше, чем в формате HD флоповода 3.5". Такая скорость получалась при дисках в 1 Мб и числе экстентов каталога до 256.

CP/M хранит список файлов всех юзеров в общем каталоге. При увеличении размера дисков и, соответственно, размера каталога и числа экстентов, скорость работы CP/M быстро падает. Если при дисководе и числе экстентов в 128, просмотр каталога отнимает 1-2 секунды, то при увеличении размера каталога в 16 раз, поиск в каталоге во столько же раз удлиняется. Учтите ещё вдвое меньшую скорость обмена.

Сбавьте пыл. Я использовал Profi 5.03 с IDE ST351A/X ещё в 1996г. Винт не из быстрых, а самый медленный из всех, что мне лично попадались. И даже с него скорость была быстрее дискетной раза так в 4. Система была старая, МикроДОС с драйвером винта. Если интересно, позднее могу дать ифу о ней подробнее. Как всё там работало мне не нравилось и это было причинной того, что в 1998г я начал писать свою ОС.

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


Чтобы иметь основание писать, что это чушь, надо привести работающую ссылку на скачивание исходника MSX-DOS. И что здесь чушь?
При чём тут исходник? Документации по системе вполне хватит, что бы понять как она работает. А написали вы именно чушь, что в msxdos'е каталог "побит на несколько маленьких каталогов". Ничего там не побито. Подкаталогов в msxdos1 нету. Есть только корневой каталог, винты в стандартной комплектации не были поддержаны, ФС - только ФАТ12.

Shiny
12.02.2017, 14:09
первая ссылка в гугле https://mirrors.apple2.org.za/Apple%...pple%20DOS.pdf
было бы желание читать...

ой, инфы толковой просто завались. Обожаю эту привычку - нагуглить ссылку, швырнуть и понтануться.

freddy
12.02.2017, 14:29
Рядом помирают и просят ухи камушки с нормальным ассемблером (Зеленоградские процессоры),
вот никто что то не берётся на них корманное или своё разрабатывать, отчего бы это? Я никого
не хочу задеть или троллить, реально хочу понять в чём прелесть разработки на таком УГ как i8080,
вместо pdplike Ангстремовских процессоров? Буду рад любому ответу,
Нравится PDP, выкладывайте сюда схему и печатку. Буду вместе с Вами собирать и запускать PDP-машину.
Не нравится 8080, не собирайте на нем ничего. Зачем писать , что это УГ? Мне например он нравится.
Куча литературы, примеров кода, схем... Тонна софта! Что еще надо? На 3,5Мгц он не медленный совсем.

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


вот и я удивился, почему во флейм? )
Я кстати предвидел, что тема перерастет в маразм из гигабайтов и мелких каталогов, а также кучи похожих, но не совместимых ОС :)

ilyaspb
12.02.2017, 14:54
ой, инфы толковой просто завались. Обожаю эту привычку - нагуглить ссылку, швырнуть и понтануться.
это из закладок,гуглить мне ни к чему...
какой инфы вам не хватает?в приведенной мной ссылке ее более чем достаточно для понимания
больше, чем предлагает разработчик железа/софта в своей документации,вы не найдете
а если не способны ее понять,то в этом случае вам не поможет ни ее колличество,ни качество ее изложения
проблемы с английским,так в этой сфере его надо просто знать...

Shiny
12.02.2017, 14:57
какой инфы вам не хватает?в приведенной мной ссылке ее более чем достаточно для понимания
Скажем так я не осилил чтение и запись файла под AppleDos. Заодно непонятно, как работает загрузочный сектор - адрес загрузки и действия.

barsik
12.02.2017, 23:16
По поводу Apple-DOS. В Apple-DOS есть три идеи, что решены лучше чем в CP/M. Это понятно, ведь её писали в 1978, когда всем уже было ясно, что идеология CP/M тормозная и была бы фатальной для 6502 с тактом в 1 МГЦ с всего 3-мя регистрами. Первая идея - это работа физическими секторами, без всяких логических секторов. Вторая идея - отказ от оперативного построения VTOC по результатам сканирования каталога, а хранение готового VTOC. И третья идея - раскидать записи о размещении секторов файла (так называемые T/S LIST - список трек-секторов, где хранится файл) по всему диску, что существенно сокращает объём каталога и ускоряет поиск в нём. Как видите, всё грамотнее, чем у Гарри Килделла.

В базовом виде идея хороша при маленьком числе секторов в треке и маленьком общем числе секторов. А в винте как раз много секторов в треке, а увеличение общего числа секторов увеличивает VTOC (байт на каждые 8 секторов). Потому при адаптации этой идеологии для винта, придётся вводить кластеры (в данном случае не блоки, т.к тут логических секторов вообще нет, - обмен идёт физическими секторами, оттого быстрее, чем в CP/M).

Такая ДОС будет быстрее, чем MSX-DOS 1.0 и 2.0 и, тем более, CP/M. Быстрее MSX-DOS за счёт отсутствия логических секторов. Размер VTOC будет равен размеру FAT в MSX-DOS 1/2, каталог тоже будет иметь тот же размер, как в MSX-DOS 1.0. Т.е каталог будет меньше, чем в CP/M, отчего будет сканироваться быстрее. Да и поиск очередного экстента (как в CP/M) отпадает, т.к в каталоге на каждый файл только одна запись, как и в MSX-DOS (а в CP/M на большой файл тратится много экстентов).


А написали вы именно чушь, что в MSXDOS-е каталог "разбит на несколько маленьких каталогов". Ничего там не разбито. Подкаталогов в MSXDOS 1.0 нет. Есть только корневой каталог, винты в стандартной комплектации не были поддержаны, ФС - только ФАТ12

Понятно, что речь идёт о MSX-DOS 2.0. С чего Вы взяли, что речь идёт о ранней древней версии MSX-DOS 1.0, которая, разумеется, лучше CP/M по скорости, но не имеет каталогов. Кстати, преимущества MSX-DOS перед CP/M следующие:
- нет оперативного построение Allocation Table, вместо этого готовый FAT
- нет разбухания каталога из-за кучи экстентов для больших файлов



Это обычный формат. Он у всех компьютеров с контроллером от КОРВЕТА. Гораздо сложнее найти компьютер, у которого был бы иной формат

Да легко. Amstrad CPC 6128, ZX Spectrum +3.
Не знал, что Amstrad CPC 6128 и ZX Spectrum +3 заимствовали контроллер от КОРВЕТА.

Да и речь об отечественных компьютерах. Как вражеские компьютеры могли заимствовать контроллер от КОРВЕТА? О чём тут спорить? Всем ясно, что формат секторов в 1 кб - самый выгодный для ВГ93, и поэтому среди разработчиков отечественных компьютеров не нашлось идиотов, чтобы использовать менее выгодный формат. Именно это я и сообщил фразой, что это обычный формат для ВГ93. К чему тут цепляться?



У ПРОФИ, в отличие от КОРВЕТА, упрощённый BIOS. Он не читает БПД... У Профи вообще нет БИОС-а в ПЗУ, ни упрощённого ни усложнённого (это я о чуши и о бреде)

Сожалею, но чушь получилась у Вас. Всем ясно, что речь идет о CP/M-BIOS, а вовсе не о ROM-BIOS. Где Вы видели компьютер у которого CP/M-BIOS был бы в ПЗУ. Это невыгодно, т.к ДОС часто дорабатывается и DOS может быть не одна, а много разных, в каждой отличающийся BIOS.


Совместимость на уровне BDOS, на уровне эмулятора BIOS совместимости по дисковым процедурам нет

Нет. Полной совместимости при такой ФС нет как раз на уровне BDOS. BDOS функция 27 не выдаст мне адрес Allocation Table, когда я захочу проверить объём свободного места на диске. Также, если я вызову функцию 31 и по DPB возьму адрес Allocation Table для тех же целей, то тоже будет облом.

Не удастся даже сделать общую для Вашей ДОС и базовой CP/M, программу, определяющую объём свободного места. Т.к каталоговые записи разные и нельзя даже сканируя вручную каталог построить в ОЗУ свою копию Allocation Table, чтобы узнать сколько свободных блоков.


Про уменьшение ТПА. Вас кто-то заставляет писать кривокод? Не можете убрать что-то в другие страницы? Я выше написал, что у меня система работает с ФС FAT12/16. Код BDOS сидит в другой странице, драйверы тоже. Буферы тоже. Где уменьшение TPA? Я написал об этом, но вы твердите как робот одно и тоже.

При чём здесь Ваша ДОС? Я не сомневаюсь, что она хорошая (и Sayman это подтвердил). Но речь-то шла не о Вашей ДОС, а о антикварной CP/M 2.2 на компьютере у которого лишь, максимум, 62 кб ОЗУ (2К ROM-BIOS). Речь не о моём кривокоде, а чтобы обойтись без своего кода, используя готовое. Да и изменять BDOS нельзя, т.к программы ОРИОНА ждут, что BDOS всегда стоит на CC00. Я знал, как устроен эмулятор Z80MU из 1986 c BDOS по адресу FF00 (TPA ~64К). Идеи перенести BDOS в иную банку были (не у меня) в 1993, но актуальным тогда был ОРИОН с 128К, где в цвете нет даже 60К.


Система была старая, МикроДОС с драйвером винта. Если интересно, позднее могу дать ИНФО о ней подробнее.

Темиразов первым подключил винт в Micro-DOS, оттого на ВЕКТОРЕ уже в начале 90-х был винт. Читал в Вики, что она гарантирует работу программ для CP/M 3.1. Но в CP/M-3 есть даты. Если верить, то получается, что в Micro-DOS есть даты файлов. Но в середине 90-х я смотрел дискеты от Вектора и не видел никаких дат в каталоге. Не знаю, есть в Микро-ДОС даты или это враньё? Каково общее впечатление о ней? Т.е стОит ли "овчинка выделки". Ранее не было инфо, оттого считалось, что Micro-DOS то же самое, что CP/M. Не знаете принципа введения дат в Микро-ДОС?

Есть ли в Вашей ДОС даты файлов? Если да, раскажите о идее введения дат, тогда я расскажу как их сделал я, для стандартной CP/M. Может кто-то ещё расскажет о том же. Или может кто популярно объяснит, как даты сделаны в CP/M 3.0. Тогда хоть польза будет. А то пока идёт лишь "меряние пиписьками" и выяснение кто знаток, а кто дурак, а хотелось чтобы форум служил для обмена идеями.


Но я по прежнему призываю просто нормально пообщаться на тему выбора ядра разработки (т.е ЦП)

О выборе CPU. Кажется, тут выбор между DEC (1801 и т.п), КР580/Z80/Z180, 6800 (http://ruecm.forum2x2.ru/t897-topic#10893), 6502/65C02/65816, 68008 и 6809.

DEC мне нравился, я написал пару простейших программ для ДВК. В 1991 задёшево купил БК-010, но из-за отсутствия ИНФО и ПО вскоре сдуру продал задорого. В 1993 имел личную ПК11/16 с FM-винчестером 10 мб. Но тоже вскоре сдуру продал её, причём задёшево. Потому судить о преимуществах DEC не могу. Но у меня сложилось мнение, что все отечественные DEC-процессоры (кроме 1806ВМ2) намного тормознее Z80 (видимо из-за мультиплексированной шины адреса) хотя полноценная 16-ти разрядность даёт удобства при программировании.

6809, якобы лучший из 8-ми разрядных, мне кажется редкостным экзотом. А вот 68008 - это ВЕЩЬ, наиболее интересный из всех, да и просто легенда. Но из-за намного большей средней длины команды даёт более объёмный код и ещё вопрос, компенсирует ли это при маленьком ОЗУ 16/32 разрядность.

Интересны также 65C02 и 65816. Но тут меня замучила неопредённость. Давно хочу узнать о производительности 6502 в сравнении с КР580 и Z80.

У меня было мнение, что 6502 тормозной и дико убогий процессор с неудобной системой команд (нет даже команд для 16-ти байтовых чисел), получивший распространение лишь из-за его дешевизны. Стив Возняк писал, что хотел выбрать для Apple приличный процессор, но увы, 8080 и 6800 стоили 360 USD, тогда как 6502 достался ему всего за 20 USD. Atari и Commodore применили 6502 из-за того, что уже имели обширные вложения в игровые автоматы на 6502.

Но на форуме встретил мнение, что 6502 - крутой и даже лучше, чем КР580, что меня сильно удивило. Несколько фанатов любезно сообщили мне, что 65C02 они предпочитают Z80 и что программировать для него удобно. Из форума узнал, что ПРИНЦ ПЕРСИИ был написан для 6502 на такте 1 МГЦ, что удивило, как такое возможно. На одном вражьем сайте прочёл фразу a Z80 had to run at 4 MHz to keep up with a 1 MHz 6502, что конечно полная туфта, но фанатизм впечатляет...

Кроме того, обнаружил, что учебников по программированию 6502 оказалось больше чем для Z80. Может быть 6502 лучше чем КР580, а я "просто не умею его готовить"? Но суждения фанатов 6502 субъективны. Хотелось бы узнать непредвзятое мнение от знатока, использовавшего на практике оба процессора. Что быстрее, производительнее и удобнее в программировании, КР580 на 2.5 МГЦ или 6502 на 1 МГЦ? Также интересует сравнение Z80 на 4 МГЦ и 65С02 на 3 МГЦ.

Vadim
13.02.2017, 06:07
Понятно, что речь идёт о MSX-DOS 2.0. С чего Вы взяли, что речь идёт о ранней древней версии, которая никому не интересна и не имеет преимуществ перед CP/M, кроме небольшого ускорения за счёт ухода от построения таблицы занятости (за счёт считывания её с диска в готовом виде).
Как раз-таки непонятно. Везде, на всех сайтах используется следующая терминология. msxdos или msxdos1 - речь идёт о версии 1, msxdos2 - версия 2. Иного не встречал.

Но на форуме встретил мнение, что 6502 - крутой и даже лучше, чем КР580, что меня сильно удивило.
Очень странно, что вы не в курсе о 6502, хотя об этом проце писали ещё в середине 90х, что не смотря на низкую тактовую частоту производительность у него как минимум не хуже, чем у Z80/i8080 благодаря тому, что команды исполняются быстрее. Но в целом получается примерно такое же быстродействие.

При чём здесь Ваша ДОС? Я не сомневаюсь, что она хорошая (и Sayman это подтвердил). Но речь-то шла не о Вашей ДОС, а о антикварной CP/M 2.2 на компьютере у которого лишь, максимум, 62 кб ОЗУ (2К ROM-BIOS). Речь не о моём кривокоде, а чтобы обойтись без своего кода, используя готовое. Да и изменять BDOS нельзя, т.к программы ОРИОНА ждут, что BDOS всегда стоит на CC00. Я знал, как устроен эмулятор Z80MU из 1986 c BDOS по адресу FF00 (TPA ~64К). Идеи перенести BDOS в иную банку были (не у меня) в 1993, но актуальным тогда был ОРИОН с 128К, где в цвете нет даже 60К.

Ясно. Нужно было это указывать, что речь шла именно о Орионе и что ОЗУ большого у нас нет. А то, что "программы ОРИОНА ждут, что BDOS всегда стоит на CC00" - это очень плохо. Программы должны обращаться к адресу 5 для вызова ДОСа.

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


Нет. Полной совместимости при такой ФС нет как раз на уровне BDOS. BDOS функция 27 не выдаст мне адрес Allocation Table, когда я захочу проверить объём свободного места на диске. Также, если я вызову функцию 31 и по DPB возьму адрес Allocation Table для тех же целей, то тоже будет облом.

Не удастся даже сделать общую для Вашей ДОС и базовой CP/M, программу, определяющую объём свободного места. Т.к каталоговые записи разные и нельзя даже сканируя вручную каталог построить в ОЗУ свою копию Allocation Table, чтобы узнать сколько свободных блоков.

Если мы вручную будем проверять свободное место то да, будет так, как вы написали, но зачем это делать, если есть специальная функция которая возвращает нам объём свободного места на диске?

Shiny
13.02.2017, 06:35
По поводу Apple-DOS. В Apple-DOS есть три идеи, что решены лучше чем в CP/M. Это понятно, ведь её писали в 1978, когда всем уже было ясно, что идеология CP/M тормозная и была бы фатальной для 6502 с тактом в 1 МГЦ с всего 3-мя регистрами.

Посмеялся. Неужели у 6502 с 1 МГц все так плохо?


У меня было мнение, что 6502 тормозной и дико убогий процессор с неудобной системой команд (нет даже команд для 16-ти байтовых чисел), получивший распространение лишь из-за его дешевизны
Зато есть адресация нулевой страницы, с помощью которой решаются некоторые операции 16бит.


Atari и Commodore применили 6502 из-за того, что уже имели обширные вложения в игровые автоматы на 6502
Стоит учитывать другие чипы в Atari: ANTIC, GTIA и др. Сдвиг экрана - горизонтальный или вертикальный реализуется с полпинка.


Но на форуме встретил мнение, что 6502 - крутой и даже лучше, чем КР580, что меня сильно удивило
придумайте для тренировки замену INC TABLE,Y

Vadim
13.02.2017, 07:20
Не знал, что Amstrad CPC 6128 и ZX Spectrum +3 заимствовали контроллер от КОРВЕТА.

Да и речь об отечественных компьютерах. Как вражеские компьютеры могли заимствовать контроллер от КОРВЕТА? О чём тут спорить? Всем ясно, что формат секторов в 1 кб - самый выгодный для ВГ93, и поэтому среди разработчиков отечественных компьютеров не нашлось идиотов, чтобы использовать менее выгодный формат. Именно это я и сообщил фразой, что это обычный формат для ВГ93. К чему тут цепляться?

При чем тут контроллер Корвета? Какое заимствование, речь шла о размере сектора в 1024 байт. Вы писали, что таких большинство. Это не совсем так. На что я и указал, что есть масса компов, которые имели формат отличный от указанного вами. Потом, что за "заимствование"? При чем тут вообще Корвет?

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


акая ДОС заведомо будет намного быстрее, чем MSX-DOS. Во-первых, отсутствие логических секторов ускоряет в 10 раз. Далее, размер VTOC будет равен размеру FAT в MSX-DOS, а вот каталог будет намного меньше, чем 200 кб, отчего будет сканироваться намного быстрее. Да и поиск очередного экстента в каталоге отпадает, т.к в каталоге на каждый файл только одна запись (а в CP/M на большой файл тратится просто море экстентов, что делает всю CP/M просто бессмысленной для больших файлов - записали несколько больших файлов и место в каталоге закончилось).
Ещё раз советую, что бы не писать глупые ответы почитайте доки по MSXDOS. Там БДОС читает пишет физ. секторы. Это раз. Читать всю фат не нужно это два. Для резервирования кластеров для нового файла можно читать ФАТ с начала, в поисках свободного кластера. А всю ФАТ нужно перечитвать только в том случае, если нам надо узнать свободное место на диске. 200К это только для ФАТ16. ФАТ12 ограничена 12К и там просто всё летает. Диск размером в 32М на ФАТ12 работает очень быстро, вам такие скорости даже не снились уверяю. А далее, с вами согласен насчёт недостатков ФС ЦПМ, про экстенты и большие диски. Всё так и есть.

freddy
13.02.2017, 14:51
Но на форуме встретил мнение, что 6502 - крутой и даже лучше, чем КР580, что меня сильно удивило. Несколько фанатов любезно сообщили мне, что 65C02 они предпочитают Z80 и что программировать для него удобно.
Посмотрите на синтетические тесты https://ru.wikipedia.org/wiki/MIPS_(%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%BE%D0%B4%D 0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5)
Согласно им, 6502 на 1МГц выполняет примерно столько же инструкций сколько и 8080 на 3МГц.
Однако на деле все немного иначе и ключевую роль играет уже эффективность кода, а не MIPSы. Эффективность кода это эффективность инструкций и их разнообразие. Поэтому, если не учитывать архитектуру и железо машин, а взять чисто процессор, я бы выбрал всеже 8080 на большей частоте.

Error404
13.02.2017, 15:10
200К это только для ФАТ16. ФАТ12 ограничена 12К и там просто всё летает. Диск размером в 32М на ФАТ12 работает очень быстро, вам такие скорости даже не снились уверяю. А далее, с вами согласен насчёт недостатков ФС ЦПМ, про экстенты и большие диски. Всё так и есть.

Опять вставлю свои 5 копеек, раз уж тут такой откровенный флейм. :)
ФАТ12 же позволяет обслужить в файловой системе только 64Мб на максимальном кластере (или 32Мб? забыл я уже... давнишнее дело то). Значит, она уже маловата для серьезных нужд, и надо смотреть в сторону FAT16, где все уже будет медленнее. И опять же откуда информация (уже больше к barsik вопрос) по то, что большие логические блоки - это плохо? Это как раз таки очень хорошо, т.к. снижает количество блоков, снижает требование к размеру ALV, уменьшает количество экстентов в каталоге на файл (т.е. больше файлов запишется при прочих равных), и ускоряет построение битовой маски занятости блоков (той самой - BDOS функции 27/31). А физическое чтение BIOS при любом размере блока(группы, кластера) все равно делает минимальным сектором устройства (если нет задачи буферизировать вероятное чтение следующего блока), т.е. тут разницы по скорости никакой. Возможно чуть медленнее отработает функция перекодировки номера группы в номер сектора (на несколько команд сдвигов больше - микросекунды). Недостаток больших блоков один: меньшая эффективность хранения по емкости (больше "пропадает" места на носителе для не полностью занятого последнего блока файла) - менее выгодно хранить кучи мелких файлов. Но это будет аналогично и на FAT-е с большим кластером.

И упоминание про медленные большие ФС как мне кажется растет именно отсюда - из попыток растянуть формат принятый CP/M для дискеток (с блоком 1..2кб) на большие разделы, а всего то надо было - переформатировать на большой блок.

К примеру, в ССР где я делал свои хотелки, размер занятого и свободного пространства на диске у меня выводится каждый раз при выполнении dir, т.к. никакой видимой задержки (с блоком 8 или 16 кб) это не дает.
59743
Также, для ускорения, носитель в CP/M можно объявить несменным (CSV=0 в описателе диска в BIOS), и тогда не будет выполняться контроль (пересчет) каталога для защиты от неожиданной замены дискетки. Я даже это делать не стал, у меня все HDD - сменные носители (т.к. это в т.ч. и CF/SD-карты), но видимых задержек все равно не заметно, уж по крайней мере в сравнении с дисководом.

ALS
13.02.2017, 15:18
...Поэтому, если не учитывать архитектуру и железо машин, а взять чисто процессор, я бы выбрал всеже 8080 на большей частоте.
Согласитесь, выбирать можно что угодно, но вот так безаппеляционно заявлять, что что-то там тормозное и непрогрессивное - это по меньшей мере моветон.
И такие заявы на этом (и подобных) форумах всегда вызывают негодование.

Я сейчас утрирую, конечно, и не желаю никого обидеть, но это все равно, что слышать от какого-нибудь еврообщечеловека "Как, вы не долбитесь в ж*ппку ? Фи, это удивительно. Так старо и тормозно..."

Error404
13.02.2017, 15:26
И потом, мы тут забываем один очень важный момент - он называется "плата за удобство". Я например готов платить за большое TPA чуть большей тормознутостью работы (т.к. ядро ОС пришлось унести в другие страницы и делать туда вызовы). Готов на то что удобство больших по емкости носителей что-то может тоже привнести в общее замедление. Удачно, что не привнесло (т.к. новые носители быстрее старых, новые процы быстрее, и т.п.)

freddy
13.02.2017, 15:58
Я сейчас утрирую, конечно, и не желаю никого обидеть, но это все равно, что слышать от какого-нибудь еврообщечеловека "Как, вы не долбитесь в ж*ппку ? Фи, это удивительно. Так старо и тормозно..."
Ну да, в общем в стиле 6502. Сказано зачетно!

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


И потом, мы тут забываем один очень важный момент - он называется "плата за удобство". Я например готов платить за большое TPA чуть большей тормознутостью работы (т.к. ядро ОС пришлось унести в другие страницы и делать туда вызовы). Готов на то что удобство больших по емкости носителей что-то может тоже привнести в общее замедление. Удачно, что не привнесло (т.к. новые носители быстрее старых, новые процы быстрее, и т.п.)

Может я зря нацелился на классическую CP/M? И еще, зачем этому УГ на 8080, что я строю, большие диски и много файлов? каков от этого практический смысл? Немного в голове не укладывается, просветите пожалуйста. Я в старых осях не силен. Хорошо знаю только MS-DOS :)
MSDOS однако 8080 не осилит...

Error404
13.02.2017, 16:24
Может я зря нацелился на классическую CP/M? И еще, зачем этому УГ на 8080, что я строю, большие диски и много файлов? каков от этого практический смысл? Немного в голове не укладывается, просветите пожалуйста. Я в старых осях не силен. Хорошо знаю только MS-DOS :)
MSDOS однако 8080 не осилит...

Зависит от планов по использованию и пристрастий. Если просто хранить файлы, то наверное любая система подойдет (и можно даже без системы, а как на Спеке - отдельными прогами, например командером и терминалом, выйти из положения). Если же какие-то есть более широкие планы по применению (например комфортно править файлы любого размера {в пределах носителя конечно}), или использовать какие-то среды программирования, то тут (на 8080, и тем более если Z80) конкурентов у CP/M (+MSXDOS) практически и нет. Что до размера диска, то например лучший нативный C для Z80 (на 8080 не пойдет) Hitech C занимает с либами 800к дискету уже сам по себе, а ведь еще надо место под проект (еще 800к как минимум, а у меня есть проекты и на мегабайты только исходника на С). Аналогично Паскаль МТ+ (он для 8080) если не подводит мой склероз, с либами тоже с трудом лезет на 800к. Wordstar ЕМНИП тоже большой - с оверлеями, а вдруг вам надо бухгалтерию на dBase (реально видел в 90-х конторы с dBase) - так это уже база данных с соответствующими требованиями. Как то так. :)

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

Кроме того, CP/M проще в портировании: BDOS и консольный процессор можно взять вообще готовыми (бинарным куском)- они аппаратно независимы, адаптировать надо только BIOS (те самые подпрограммы ввода-вывода на консоль и на диск) и загрузчик.

Vadim
13.02.2017, 17:04
ФАТ12 же позволяет обслужить в файловой системе только 64Мб на максимальном кластере (или 32Мб? забыл я уже... давнишнее дело то)
Если принять, что диск в ФАТ12 может иметь максимально FF0 -1 -2 (нумерация идёт с 2), получаем FED=4077 кластеров. Кластер, размером в 64К я не делал, не знаю обработает ли такой диск msdos/windows, а вот 32К делал и диск вполне валидный с т.з. ms-dos/windows, получаем его размер 127М. Но родные утилиты dos/windows при размере диска более чем 16М включают ФАТ16. У меня в системе есть свой форматтер и там ключами можно задать любые возможные параметры (валидные имею ввиду). Диск в 32М - это было ограничение в ms-dos 3.30 и в моей системе, пока я не сделал 32 бит на номер начального сектора при обращении к дисковому драйверу. Пока ограничение было, то диск был ограничен 32М на ФАТ12 (ФАТ16 в то время тоже у меня не была поддержана). Сейчас все эти ограничения сняты, и можно отформатить 127М диск на ФАТ12, в PQDOS он будет работать точно. И свободное место система будет выдавать быстро, т.к. надо просканировать всего 6К.
Теперь про размер таблиц ФАТ -в ФАТ12 не более 6К даже (про 12 я соврал). Функция получения свободного места очень быстро может её прощёлкать, а вот когда пробуем в PQ-DOS получить размер свободного диска на лог.диске размером 400-600М, на ФС - ФАТ16, то там уже секунд 15 стоит втупливание (идёт прочитка ФАТ). Не минуты, а 15 с, но это всё равно долго. Любые вычисления показывают, что это время вполне нормальное. Объём данных большой, уменьшить его до 1-2 с нереально или почти нереально. И я решил закешировать значения свободного места. Для не сменных дисков (а винты у меня не сменные) в дисковой таблице хранится значение кол-ва свободных кластеров.

barsik
15.02.2017, 20:10
Очень странно, что вы не в курсе о 6502, хотя об этом проце писали ещё в середине 90х, что не смотря на низкую тактовую частоту производительность у него как минимум не хуже, чем у Z80/i8080 благодаря тому, что команды исполняются быстрее.
Это обсуждали не в 90-тые, а на 20 лет раньше в журналах 1975-76 годов и чётко установили, что 6502 немного уступает даже 8080 с тактом 2 МГЦ. Это признавал и сам разработчик 6502. А когда в 1976 появился 8080A с тактом 2.5 МГЦ, то 6502 с тактом 1 МГЦ остался далеко позади. А когда в 1978 появились клоны 8080 с тактом в 3.15 и 3.5 МГЦ, то 6502 остался просто в заднице. И только в начале 80-тых, когда появился 65C02 и позднее 65816, то ситация перевернулась. Но речь то шла именно о 6502 в сравнении с КР580 и Z80.

Я это и имел ввиду, что 6502 ошибочно приписывают превосходство над КР580 и даже над Z80, что вообще наглость http://ruecm.forum2x2.ru/t895-topic#10882.


Я использовал Profi 5.03 в 1996 ... скорость была быстрее дискетной в ~4 раза

Утверждение, что IDE-контроллер работает в 4 раза быстрее, чем контроллер на ВГ93, заставили меня задуматься.

Конечно частично выигрыш вызван тактом CPU. Жаль, что не приведён использованный такт Z80 (в ZX такт Z80, минимум, 3.5 МГЦ). Скорость обмена с IDE прямо зависит от CPU, тогда как для флопа скорость обмена от скорости CPU не зависит. Такт CPU 2.5 МГЦ - минимальный для флопа на 800К. На этой частоте и надо производить сравнение, чтобы выяснить на сколько обмен с винтом быстрее. После чего можно считать выигрыш при любом такте Z80.

Проанализировав п/п-ммы я пришёл к выводу, что винт должен работать быстрее, чем дисковод. Даже, хотя бы потому, что в дисководных п/п-мах опрашивается готовность, а в IDE этого нет. Всё происходит без тормозов.

Посчитав число маш.тактов подпрограмм, я обнаружил, что моя подпрограмма для винта вдвое быстрее, подпрограммы для ВГ93, даже без учета циклов готовности.

Неизбежен вывод, что использованный мной винт - тормозной. Ранее, идею о тормознутости винта я даже не брал в рассмотрение, т.к всякий знает, что винт по определению на порядок более скоростной, отчего скорость обмена ограничена только со стороны компьютера. Потому невозможно предположить, что винт медленный. Ведь винт считал сектор и далее идёт обмен только со скоростью электроники и без тормозов

Использованный винт от ноутбука из начала 90-х, в мини-факторе и, соответственно, низкопотребляющий и энергосберегающий (сам выключает мотор через 5 секунд простоя). Возможно в нём нет кэша и не читается сразу 32К соседних секторов. Вывод: не покупайте старых винтов от ноутбука.

Скорость обмена с винтом никак не отменяет торможения при чтении большого каталога на медленном CPU. Хотя, если скорость обмена выше в 3 или 4 раза, то приемлемым объёмом партиции становится уже не 4 мб, а 12 или 16 мб. Но не гигабайты.


Расскажите, что в вашем понимании логические и физические сектора?

Это не в моём понимании. Это во всём мире так. Лог.сектор это 128 байт и BDOS вызывает BIOS п/п-ммы READ/WRITE, что делают обмен с тем лог.сектором, что задан функциями SETTRK, SETSEC. В MSDOS и MSX-DOS точно также. Ну а физический сектор, как его понять как-то иначе?



У Apple-II, MSX и Commodore совсем другой (и гораздо более убогий) контроллер

Серьёзно? Пользователи MSX и Apple с вами очень сильно не согласны

Они согласны. КНГМД в Apple-II всего на 6-ти TTL корпусах, где SOFT-sectored диски 120К и весь обмен, управление фазами мотора и даже упаковку байтов делает 6502, отчего обмен ненамного быстрее обмена с МГ. Скорость обмена с диском у Commodore потрясает тормознутостью. А у MSX формат 720К меньше 800К КОРВЕТА, а HD-формат, как ОРИОН, он не читает.



На дискете грамотной CP/M Вы считаете BOOT-сектор Что в вашем понимании "грамотная дискета CP/M"? Я ещё раз напомню, что форматов дисков для CP/M превеликое множество

Написано о грамотной версии CP/M, не о дискете. А грамотной CP/M делает её BIOS. В хорошей реализации, должна быть гибкая процедура загрузки, позволяющая грузить ЛЮБУЮ ДОС в любые адреса и банки, т.е по определению должен быть BOOT-сектор. А сама ДОС должна грузить и читать диски любого формата. И даже, если Вы пользуетесь дисками одного формата, Вам захочется получить доп.объём, отформатировав диск не на 80 дорожек, а на 83 дорожки. ОРИОН это может, а ПРОФИ - нет. На ОРИОНЕ мы можем продлить жизнь старых дисков ИЗОТ 1985 года используя FM вместо MFM (т.е SD вместо DD), а на ПРОФИ дохлые диски придётся выкинуть.



Что в ПРОФИ сам код CP/M грузится из файла, как в MSDOS? Поясните этот момент? Не понятно про что вы говорите. Если вы говорите про загрузку системы с диска, ну так да. Любая нормальная DOS должна загружаться с диска. а не как у ATM из ПЗУ

Вообще-то это был вопрос. Хотелось узнать откуда там грузится CP/M. Раз системных треков нет, то остаётся вариант загрузки из ПЗУ или из дискового файла.

Для ответа придётся изложить общеизвестные истины. По базовой концепции CP/M сам код этой DOS хранится на системных треках и в зависимости от числа байтов на дорожке, на систему тратится от 1-й до 6-ти дорожек. Число системных дорожек читается из БПД в BOOT-секторе, что позволяет иметь на дискете каталог на любой дорожке и тем самым можно иметь и несистемные диски в которых не тратятся впустую системные дорожки. На ОРИОНЕ это свойство не использовалось, т.к не было форматёра, который задавал бы вопрос о том, надо ли резервировать место для системных треков или каталог можно сразу размещать на дорожке 1 (он появился несколько лет спустя, когда CP/M ОРИОНА уже устоялась). Заметим, что в системах, где есть BOOT-сектор, хранящий загрузчик CP/M, каталог не может располагаться в треке 0, т.к там BOOT-сектор, а каталог должен начинаться с начала трека.

В продвинутых CP/M, а также в MSDOS и MSX-DOS, чтобы не тратить впустую место на несистемных дисках на резервированные под систему дорожки, сам код ДОС помещают в дискетные файлы. Обычно это CPMBIOS.SYS, CPMDOS.SYS и COMMAND.COM (или CCP.SYS).

Вторичный загрузчик имеет очень маленький объём, потому грузит только файл CPMBIOS.SYS, причём беря его код с фиксированного места дискеты, из первого-же блока сразу после конца каталога. Именно поэтому в MSX-DOS и MSDOS системные файлы надо копировать на пустую дискету. При ДОС в дискетных файлах, если на диске есть системные файлы, то диск загрузочный, а если нет, то рабочий, зато в нём больше свободного места.

Vadim
16.02.2017, 12:59
Утверждение, что IDE-контроллер работает в 4 раза быстрее, чем контроллер на ВГ93, заставили меня задуматься.

Конечно частично, выигрыш вызван тактом CPU. Жаль, что не приведён использованный такт Z80 (в ZX такт Z80, минимум, 3.5 МГЦ).

На том экземпляре Профи была тактовая частота 9Мгц, но с wait'ами. Можно принять что это примерно равно 7Мгц без вейтов.



Хотя, если скорость обмена выше в 3 или 4 раза, то приемлемым объёмом партиции становится уже не 4 мб, а 12 или 16 мб. Но не гигабайты.

Разделы были по 8Мб в той системе. Насколько я помню. Просмотр каталогов был хоть и не мгновенный, но и не медленный. Каталог на 256 входов.



Написано о грамотной версии CP/M, не о дискете. А грамотной CP/M делает её BIOS. В хорошей реализации, должна быть гибкая процедура загрузки, позволяющая грузить ЛЮБУЮ ДОС в любые адреса и банки, т.е по определению должен быть BOOT-сектор.

Вот это про тот мой ответ о BIOS-CP/M профи. Отвечу сейчас о настраиваемом драйвере дисков в ЦПМ. Как Сейман писал выше - форматов было много, очень много. Автор ЦПМ как-то не придумал хранить параметры диска в каком-то определённом месте. Он предполагал, что вот мы делаем нашую некую адаптацию ЦПМ, выбираем физический формат диска, втискиваем логический, потом все параметры из этого посчитали, забили в исходник BIOS-CP/M откомпилировали и всё. Так и было в подавляющем большинстве ЦПМ машин. А вот в ms-dos придумали хитро хранить параметры диска в бут секторе. И сделали это стандартом. Решение надо признать очень здравое. Не так давно я узнал, что такой же принцип использовали и в фирме Амстрад, в самом первом секторе дискеты, который там тоже называется boot там есть параметры дискеты, CKS, DRM и прочее - всё что нужно. Но это не стандарт, другие системы ничего о их "стандарте" и слыхом не слыхивали. Из вашего поста узнал, что и на Корвете так же было сделано. Но повторю - это исключение и не стандарт.
И да, в МикроДОС на Профи понятия бут сектора с параметрами не было. "биос" - глупый. А в PQ-DOS у меня всё не так. Там нет БИОС ЦПМ, он есть но только в рамках эмуляции, и дисковые точки входа там не работают вообще.

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


Вообще-то это был вопрос. Хотелось узнать откуда там грузится CP/M. Раз системных треков нет, то остаётся вариант загрузки из ПЗУ или из дискового файла.
В самых первых версиях МикроДОС на профи система грузилась, как и должна была, с системных треков. Таких вариантов системного диска мне долго найти не удавалось, только упоминания о ней (но в конце концов я такой образ нашёл и посмотрел). А то, что видели массы, уже была версия когда кол-во системных треков свели к нулю. Загрузчик был в виде файла и получал управление не важно как, но получал, оказавшись в ОЗУ он считывал каталог (каталог начинался с первого сектора на диске), находил в нем файлы ОС, а их было 2 - BIOS.BIN BDOS.BIN, читал их куда надо и всё что нужно делал, после чего передавал управление CCP.

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


Заметим, что в системах, где есть BOOT-сектор, хранящий загрузчик CP/M, каталог не может располагаться в треке 0, т.к там BOOT-сектор, а каталог должен начинаться с начала трека.
бут сектор в Профи сделали не 1-м, как везде, а 5-м по счету на 0-м цилиндре. Секторов 5 по 1024 байт. Изначально они имели номера 1,2,3,4 и 5. Но. Профи это продвинутый спектрум. И вот люди решили сделать так, что бы ЦПМ стартовала из TR-DOS, вдаваться в подробности не буду, важно что бы у нас был сектор номер 9 размером более 256 байт, тогда можно сделать так, что от любой команды в trdos, например CAT. Перехватывается управление кодом самого сектора. И диск может запуститься. Для реализации этой возможности формат на дрожке 0 головы 0 изменили. Секторы стали иметь номера 1,2,3,4 и 9. Первые 4 сектора это каталог. 128 входов. С сектора 9 начинается область данных диска. Первым файлом на дискету пишется файл загрузчика. И он работает перехватом управления из трдос, по её ошибке. И как ЦПМ программа при запуске из ЦПМ. Вот так.

barsik
19.02.2017, 03:55
Ранее в этой теме знатоки высказали идею, что в CP/M возможны огромные диски, а максимальный размер файла ограничен в 8 мб. Для проверки я заглянул в ДОК по CP/M, посмотрев раздел, где описаны поля FCB. Вот, что я обнаружил.

EX - текущий номер экстента. В процессе ввода/вывода файла находится в диапазоне 0...31

В документации также указано, что поле RC (офсет 15), показывающее сколько лог.секторов описывает экстент с номером EX и может быть только в диапазоне 0...128.

Если руководствоваться только этими описаниями можно думать, что RC это число лог.секторов описанных в этом экстенте. И таким образом каждый экстент не может хранить более 128*128= 16 кб. И тем самым, исходя из ограничения поля EX (номер экстента) в 32 и получается ограничение размера файла в 16*32 = 512 кб.

Если разбираться, то выяснится, что поле RC действительно не превышает 128, но это не число лог.секторов описанных в этом экстенте. Таким образом документация точно вводит в заблуждение.

Если размер блока умноженный на 8 содержит более 128 лог.секторов, то шаг нумерации экстентов превышает 1. В частности, при блоках в 4К и размере файла более 16К, номер первого экстента (EX) становится не 0 (как при блоках 1К и 2К), а 1, и поле RC показывает не общее число лог.секторов описанных этим экстентом, а остаток от деления на 128. Я никогда не имел размера блока более 2 кб, поэтому удивился увидев такое. Может быть это у меня глючная версия CP/M.

Таким образом получается, что поле EX это не текущий номер экстента, как указано. Точнее так, только при блоках в 2К, тогда в этом поле в экстентах числа 0,1,2,3.... А например, при блоках в 4К в этом поле экстентов оказываются числа 1,3,5... Таким образом поле EX считает не сами экстенты, а 16-ти килобайтные куски файла. И тем самым даже при блоках в 16К, при ограничении поля EX в 31 нельзя иметь файлы более 512К.

Очень многие программы, считают размер файла вручную, суммируя поля RC у всех экстентов файла. Так получается всё верно при размере блока в 1 или 2К. Программы так делают, потому что один раз считать каталог, и узнать размеры всех файлов таким способом быстрее, чем для каждого файла вызывать функцию 35, возвращающую размер файла в лог.секторах в полях R0,R1.

Но при большем размере блока, когда экстент описывает более 128 лог.секторов, этот способ уже не работает.

Выше приведено утверждение из мануала, что поле EX не может превышать 31. Если этому верить, то величина максимального размера файла не может превышать 512К даже при блоках в 16 кб. Но тогда почему из описания функции прямой записи следует, что можно писать в файл размером до 8 мб?

Вместо того, чтобы гадать, необходимо проверить на практике. К сожалению в моём эмуляторе ОРИОНА слишком маленькие диски (только из ОЗУ). Поэтому я решил странслировать дискетную версию CP/M с блоками в 4,8,16 кб и погонять её в эмуляторе B2M. Но столкнулся с трудностями использования эмулятора B2M. Но это другая тема.

Дополнение к теме несовместимости CP/M и MSX-DOS. Проблемы несовместимости CP/M и MSX-DOS вызывает не только отсутствие Allocation Table, но и отличие в работе BDOS функций использующих FCB. Вот что пишут об этом:


Существуют CP/M-программы которые "смотрят слишком пристально" на поля FCB. Что и вызывает проблемы. Это делают даже некоторые продукты написанные Microsoft до появления MSX-DOS. Речь идёт о полях FCB+14 (S2, поле для внутреннего использования CP/M) и FCB+15 (RC, счётчик записей в текущем экстенте)

Узнал, что первый эмулятор 8-ми разрядки написал Тим Паттерсон.

Тим Патерсон - американский программист, наиболее известный как автор первой версии MSDOS, наиболее широко используемой операционной системы персональных компьютеров в 1980-ых.

Мы недавно обратились к нему с вопросами и Тим любезно согласился поделиться историей разработки системы MSX-DOS с MSX Community. Вот его рассказ.

Вот, что я могу вспомнить об истории MSX-DOS. 10 августа 1983 мне позвонил Пол Аллен и попросил меня сделать Z80 версию MSDOS. Я не ухватился за это предложение, поскольку был тогда занят подготовкой к выпуску первых продуктов Falcon Systems. Я предложил ему обратиться сначала к одному программисту, кто мог бы это сделать, затем к другому, но он сказал, что у них уже спросил. Он сказал, что это надо сделать в сжатые сроки и никто другой не согласился на такие условия. Но он предложил хорошие деньги и разрешение для моей компании распространять MSDOS. Так что я решил, что это хорошая сделка. 17 августа я подписал договор на разработку версии MSDOS 1.25 для Z80 за 100.000 USD и право распространять MSDOS 2.0, 2.5, и 3.0 с моими аппаратными продуктами без лицензионного платежа.

Для меня это был только процесс трансляции. Ранее я написал программу трансляции ассемблерных исходников на Z80 на ассемблер 8086 (TRANS). В этом случае я вручную переводил программу в обратном направлении. Поскольку MSDOS была сделана так, что была способна выполнять приложения CP/M, которые были транслированы в коды 8086, то это означало, что MSX-DOS будет способна выполнять оригинальные программы CP/M. Так, можно считать MSX-DOS версией MSDOS на Z80, но одновременно её можно считать вариантом CP/М, которая использует формат диска MSDOS.

Я сидел за терминалом Zenith H19 связанным с 8086 компьютером от 'Seattle Computer Products' работающем в MSDOS с помощью двойного PerSci 8" НГМД. В качестве редактора я использовал MicroPro WordMaster из CP/M (а не более известный WordStar), причём я перенес его на MSDOS самостоятельно дизассемблированием 8-ми битовой версии CP/М и последующим переводом (with TRANS) на ассемблер 8086. Я смотрел на несколько строк исходного текста DOS на ассемблере 8086 и печатал соответствующие команды на Z80 ассемблере.

Сначала я написал эмулятор Z80, который выполнялся под MSDOS, моделируя Z80 машину c CP/М. Этот эмулятор заработал уже через 10 дней, 27 августа 1983. Это позволило мне делать весь проект разработки под MSDOS. Я транслировал исходный текст на ассемблере Z80, используя CP/M-ассемблер M80 от Microsoft, выполняющийся под этим эмулятором, и затем компоновал REL-файл используя CP/M-компоновщик L80.

MSX-DOS, который я писал, имел систему ввода/вывода, которая имела интерфейс непосредственно к процедурам ввода/вывода машины MSDOS, которая выполняла эмуляцию. Это давало прямой доступ из MSX-DOS к управлению дисковым форматом. Большинство основного кода было управлением файлами, так что это было необходимо отладить. Я делал резервную копии своей работы на втором диске 'PerSci', и стартовал код под эмулятором, давая тем самым MSX- DOS полное управление. Резевирование было необходимо, т.к, естественно, в ранних версиях, неожиданно возникали ошибки, приводящие к крушению диска.

К 2-ому октября я добился, что БЕЙСИК Microsoft и M80, выполнялись под MSX-DOS. COMMAND.COM я закончил программировать несколько дней спустя. После тестирования, я устранил несколько багов и продемонстрировал работу MSX-DOS Полу Аллену 11 октября. Я официально поставил тестовую Beta-версию 26-ого октября. Это включало пасхальное яйцо, которое выводило на экран мое имя, но я не помню, как это активизировалось. Мое имя было закодировано кодом FAT, так что это не могло быть найдено, просто просмотром кода.

После моей поставки код послали фирме 'ASCII' в Японию. Они создавали I/O System для MSX машины. Они должны были сообщить об ошибках, и я мог бы устранить их. В ходе этого однажды, в начале января 1984, я сделал ревизию ДОС, которая привела к крушению диска, когда я запустил код под эмулятором. К сожалению, я уже привык, что всё отлично работает и не сделал копии. Потребовался целый день труда, чтобы возвратить потерянные данные.

Фирма 'ASCII' имела на проекте очень крутого японского программиста Джея Судзуки. Он обнаружил моё пасхальное яйцо и добавил своё имя к нему наряду с моим.

В фирме ASCII возникли проблемы при изготовлении MSX-DOS, работающей на реальной MSX машине. Они не предоставили машину для меня, и вместо этого сделали так, что я вынужден был прибыть в Токио, чтобы помочь им. 28-ого января я уехал в Японию с Крисом Ларсоном, где мы встретились с Кей Ниши и его людьми. Оказалось, что они сильно изменили код, не сообщив мне, так что мы работали не над одинаковым исходным кодом. Я потратил три дня в Токио, чтобы выяснить проблемы (отчего осталось мало туристского времени). Я плохо работаю под давлением, так что я отказался делать любое кодирование там. В феврале я продолжил работу над MSX-DOS уже дома.

Крис Ларсон и Джей Судзуки приезжали в мой офис в конце февраля и в начале марта. Они привезли MSX машину с внутрисхемным эмулятором для отладки. Мы запустили всё в работу, и я не слышал ничего более до апреля. Оставалось доделать очень немногое и затем 23 апреля 1984, фирма Microsoft приняла работу и сделала заключительную оплату.

После этого я устранил ещё несколько ошибок, и это стало концом всякого контакта с проектом. После чего я вообще ничего не слышал больше о MSX. В выпуске версии MSX-DOS 2.0 с подкаталогами, я не участвовал.

Я надеюсь, что это отвечает на ваши вопросы.

Error404
19.02.2017, 12:45
S2 это как раз те недостающие старшие биты для файлов размером более 512кб. Вот тут мы это обсуждали с народом:
http://zx-pk.ru/threads/24285-orion-pro-softvernye-dela/page19.html
если их правильно обрабатывать (ошибку в 2.2 я ранее упоминал), файлы более 512кб БДОС пишет и читает прекрасно.

bigral
24.02.2017, 16:54
хоботу: комп на pdp11 это жЫр который осилить в разы тяжелее чем i8080. А i8080 это НЕ УГ! Учти что тут собрались не ардуино-свето-диодо-мигатели так что i8080 это винтажный гламур по сравнению с Z80, 6502, 6809, 68008... На i8080, в теории, есть и система достойная MP/M-80 и компилеры ЯВУ и прикладные проги... Но в жизни оно как-то все "разбросанно\забыто\утерянн о" и в основном куда не сунься все под Z80 (+3, amstrad, msxdos, c128). Так что это довольно интересное дело скопить коллекцию и довести до ума комп на i8080 (к тому же наверно полезное для орион-щиков, вектор-щиков, ют88-щиков, юниор-щиков).

Ewgeny7
23.09.2017, 20:46
Возьму на себя смелость, после беглого ознакомления, все же перенести тему из "Флейма" в "Разное" в "Отечественных компьютерах". Оффтопы присутствуют изо всех щелей. но ИМХО - технической направленности.

freddy
24.09.2017, 05:34
Спасибо. Тоже подумал и решил выложить монитор к своему компу, может кто то соберет.
Я этот комп заводил на кварце 32мгц :) С производительностью у него все хорошо. В архиве есть краткое описание 8080_cpm.txt.
62287
вот еще фотка нашлась.
6228262281
О, еще нашел фото, когда оно работает
62283

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

Здесь выступало много теоретиков по осям. Буду рад если кто то портирует на этот комп какие то оси.

Error404
24.09.2017, 19:17
Интересно, IDE включен по какой схеме? 8-битная с секторами по 256 байт (половинками)?
Вроде для 16-битного контроллера нет требуемого количества регистров на плате?

A_AVL
24.09.2017, 20:29
Error404, 16 бит, сектор используется полностью.
При чтении первыми считываются биты 0-7, при этом биты 8-15 защелкиваются в регистре. Затем они считываются отдельно. Запись аналогично.

Xrust
24.09.2017, 22:06
freddy, не поделитесь исходниками?

Error404
25.09.2017, 00:34
Error404, 16 бит, сектор используется полностью.
При чтении первыми считываются биты 0-7, при этом биты 8-15 защелкиваются в регистре. Затем они считываются отдельно. Запись аналогично.

Так и я об этом. Разъем IDC40 на печатке вижу, а регистров на плате где защелкивать старший байт слова - нет же. ИР82 - буфер ША.
В таком включении (без регистров) можно использовать 8-битный режим, когда младшим байтом слова оперируем непосредственно с ШД, а старший уходит в /dev/null (как и половина сектора). В Спеке такой вариант включения применялся.

freddy
25.09.2017, 01:56
Разъем IDC40 на печатке вижу,
Это шина.

а регистров на плате где защелкивать старший байт слова - нет же.
они есть, на другой плате, см. принципиальную схему и читайте описание.

В таком включении (без регистров) можно использовать 8-битный режим, когда младшим байтом слова оперируем непосредственно с ШД, а старший уходит в /dev/null (как и половина сектора).
Ну пусть называется 8-ми битный и пол диска в dev/null. Экономить бессмысленно, всеравно емкость диска намного больше чем нужно. Так?

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


freddy, не поделитесь исходниками?
Со временем поделюсь, но пока они даже без комментариев. Без коментов разобраться будет трудно, там массово используются запрещенные приемы.

b2m
25.09.2017, 10:13
Буду рад если кто то портирует на этот комп какие то оси.
А почему во множественном числе? По-моему, кроме СР/М альтернативы-то и нет...

freddy
25.09.2017, 13:54
А почему во множественном числе? По-моему, кроме СР/М альтернативы-то и нет...
Классическую CP/M 2.2 я портирую сам, жду заводские платы контроллера IDE.
Тут писали про разновидности "нетрадиционных" CP/M клонов, может есть у кого исходники под 8080 и время :)
А может кто то захочет CP/M 3... я бы даже плату расширения ОЗУ развел.

Error404
25.09.2017, 18:04
Ну пусть называется 8-ми битный и пол диска в dev/null. Экономить бессмысленно, всеравно емкость диска намного больше чем нужно. Так?


В общем - да. На zx такое использовалось вполне себе. Делать поддержку 16-битного слова (и целых секторов) надо если есть желание сохранить совместимость с РС по записи-чтению. Например, сделать стандартные (MBR) разделы и держать на носителе несколько файловых систем, в т.ч. и раздел FATхх, который можно прочитать и записать на РС, и читать-писать его же с компа на 8080.

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


А почему во множественном числе? По-моему, кроме СР/М альтернативы-то и нет...

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

b2m
26.09.2017, 22:45
freddy, может заинтересует - конфиг для моего эмулятора с твоим компьютером и биосом: freddy8080.zip (http://bashkiria-2m.narod.ru/freddy8080.zip)
Поскольку экрана нет, то нужно коннектиться к порту 8080 локального компа (я пользовался PuTTY, режим raw, эхо отключить). Вторая ВВ51 на порту 8251, можно в конфиге поменять.

Интересно, что CP/M заработала с полпинка. Ты интерфейс IDE тестировал, или п/п загрузки boot-сектора была только в теории написана?

freddy
27.09.2017, 01:30
Чтение и запись физических секторов тестировал, но на макетке контроллер был собран на зарубежных компонентах (74f573 и 74f245). То что на схеме и на печатной плате, переведено на отечественные компоненты (КР580ИР82 и КР580ВА86), это нужно еще протестировать. Жду платы с завода.
Спасибо за конфиг. Биос CP/M у меня готов, проверю в эмуляторе.

freddy
30.09.2017, 12:53
В эмуляторе проверил, все работает.

b2m, какая то интересная геометрия винта у эмулятора. 255 секторов и 64 головки :) Возможно при сквозной LBA адресации секторов пофиг, но для физической адресации CHS весьма болезненно. Можно ли как то сделать классику 63 сектора и 16 головок? А то после форматирования 256 дорожек, у меня образ винта занимает 2Гб, грустно :(

andrews
30.09.2017, 21:31
Относительно осей. Была такая операционка от Intel как ISIS-II. Стояла на американских Intellec MDS II и советских КРАМ, "разработанных" московским ВНИИЭМ и производимых на АЭМЗ Александрийском электромеханическом заводе г. Александрия Кировоградской области. Там была теневая ПЗУ, дисковая система на больших флопповодах 8 дюймов. После загрузки теневое ПЗУ отключалось и оставалось ОЗУ 64K. Графики там не было, по последовательному порту подключались мониторы типа Видеотон. Поддерживались программатор и внутрисхемный эмулятор из оси. Были языки программирования: PL/M-80, ASM80 и откуда-то, скорее всего из CP/M были портированы Pascal, Fortran-80. ВНИИЭМ портировал на свой МСУВТ-В7 и операционку реального времени RMX-80. МСУВТ-В7 и КРАМ имели общие платы процессора, внешней памяти по 16K ОЗУ+16К ПЗУ( шина позволяла включать несколько процессорных плат параллельно, на каждой могла быть встроена своя RMX-80, работавшая из ПЗУ). А одну плату могли разделять оба процессора. Поэтому, кстати на i8080 существовали двух-процессорные системы с разделяемой общей памятью 16-32к, чего я ни на одной любительской конструкции не наблюдал. Да, была еще плата арифметического расширителя, поддержанная библиотеками, как для чисел с плавающей точкой, так и с фиксированной.

freddy
01.10.2017, 10:46
Хм... Начну по порядку. С эмулем b2m разобрался методом тыка. Привел образ диска к нормальному виду. Однако хотелось бы иметь нормальный мануал по настройке конфигов этого эмуля. Подскажите где взять?
Насчет ISIS, да было бы интересно, в качестве исторической ОС. А так почитал, ну делалась она по разработки софта, и больше ничего с нее не взять. Либо софт под нее писать или адаптировать самому. В нете даже где то был ее эмулятор на базе CP/M :)
RMX-80, ну не знаю, а оно того стоит? Разве что, если мой комп использовать под контроллер...

Под эмуль b2m могу выложить образ диска и файлы для приведения свеженького винта до нужной кондиции, ну и ось со всем сопутствующим :)
Кому-нибудь надо?

A_AVL
01.10.2017, 12:58
Надо.

andrews
01.10.2017, 13:23
Насчет ISIS, да было бы интересно, в качестве исторической ОС. А так почитал, ну делалась она по разработки софта, и больше ничего с нее не взять. Либо софт под нее писать или адаптировать самому. В нете даже где то был ее эмулятор на базе CP/M :)
RMX-80, ну не знаю, а оно того стоит? Разве что, если мой комп использовать под контроллер...

был симулятор ISIS-II под MS-DOS, мы на него с КРАМ-а в конце 80-х и перешли. Пороюсь у себя в архивах, должно все быть. Да, она дает перемещаемые объектные коды для исполнения вне системы или можно разместить на нужные адреса( ПЗУ встроенной системы для программатора). Для поддержки плавающей зпт можно изваять сопр на современной элементной базе, тогда плата была на 589 серии. Интересна была поддержка внутрисхемным ICE эмулятором( вытаскивался 8080 из сокета, а в него вставлялся кабель из этой штуки и можно было отлаживать программу в реальном времени) и программатор РФ1, РФ2, РФ4. То есть был полный цикл разработки для любой железки на i8080 или K580 для встроенных систем. В те поры из MCU были только 8048 Intel, возможно что-то у Motorola. То есть на железе могло и не быть никакой ОС, и памяти могло быть хоть 1K ROM+1K RAM. Можно было бы использовать c ядром 8080 или 8008 для совсем дешевых Alter, когда 8-битных MCU в природе не останется )) RMX-80 идет от обработки прерываний на 8259. Поддерживало все их режимы и каскадное включение 2-х штук. В основном для ленивых, кто не хотел писать на ASM-80 свои обработчики прерываний. Полноценных часов-календарей тогда не было, только таймер 8253, поэтому если и реанимировать на современном уровне, то на какой-то современый чип-часы-календарь. Вместо главного цикла программы, там на таймере висел диспетчер задач, реагировал на аппартные прерывания от питания( ватчдога тоже тогда не было), клавиатуры пленочной, ввода с терминала, прерываний с портов, АЦП, ЦАП и прочее. Ну и в случае двух процессоров умел разделять общую память и общие устройства ввода/вывода. То есть по возможностям было все это круче Arduino для железного программиста. Но и стоило это сокровище 63000 советских рублей, а СМ-1800 с CP/M что-то около 23000. Только последняя это габариты были, а так можно было свою управляющую плату на i8080 собрать на 12 микросхемах. Винчестер ISIS-II не поддерживала, только до 4-х 8 дюймовых флопповводов.

freddy
01.10.2017, 15:39
В этом архиве подробное описание, как взгромоздить на мой комп CPM 2.2. Приведено все с исходниками, там пока не очень красиво оформлено, но понятно. Исходники отучены от макросов, собрать можно любым ассемблером.
Это пока бета, есть еще идеи, которые хочу воплотить. Читайте readme.
62379

А это архив с файлами под эмулятор B2M. Конфиг нужно положить в папку с конфигами :)
Для подключения используйте putty или Zoc Terminal. Консоль на 8080 порту, ком-порт на 8251-порту.
62380

TomaTLAB
01.10.2017, 16:42
Пороюсь у себя в архивах, должно все быть. Было бы интересно глянуть.
Да и сохранить для истории, а то слишком уж много интересных вещей, вроде бы как бы за ненадобностью, безвозвратно в помойку ушли.
Ну а для меня, например, тема ПЛК вообще сама по себе интересна.

freddy
01.10.2017, 18:02
Интересна была поддержка внутрисхемным ICE эмулятором( вытаскивался 8080 из сокета, а в него вставлялся кабель из этой штуки и можно было отлаживать программу в реальном времени)
такого устройства мне очень не хватает. Есть ли в природе внутрисхемные отладчики под 8080, чтоб дома можно было собрать?


RMX-80 идет от обработки прерываний на 8259. Поддерживало все их режимы и каскадное включение 2-х штук. В основном для ленивых, кто не хотел писать на ASM-80 свои обработчики прерываний. Полноценных часов-календарей тогда не было, только таймер 8253, поэтому если и реанимировать на современном уровне, то на какой-то современый чип-часы-календарь.
У меня все документировано, платку с ВН59 и каким нибудь даласом или моторолой от AT-шной матери можно прикрутить. Кто бы взялся?


Винчестер ISIS-II не поддерживала, только до 4-х 8 дюймовых флопповводов.
Ну это... зачем же так. Тем более говорите, что с ней работали. Посмотрите в мануале на странице 2-1. http://bitsavers.org/pdf/intel/ISIS_II/9800306-06_ISIS-II_Users_Guide_May81.pdf
У Интела замечательные мануалы, как и ось.

TomaTLAB
01.10.2017, 20:09
платку с ВН59 и каким нибудь даласом или моторолой от AT-шной матери можно прикрутить. Кто бы взялся?
Можно попробовать RMX-80 поселить на плату от принтера СМ6337 (или напр. МС6313) там вроде почти все, что нужно есть.


Есть ли в природе внутрисхемные отладчики под 8080, чтоб дома можно было собрать?
Пока нашел только это: http://www.tauntek.com/8080-In-Circuit-Emulator.htm
Вот для Z80: http://ferretronix.com/nice/
Ну и вот тут (http://www.nedopc.org/forum/viewtopic.php?t=9453)обсуждалось. Правда, не совсем то...

freddy
02.10.2017, 01:45
Пока нашел только это: http://www.tauntek.com/8080-In-Circuit-Emulator.htm
Очень полезная вещь! Герберы печатной платы уже отправил на завод. Это из разряда Must HAVE!

andrews
02.10.2017, 17:00
Очень полезная вещь! Герберы печатной платы уже отправил на завод. Это из разряда Must HAVE!

с интересом ждем отзыва об этом девайсе, будет ли тормозить? поддерживает ли отладку вложенных прерываний и кода ЯВУ, загрузку в RAM устройства, на котором выполняется?

TomaTLAB
02.10.2017, 18:07
будет ли тормозить? А ты думал в сказку попал? Обязательно будет. :)
На самом деле это довольно ограниченный отладчик. Юзерское междумордие к нему через терминал. Три брякпоинта. В раме и портах системы пошурудить можно.
Он "вклинивается" между системой и реальным железным процом, и подкидывает ему в определенные моменты "левые" опкоды.
С прерываниями и захватом шины там нужно осторожно.
Хальт он вообще не переваривает - должен виснуть наглухо.
Зато есть некоторая "скриптовость", можно несколько команд отладчика записать в одну строку и зациклить ее. Удобно будет скопом тыкать.
Вот тут прямая ссылка (http://www.tauntek.com/8080ICEMan.pdf) на мануал от него.

Но как говорится, "на безрыбье и кастрюля - соловей" :)

OrionExt
02.10.2017, 20:56
Да жестоко. Тут ведется 2 варианта.

Первый. Внедрить в монитор подопытного код для отладки. Аля HI-TECH Z80 C Compiler 7.80PL2 удаленный отладчик.
Второй. Пропустить 8080 In CircuitEmulator. И сразу сделать на FPGA - 8080. Всем этим заменить реальный проц 8080 и дальше рулить по JTAG-у без ограничений.

А то кокая та переходная конструкция 8080 In CircuitEmulator вышла. Не туда не сюда:)

TomaTLAB
02.10.2017, 23:01
И сразу сделать на FPGA - 8080.
Это как бы очевидное решение, но нужно же еще и некий софт прокладкой между ПЛИСиной и юзером.
Тем же SignalTap'ом особо не навоюешь, в данном случае.
Не сильно сложно, но делать же нужно, а тут хоть и ущербное, зато готовое решение. Ноги то у него растут из достаточно лохматых годов.

OrionExt
02.10.2017, 23:21
Это как бы очевидное решение, но нужно же еще и некий софт прокладкой между ПЛИСиной и юзером.
Тем же SignalTap'ом особо не навоюешь, в данном случае.
Это да.

Ну, я предложил два решения. К сожалению, приведенная схема ровным счётом не особо поможет, а на нею тоже надо потратить время. Я за первый вариант в рамках этой темы.

А с SignalTap не надо воевать. Пилим ,скоросной и полезный интерфейс по JTAG свой. Дальше добавить не чего. Тут нид специалист в этой области.

TomaTLAB
02.10.2017, 23:38
Ну так и я про что...
Хотя мне лично больше эмулятор ПЗУ бы пригодился, с загрузкой из командной строки ПСюка.
Я на микроконтроллерах с ISP привык отладку минорными правками делать.
Ресурса ПЗУхи мне не жалко, напрягает между панельками перетыкивать.
Впрочем и эта шалабушка может пригодиться, сделать несложно, каши не просит.

OrionExt
03.10.2017, 00:33
Ага.

Но код (от удаленного отладчика) таки нид (не большой) в младших адресах. А там грузи что хочешь в РАМ. Что РОМ что РАМ. Это от целевой программы зависит. Как все это она будет юзать.

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

Опять. Предложение для старинки. А так юзаем андруино и лепем что захотим.

HI-TECH Z80 C Compiler 7.80PL2 - очень продвинут что куда и зачем (можно настроить).

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

Если для вас ПЗУ лежит от 0 адреса. Это вообще супер для отладчика того времени.

freddy
03.10.2017, 01:18
с интересом ждем отзыва об этом девайсе, будет ли тормозить? поддерживает ли отладку вложенных прерываний и кода ЯВУ, загрузку в RAM устройства, на котором выполняется?

Но не в этой ветке. Тут уже офтопа хватает и так много.

OrionExt
03.10.2017, 01:26
Офтоп ли это:) Когда дела касается целой эпохи Самодельный комп на i8080. Афтор определись уже чего ты хочешь:v2_dizzy_turn:

freddy
03.10.2017, 01:34
Афтор определись уже чего ты хочешь
В первом посте написано.

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

Выкладывайте, может есть у кого? Только на 8080 и собственные.

OrionExt
03.10.2017, 01:53
Всем привет!Давайте сюда будем выкладывать свои разработки компов на КР580ВМ80 и обсуждать их.;)


Тута разработки летают смежные тоже. И мысли Z80-8080 тесня связаны. Терпи. Или определись:)

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

А не вы ли дуал вг75 сделали? Это к сожалению не взлетает тут как и первый в снг MSX на рассыпухе по пришествию 30 лет.

freddy
03.10.2017, 02:23
Определился еще в первом посте. Про ВГ75 есть отдельная ветка, там можно задать по ней вопросы.

freddy
04.10.2017, 02:02
Подготовил монитор для публикации, в более читаемом виде. В архиве исходники и инструкция. При желании можно адаптировать на любой комп с 8080.
62406
А это мелкий и очень быстрый ассемблер, который я использую.
62407

TomaTLAB
22.11.2017, 01:04
Я вот тут ща вспомнил, про одну штуку. На i8080 можно стек выселить в отдельное адресное пространство (т.е. еще плюс 64к). Интересно, где нибудь использовалось?
Кажется, была какая-то машинка у нас, из разряда "вещь в себе", где стек под ПЗУ загоняли, вроде бы.

Ewgeny7
22.11.2017, 07:54
Интересно, где нибудь использовалось?
RAM-диск на "ЮТ-88" вроде как. Работает через стэк.

freddy
23.02.2018, 15:57
Кто-нибудь собрал?
В схеме IDE контроллера кое что не так.
Должно быть так.64342
Раньше он был на не прозрачных 74HC574, от того и ошибка. Лечится напаиванием 555ЛН1 на 555ЛЛ1 и перерезанием двух дорожек к 11-м выводам ИР82.
Работает очень быстро с винтом. Многословные посты о медленной работе CP/M с большой файловой системой - бред.
Машина очень стабильная, за полгода глюков не заметил. Достойный ответ всякому УГ типа Радио-86РК.

freddy
25.02.2018, 19:46
Осталось немного запчастей, печаток IDE контроллера и материнской платы. Кому надо, пишите в ЛС.

freddy
27.02.2018, 19:54
вот так оно выглядит в реале https://www.youtube.com/watch?v=jrBZHd6nbbA
Снял небольшой ролик о мониторе, вордстаре, ассемблере.
Подключено к ноутбуку через переходник USB2RS232. переходник буферизирует, поэтому все подергивается рывками, на реальном COM-порте это не так.

freddy
03.03.2018, 16:52
Хочу поделиться еще одним видео на тему поддержки национальной раскладки в CP/M. Как известно в бородатые 70-е-80-е особенно не парились с поддержкой 256 символов ASCII. Большинство терминалов работали в 7-ми битной кодировке, в лучшем случае имея управляющую последовательность для переключения знакогенератора. Многие уступали относительно примитивному DEC VT52. В общем все это наложило отпечаток на CP/M софт. Если кто то следил за развитием проекта моего терминала на КР580ВГ75, то помнит, что я вопреки изначальной задумке, зачем то сделал там поддержку 256 символов ASCII. Вот представился очень удобный случай чтобы показать зачем. Хорошо будет работать все, что пользуется стандартными обработчиками CONSOLE I/O из биоса. А все что где то у себя делает ANI 7F, нужно патчить в интерактивном дебагере, заменяя ANI 7F на NOP.
Смотрите кино https://youtu.be/wykk0T3HxiU

Error404
03.03.2018, 19:06
Ты лучше исходниками бы поделился.

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

По крайней мере в части программирования ВГ75 для нестандартных режимов, в т.ч. 8-битного ASCII на одном чипе ВГ75 (т.к. АТмегу один хрен не все стали бы делать, а проекты параллельные вроде как ведутся и было бы замечательно сделать проект оптимальным, выжав из ВГ75 по максимуму). А то смысл этого самопеара не понятен (а домыслы озвучить стесняюсь).

freddy
04.03.2018, 02:42
Ты лучше исходниками бы поделился.
В соответствующей ветке есть DMA-цикл, инициализация ВГ75.
Остальное не интересно, оно под Atmel, и отвечает за обработку ESC-последовательностей.
Код терминала написать сами сможете, ну или готовый взять.


А то смысл этого самопеара не понятен (а домыслы озвучить стесняюсь).
Все, что не понятно, спрашивайте. Домыслы озвучивайте, мне тоже интересно.

Xrust
14.03.2018, 14:32
64618
Начал собирать понемногу. К сожалению не все есть в наличии. Кое-что пришлось из Китая заказывать, в частности то, что касается преобразователей напряжения.
Небольшое замечание: кварц 25МГц лучше включить последовательно с конденсатором 5...8пФ, а то может не взлететь.
freddy, спасибо за печатку! Качество отличное. Для полного счастья не хватает только монтажной схемы. Еще немного поною за выбор в качестве ПЗУ 2716. Лучше на 28 ног разводить сразу.

freddy
14.03.2018, 20:04
Возьмите с первого поста трассировку в формате Sprint Layout 5, там подписано все что должно стоять.
На 28 ног ПЗУ у меня мало, а на 24 ноги было много флешек AT28C16. Кварцы в этой плате работали на 32Мгц и без конденсатора, опробовано жменю кварцев, когда я занимался оверклокингом 8080. Его придумали ставить в СССР, из-за того что кварцы работали на гармониках. А так то сейчас все кварцы импортные, так что не надо.

Xrust
14.03.2018, 21:54
freddy, на счет конденсатора и кварцев не согласен. У меня большинство кварцев >14 МГц не заводились без кондера. Вам, наверное, просто повезло. А для работы на гармониках у гф24 специальный вывод есть, я не про него говорил.
Трассировку я распечатал, но от нее толку мало. Микросхемы и так понятно где какие стоят, трудно спутать. С мелочевкой сложнее. Где какие резисторы, кондерчики стоят. И ошибки похоже в схеме есть. Например обвес MAX232. По даташиту надо электролиты ставить 1мкФ. На MAX232A 0.1мкФ. Впрочем, если линия будет короткой, возможно и MAX232 c 0.1мкФ заведется. Проверю при случае. Но на U16 пара кондеров подписана 1нФ. Наверное, просто опечатка. Еще есть вопрос по C1. В схеме 0.1мкФ. На плате распаян электролит. Это цепь сброса, там от емкости будет зависеть сброс при включении. Емкость правильно указана? С преобразователями пока не разбирался. В ближайшем магазине их почему-то нет. Заказал у братьев китайцев. Пока от внешнего блока попробую запитать.
Еще жалко, что мало контактов в разъеме раскирения. Уже думаю, как выкручиваться. Наверное, как в ISA16, дополнительную колодку. Тем более, что для материнки эти сигналы скорее всего не пригодятся.
Флешки 28c16 (https://www.ebay.com/sch/i.html?_from=R40&_sacat=0&_nkw=28c16&_sop=15) в корпусе DIP встречаются гораздо реже, чем 28c256 (https://www.ebay.com/sch/i.html?_from=R40&_sacat=0&_nkw=28c256&_sop=15) и стоят в 3 раза дороже ( Лучшим решением было бы предусмотреть универсальную разводку. Хотя это и нытьё с моей стороны. Но если уж ныть, так ныть. Наверное такой мощный преобразователь для -5 тоже излишество. Попробовать что-ли 7660 вместо него впаять? Завтра прикину, насколько это удобно.

TomaTLAB
14.03.2018, 23:34
Флешки 28c16 в корпусе DIP встречаются гораздо реже, чем 28c256 и стоят в 3 раза дороже
Сейчас вообще имеет смысл закладываться на W27C512, ибо их пока китайцы откуда то потрошат в неимоверных количествах.

A_AVL
15.03.2018, 09:33
Кто-нибудь собрал?
Собрал. Были проблемы с запуском. Сейчас пока проблемы со свободным временем, но буду запускать.
Сразу сделал посадочное место под 28c64, т.к. точно нужно будет как минимум писать тесты для запуска.
А так вроде сигналы по шинам бегают, красивые. Кварц ставил 28 - нормально.

freddy
15.03.2018, 17:43
Я тоже решил написать как я запускал. Пришла долгожданная посылка с Резонита. Я так долго ждал, что не выдержал, и в тот же вечер, после работы принялся за сборку. По мере запайки деталей выяснилось, что земляной пятачек R19 не соединен с землей. Завод это объяснил, моей не правильной разводкой, якобы всему виной двухсторонние отверстия. С тех пор я все стал рисовать со сквозными отверстиями. К счастю, это была единственная ошибка, которая лечилась соплей олова. К середине ночи я запаял все детали и решил попробовать включить. В качестве блока питания использовал дешевую китайскую зарядку 5В 1А.
По началу почему то побоялся ставить микросхемы в панельках и решил пробовать так. Зная, что импульсники без нагрузки включать нельзя, снизу платы напаял маленькие смд резисторы 1к по каналу -5В и 2к2 по каналу 12В. Включил, и все хорошо, напряжения в норме, ничего подбирать не пришлось, все было смоделировано в Proteus и в реале работало как в симуляторе. Генераторы работали, импульсы были ровные и квадратные. Обрадовавшись результату я вставил процессор, память, системный контроллер... Монитор к тому времени был давно написан, но я не был уверен в его работоспособности, так как не программировал 8080 уже лет 20 и многое подзабылось. Потом я решил записать во флешку 00, и в конце JMP 0, вставил и запустил. Трясущейся рукой коснулся щупом осциллографа A0,A1,A2... с возрастанием номера разряда адресов, импульсы становились все реже, и я понял, что все ОК, процессор работает! Он перебирает адреса с 0 до 800! Счастью не было предела, быстро зашил монитор, прямо на разъеме RS-232 замкнул RTS и CTS, ткнул в компорт своего десктопа самодельный нульмодемный кабель, подсоединил плату в CONsole порт, стартанул и увидел заветную надпись '8080 monitor'. Он заработал, причем сразу после сборки, ничего менять и настраивать не пришлось. Однако я с ужасом осознал что на улице утро и пора идти на работу. Рабочий день прожил кое-как на кофе, и когда снова пришел домой, спать мне почему то не хотелось. Меня беспокоила одна мысль, смогу ли я выжать с 8080 производительности на уровне хотя бы Z80A. Я взял коробочку с кварцами от старых материнок и принялся их по очереди паять. Дошел до 32Мгц и успокоился, КР580ВМ80 абсолютно стабильно работал, даже не думал глючить и перегреваться. На радостях я перебрал всю свою коробочку с 80-ми процессорами, не заработали только оригинальные Интел в керамике. Отечественные заработали все, все же , чтобы там грамотеи не писали, а скопиировали мы процессор не тупо а с умом. Наш получился немного лучше. Мелочь, а как приятно. На третий день я немного оптимизировал монитор, пришел к выводу, что RTS/CTS можно оставить соединенными на всегда, ибо 8080 спокойно успевал обрабатывать поток 9600 bps. HEX-ы грузились на ура. В таком виде монитор и компьютер остался
по сей день. В его кросс плату, кроме IDE контроллера можно напихать еще много интересного... вот такая получилась сказка на ночь ;)

LeoN65816
16.03.2018, 08:11
Дошел до 32Мгц и успокоился, КР580ВМ80 абсолютно стабильно работал, даже не думал глючить и перегреваться.
Так сколько в итоге тактовая при этом кварце получилась для проца?

TomaTLAB
16.03.2018, 08:20
Ну если там ГФ24 то какая она может быть? По всей вероятности 32/9 = 3,555(5) МГц

Xrust
16.03.2018, 11:21
Нашел-таки вчера все нужные детали. Сегодня проверил работу преобразователей. Осталось повтыкать микросхемы и разобраться с ПЗУ.

freddy
16.03.2018, 15:08
Выложил крупные фото собранного компьютера. Они пригодятся в качестве наглядного пособия для сборки, хорошо видно что и где стоит.

Контроллер IDE:
http://photo.qip.ru/photo/antenn.landru/96467549/small/134432017.jpg (http://photo.qip.ru/users/antenn.landru/96467549/134432017/)http://photo.qip.ru/photo/antenn.landru/96467549/small/134432018.jpg (http://photo.qip.ru/users/antenn.landru/96467549/134432018/)http://photo.qip.ru/photo/antenn.landru/96467549/small/134432019.jpg (http://photo.qip.ru/users/antenn.landru/96467549/134432019/)http://photo.qip.ru/photo/antenn.landru/96467549/small/134432021.jpg (http://photo.qip.ru/users/antenn.landru/96467549/134432021/)http://photo.qip.ru/photo/antenn.landru/96467549/small/134432020.jpg (http://photo.qip.ru/users/antenn.landru/96467549/134432020/)

Материнская плата:
http://photo.qip.ru/photo/antenn.landru/96467549/small/134432022.jpg (http://photo.qip.ru/users/antenn.landru/96467549/134432022/)http://photo.qip.ru/photo/antenn.landru/96467549/small/134432023.jpg (http://photo.qip.ru/users/antenn.landru/96467549/134432023/)

Все красненькие резисторы 3 КОм, желтенькие конденсаторы 0,1мкФ - большинство деталей можно запаять сразу, не глядя в схему.

freddy
16.03.2018, 18:57
Так сколько в итоге тактовая при этом кварце получилась для проца?
3,5Мгц полет нормальный. На больших частотах не хотел работать ГФ24, у него по паспорту 30МГц. Других экземпляров попробовать не смог, у меня он запаян без панельки.

Что делать, если нет 24-х выводной ПЗУ К573РФ2, РФ5б, 2716? Можно спокойно применять 28-ми выводную типа 2764-27512. См. рисунок.
64639

Впаиваем панельку на DIP-24, потом берем панельку DIP-28 совмещаем как на рисунке, чтобы сошлась сторона, противоположная ключу. Сильно глубоко не вставляем, и припаиваем к контактам панельки на 24. Выводы 1,2, 28, 27, возможно 26, в зависимости от того какую ПЗУ будете устанавливать, припаиваете по схеме к соответствующим адресам, питанию или земле.
В результате все крепко держится и ПЗУ съемное ;)
Под ПЗУ в конфигурации памяти 0, выделено ах 32Кб. 0-7FFF

barsik
16.03.2018, 20:35
3,5 МГЦ КР580 - полет нормальный. На больших частотах не хотел работать ГФ24, у него по паспорту 30МГц.
А чем же тактировали 8080-D предназначенные для такта 4 МГЦ и другие 8080 других фирм, что были на 3.15 МГЦ. Чтобы в ИРИШЕ ГФ24 работал с кварцем 32 МГЦ я ставил последовательно с кварцем ёмкость всего 3.3 пф.

В Специалисте таких проблем нет, там нет ГФ24. Она не годится, т.к клок там должен быть равен частоте кварца делённой на 8, а не на 9. Там более громоздкая схема формирует Ф1 и Ф2 с помощью ИЕ7, ИД4 и ЛА8. Зато с её помощью получается такт КР580 в 4 МГЦ.

Какой радиатор КР580 на 3.5 МГЦ? Не перегревается при многочасовом прогоне на 3.5 МГЦ? 3.5 МГЦ получено с ВК28 или без него. У меня без ВК28 КР580 не тянул выше 3.1 МГЦ, а с ВК28 стабильно тянул и 3.5 МГЦ с радиатором.

A_AVL
16.03.2018, 21:35
Схема с ВК38.
У меня в этой схеме на этой плате с ГФ24 нормально запустился кварц 28.8МГц. Других первогармониковых пока нет. Процессор греется, но не настолько что бы был нужен радиатор. Пока до многочасового прогона дело не дошло, но думаю, проблем не предвидится. Буферные формирователи 580 серии греются сильнее.

barsik
16.03.2018, 23:35
Схема с ВК38
ВК38 ещё лучше, т.к даёт более длинные сигналы чтения и записи памяти. С ВК38, если шина не перегружена, Вы сможете поиметь 3.75 МГЦ с радиатором.

С кварцем 28.0 МГЦ у меня меня РК86 (без периферии и со снятым DD14) тоже много часов работал без сбоев без всякого радиатора. Но это лишь из академического интереса. т.к для практического использования при подключении РК-КНГМД и DD14 приходилось снижать кварц до 22 МГЦ, т.к в РК86 ОЗУ без буферов и шина не допускает лишней нагрузки, и с периферией РК не тянет повышенных частот.

Кстати, буфера на шине адреса вредят турбированию, если дешифраторы В/У и ПЗУ подключены после буферов, т.к тогда чип селекты укорачиваются. Именно поэтому ОРИОН хреново турбируется.

TomaTLAB
17.03.2018, 03:08
Кстати, буфера на шине адреса вредят турбированию, если дешифраторы В/У и ПЗУ подключены после буферов, т.к тогда чип селекты укорачиваются.
Щито? Если уж оверклочить, грязнохаково, ктож мешает CS'ы протянуть через пару-тройку гейтов? спичковая жаба?
Тьфу! не CS'ы, а стробы. Нихонцы вон, ничуть не смущались. Причем на штатной частоте. Там развесисто получилось у них, да. Половина буферирована, половина нет.
Но их там понятно, невидимая нога рынка пинала 6)

freddy
17.03.2018, 06:13
К стати ВК38 у меня нет. Все результаты получены с ВК28. Радиаторов никаких не надо. Может работать целыми днями.
CS-ы формируются и так раньше чем системный контроллер выдает RD,WR, IOWR,IORD. Память 70нс, ей вобще пофиг ширина управляющих сигналов, 8080 силно медленный для нее. Он сильно медленный даже для винта ;)

Xrust
17.03.2018, 10:36
freddy, все-таки какая емкость C1? При включении самосброс стабильно работает?

barsik
17.03.2018, 11:15
Радиаторов никаких не надо
В радиаторе нет необходимости, если можно палец прижать к микросхеме и удерживать без напряжения силы воли и получения ожога 1-й степени.

То, что не сбоит при обдуве (сквозняком) не значит, что в закрытом корпусе не перегреется. В Векторе КР580 всего на 3 МГЦ, но даже с радиатором перегревается и глючит. В Корвете в замкнутом корпусе и на процессоре с тактом всего 2.5 МГЦ и на 556 РТ2 стояли радиаторы и они отнюдь не были лишними (в Корвете очень часто дохли именно РТ2). От перегрева сокращается срок службы и летом при 30-ти градусной жаре КР580 на 3.55 МГЦ без радиатора точно сдохнет.

freddy
17.03.2018, 11:58
С1 на 0,1 мкф. Его номинал не критичен, влияет на задержку запуска. Можете ставить больше. R1 тоже можно другой.
Главное чтобы время задержки цепи R1C1 было не меньше нескольких десятков мс. Все зависит от БП, на сколько он способен быстро войти в режим.

Так выглядела плата сегодня до подачи питания...
надеюсь питание еще не было подано?


и летом при 30-ти градусной жаре КР580 на 3.55 МГЦ без радиатора точно сдохнет.
В Одессе бывает и больше 30. Не дохнет, уже больше полгода. Че делать? В духовке тестировать?

Xrust
17.03.2018, 12:05
надеюсь питание еще не было подано?

Сохраним интригу до завтра :)

ALS
17.03.2018, 12:47
Если уж возникают такие проблемы с охлаждением разогнанных чипов, то я бы поставил 60мм вентилятор , подав на него 5-7 вольт.
Будет вращаться абсолютно бесшумно и при этом обеспечит достаточную для охлаждения конвекцию воздуха.
Чессгря, не понимаю, что останавливает сейчас проводить подобные опыты с охлаждением. Ладно там, 30 лет назад не было достаточно мелких и тихих кулеров, но сейчас они иногда устанавливаются даже в звуковоспроизводящую аппаратуру и никто особо не комплексует по этому поводу.

MM
17.03.2018, 14:35
Че делать? В духовке тестировать?
Тепловентилятором - для быта сойдет. Использовать термопару ( от китайского мультиметра ) - измерять температуру платы.
Для серьезных испытаний - да, термошкаф. Или нерабочий холодильник с пристроенным тепловентилятором и автоматическим контролем температуры, при этом комп тестируется с закрытым корпусом.

TomaTLAB
17.03.2018, 17:03
В Корвете в замкнутом корпусе и на процессоре с тактом всего 2.5 МГЦ... ...радиатор еле теплый. А греются там действительно РТ-шки, 132ру4 АЦЗУ и пара микрух 531-й серии.

freddy
17.03.2018, 17:21
Вышла новая версия cp/m , ревизия f.
Отличия от ревизии а:
-Теперь доступны 4 диска по 8Мб, при этом TPA не уменьшился
-Улучшен алгоритм логической адресации и смены дисков.
-Оптимизирован форматер, теперь формат 4-х дисков занимает меньше 1с.
-Оптимизирована горячая перезагрузка
-Поддерживаются все 256 символов ASCII.
64652 качаем
В общем все стало только лучше. Ставить рекомендую этот вариант.

freddy
18.03.2018, 02:57
Xrust, если будете включать, как на фото, переверните пожалуйста ВК28 ключом вниз, иначе скорее всего получите КЗ и дырку в микросхеме. Также запаяйте R4, иначе на шинах будет тишина.

Xrust
18.03.2018, 11:09
Xrust, если будете включать, как на фото, переверните пожалуйста ВК28 ключом вниз, иначе скорее всего получите КЗ и дырку в микросхеме.
Не успеет. У меня реакция хорошая :) Картинку удалил, а то поставит кто-нибудь так же...

Также запаяйте R4, иначе на шинах будет тишина.
Точно, я его не заметил.
Вроде собрал и подключил. Не задымилось и такты с генераторов идут правильные. Детали все заведомо исправные. Там на консоли скорость 9600 стоит? Контакты надо замкнуть какие-то? Что-то приглашения не вижу. Или там кабель нуль модемный нужен? У меня простой.

freddy
18.03.2018, 11:27
нульмодемный е-сно, c аппаратным управлением потока

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


Контакты надо замкнуть какие-то?
Это в схеме смотрите сигналы RTS/CTS, я их по номерам не помню.

Проверьте, есть ли сигналы с выходов U13, устанавливается ли в 1 U11A

Xrust
18.03.2018, 15:44
Как не хватает спикера, чтоб попищал радостно. Можно в монитор добавить, и пищалку на выход таймера повесить :)
Завтра кабель сделаю и продолжу проверять. Сейчас на работе.

Xrust
19.03.2018, 13:51
freddy, с таймера U13 выходит 184Гц.

64681

Вот что происходит на триггере при включении и последующем нажатии reset. Иголка на Q - это видимо момент подачи питания.

A_AVL
19.03.2018, 14:38
Таймер не инициализирован. У меня было тоже самое.
Процесс запуска относительно сложен - после старта загрузчик копирует монитор в U7 в область ОЗУ F800-> . Затем происходит переход на F800. Далее уже монитор отключает ПЗУ с адреса 0...7fff и включает ОЗУ U6.
Соответственно, это все нужно проверять.

Для общего пуска и какой-никакой уверенности в процессоре/ВК38/шинных формирователях делал вырождение монитора в просто исключение переброса триггера, инициализацию таймера/ВВ51 и бесконечную посылку в порт консоли символа ">". После правки пяти-шести КЗ и замены процессора - код из ПЗУ начал выполняться, таймер нормально инициализировался и символа пошли в консоль.
На выходах таймера должна быть частота 153600Гц.

Но что-то еще есть. Монитор не стартует. Нужно писать тесты.
Для начала забейте ПЗУ нулями, а в конце запишите C3 00 00 - на адресных линиях соответствующих объёму ПЗУ должен быть "меандр" - ноль будет четкий, а единица - с провалами. Это нормально.На остальных - строго ноль.

freddy
19.03.2018, 15:34
A_AVL, замкните RTS+CTS на разъеме, посмотрите осциллографом что будет на TXD, если с терминала слать все время 'Enter' (CR)
для упрощения подключайте только TXD,RXD
Таймер инициализирован, значит машина рабочая, там больше нет препятствий. Проверять ВВ51 и преобразователь уровня.


Xrust, Проверять нужно КЗ на шинах, правильность монтажа. Машина не стартует. Как писали, забить для начала ПЗУ 00, в конце JMP 0.
Добиться меандра адресах. На ОЗУ, ВВ51, ВИ53 можно пока не обращать внимания и снять.

A_AVL
19.03.2018, 15:55
freddy, При попытке запуска монитора из ОЗУ инициализации таймера нет. Если инициализировать из ПЗУ - работает. Где-то явно очередная сопля сидит. Буду разбираться.

freddy
19.03.2018, 17:52
шина данных, системный контроллер, процессор, таймер работают. Посмотрите буфер адресов, сняв процессор, на разрядах по очереди устанавливайте 0/1.
Смотрите чтоб на соответствующем выходе было то что на входе и не появлялось на других выходах. По симптомам не рабочие старшие адреса

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

Может тестовую утилиту выпустить? Машина по идее станет более популярна

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

С сегодняшнего дня все обновления будут дублироваться в 1 посте, все самое свежее.

Xrust
19.03.2018, 17:59
Вынул все микросхемы памяти и подтянул шину данных к земле через резисторы 10кОм. На шине адреса четкий перебор, на шине данных нули.
Голосую за тестовую прошивку!
Есть сомнение в микросхемах ОЗУ, т.к. я их проверял только в MiniPRO. В реальном устройстве не могу проверить. Остальные компоненты, кроме таймера, ПЗУ и мелкой логики, проверены на рабочей плате.
....
Так, на D0 какой-то мусор присутствует...
...
ТМ2 заменил - вроде пропал мусор. Попробую поставить все микросхемы на место.
...
64688
Вот сигналы на /CS и /OE ПЗУ после сброса. Вроде все правильно. По шине данных какие-то данные бегают. Таймер по-прежнему не подает признаков жизни.

A_AVL
19.03.2018, 22:28
Xrust, Если чуть поофтопить, MINIPRO ж вроде логику умеет тестировать? Не пробовали? Думаю купить себе такой.

Если по вышевыложенным сигналам - снимите такую же + добавьте ешё сигнал выборки U7 (20 нога) и сигнал ~MW (27 нога). Тогда точно можно будет видеть, что процессор работает как надо - там должны быть импульсы записи в ОЗУ.
Ещё, в ПЗУ зашит файл rom.bin?

Xrust
19.03.2018, 23:45
1. Проверял, но вот триггер неисправным оказался. Я не знаю какой алгоритм проверки у минипро. Возможно в статике микросхема работоспособна, а при высоких частотах появляются глюки.
2. Завтра сделаю.
3. Естественно.

Xrust
20.03.2018, 20:08
Надо что-то делать с панелькой ПЗУ. Контакт в ней пропадает. Буду перепаивать.

Xrust
22.03.2018, 17:30
freddy, а C12 - то неправильно припаян.

freddy
22.03.2018, 18:08
Я тут программу для отладки написал. Воспользуйтесь инструкцией внутри.
64724

Xrust
22.03.2018, 20:37
freddy,
Вот так происходит запуск.
64727

На A0 как будто все в порядке. Но как только нажимаю кнопку на D0, происходит следующее:
64728

Я правильно понимаю, что на A2 не все в порядке?

OrionExt
22.03.2018, 21:18
Я по-другому проверял после сброса. Зацепил анализатор на шину данных. Зажал сброс -> Вкл. запись -> Отпустил сброс -> 5 сек записи -> Выкл. запись. Потом проанализировал и убедился что первые десяток команд программы отработали корректно.

Естественно программа должна вначале работать только из ПЗУ.

freddy
23.03.2018, 01:16
Я правильно понимаю, что на A2 не все в порядке?
Видно, что 1 одновременно и на А1 и на А2 в момент ~MW. Грустно, что самые ходовые разряды не исправны
поищите ошибки в младших 6-ти адресах, возможно программа выполняется не правильно.

Xrust
23.03.2018, 20:26
freddy, нашел соплю между DB2 и DB5. Плата заработала.

freddy
24.03.2018, 02:53
мои поздравления!

freddy
28.03.2018, 14:51
Смотрю я на бэкплейны ISA, смотрю и еще смотрю... не дает покоя мысль, что зря делал кросс-плату под коннекторы IDC-40. Нужно было делать под стандартную шину ISA-8. Тогда у меня совсем не было ISA коннекторов, а теперь появилась целая пачка... жаль, что поздно. А так бы была у меня стандартная шина со всеми вытекающими плюшками (типа ISA видаки, платы расширения от PC и все такое). Это я так, написал лишь бы написать.

rw6hrm
28.03.2018, 18:27
Смотрю я на бэкплейны ISA
...надо было сначала на шину S-100 посмотреть ( http://www.s100computers.com/ ), все бы вопросы сразу отпали ;)
Особенно вот эту страничку специально для тех, кто всё делает с нуля, http://www.s100computers.com/Cards%20For%20Sale.htm Нет, не в качестве покупки, упаси Дог ;), а направления мыслей для.

Xrust
28.03.2018, 20:34
Смотрю я на бэкплейны ISA, смотрю и еще смотрю... не дает покоя мысль, что зря делал кросс-плату под коннекторы IDC-40. Нужно было делать под стандартную шину ISA-8. Тогда у меня совсем не было ISA коннекторов, а теперь появилась целая пачка... жаль, что поздно. А так бы была у меня стандартная шина со всеми вытекающими плюшками (типа ISA видаки, платы расширения от PC и все такое). Это я так, написал лишь бы написать.

Маловато контактов в IDC-40. Расширение будем стандартизировать?

Voxel
28.03.2018, 20:48
Совершенно не нравится идея из бутерброда плат.

Xrust
29.03.2018, 14:32
Voxel, тут как бы сама идея такого компа - открытая архитектура, чтобы каждый желающий мог добавить что-то свое. Вряд ли кто-то захочет делать "вещь в себе".

freddy
29.03.2018, 14:42
...надо было сначала на шину S-100 посмотреть
а зачем мне s100? под s100 у меня нет никаких карт, и достать их сейчас трудно. Сам производить карты под s100 не буду, сильно она не удобна, много нужно золота на контакты. Под ISA у меня много чего, ящик карт от PC, а может и два ящика. И не только у меня, а и у многих читателей этой ветки наберется ящичек карт от PC.

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


Маловато контактов в IDC-40. Расширение будем стандартизировать?
напишите каких сигналов не хватает.

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


Совершенно не нравится идея из бутерброда плат.
модульность = универсальность.
Если мне нужно, к примеру, IDE и FDD, то это не значит, что это нужно всем. В общем идеология такая же как в PC.

Xrust
29.03.2018, 14:43
напишите каких сигналов не хватает.
Прерывания, ПДП. Возможно, что-то еще.
Собственно, ISA-8 вполне подойдет.

freddy
29.03.2018, 15:08
прерывания и ПДП изначально не заложены были. Ну я понял. Тогда нужно отдельной платой ПДП и прерывания, а с нее уже вывести сигналы IRQ, DRQ, DACK, AEN на отдельный коннектор, с которого смогут брать эти сигналы другие платы расширения.

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

можно еще один IDC-40 рядом поставить :)

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

Я то его хотел сделать проще полезнее и лучше Радио-86РК. С прерываниями, ПДП и шиной ISA это не получилось бы. Вышла бы машина класса PC только на 8080.

Xrust
29.03.2018, 15:20
прерывания и ПДП изначально не заложены были. Ну я понял. Тогда нужно отдельной платой ПДП и прерывания, а с нее уже вывести сигналы IRQ, DRQ, DACK, AEN на отдельный коннектор, с которого смогут брать эти сигналы другие платы расширения.

Да! Именно это я и предлагал "стандартизировать". Впрочем, можно другой вариант - плату второй версии, где эти фичи предусмотрены изначально.
К сожалению, при всех достоинствах краевых разъемов, я все-таки их противник. Во-первых у меня нет подходящих макеток, чтобы без переделок использовать их с краевым разъемом. Во-вторых сами разъемы не могу найти по доступной цене. Вот IDC доступны по приемлемой цене и достаточно удобны.

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


Я то его хотел сделать проще полезнее и лучше Радио-86РК. С прерываниями, ПДП и шиной ISA это не получилось бы. Вышла бы машина класса PC только на 8080.
Это получилось! Вот только с расширяемостью не все хорошо.

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

64818
Вот что получилось на данный момент. К сожалению, HDD контроллер вышел "оппозитным".

freddy
29.03.2018, 15:29
HDD контроллер вышел "оппозитным".
Коннектор шины должен быть с другой стороны платы IDE, перепаяйте.

Voxel
29.03.2018, 15:29
Расширения и их возможность конечно нужны, я про вариант где основная плата в 100 разъемов и в нее все тыкается, не нравится это. У меня ZX-NEXT такой, я его трогать боюсь, что все отвалится. Пару слотов для расширения вполне хватит, а в них не проблема "слотовый" (не знаю как правильно) расширитель воткнуть от старых PC.

И конечно хорошо бы учесть людей с платой первой версии, что бы и у меня была возможность воткнуть дополнительные контроллеры не МГТФом.

freddy
29.03.2018, 15:32
Во-вторых сами разъемы не могу найти по доступной цене.
Я брал на taobao по 3,5юаня/шт. Учитывая, что они позолоченые, цена более чем адекватная.

Xrust
29.03.2018, 15:59
Коннектор шины должен быть с другой стороны платы IDE, перепаяйте.

Но тогда по-моему разъем получится перевернутым?

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


Я брал на taobao по 3,5юаня/шт. Учитывая, что они позолоченые, цена более чем адекватная.

Поделитесь ссылочкой.

freddy
29.03.2018, 16:59
Но тогда по-моему разъем получится перевернутым?
как скажете. Если воткнуть в материнскую плату, работает?



Поделитесь ссылочкой.
https://item.taobao.com/item.htm?spm=a230r.1.14.26.222d3c96CdvWhk&id=564427406698&ns=1&abbucket=7#detail

Xrust
29.03.2018, 17:05
как скажете. Если воткнуть в материнскую плату, работает?
Диск еще не подключал. Сейчас собираю второй кабель для связи с компом. А так мама работает. Я долго перед этим думал как же его правильно подключить. Вышло, что если через плату-переходник, то только так. Хотя я вчера после ночной смены был, может и сглупил.

freddy
29.03.2018, 17:25
С самого начала задумано, что на материнской плате будет угловой конектор со стороны монтажа, на кросс-плате будут одинаковые прямые коннекторы со стороны деталей. На платах расширения будут угловые коннекторы со стороны монтажа. Но когда я собрал материнскую плату, у меня еще не было углового коннектора и я запаял прямой со стороны деталей. Соответственно в кросс плате у меня первый коннектор теперь будет угловой со стороны монтажа, остальные - прямые со стороны деталей.

Xrust
29.03.2018, 17:43
freddy, у меня все на кросс плате прямые, а на маме и контроллере угловые. Если плату контроллера перевернуть другой стороной, чтобы детали были как на маме, то контакты совпадать не будут. Элементарно питание + и - поменяется местами. Если же развернуть как я сделал, то контакты совпадают, а платы "затылком" друг к другу стоят. Выходит, что неправильно разъемы разведены. Ну или я туплю.
Еще, практика показала, что необходимы ключи на разъеме. Иначе легко вставить со смещением и не заметить.

freddy
29.03.2018, 17:58
Выходит, что неправильно разъемы разведены. Ну или я туплю.
Или одно из двух. :v2_dizzy_snowman:
Это мне начинает напоминать Петьку, Василия Ивановича, радиостанцию на бронепоезде...
Делайте как считаете нужным

OrionExt
29.03.2018, 18:39
По мне если уже и делать уникальный системный разъем, то нужно смотреть в сторону CPU. И обеспечить на этой шине все сигналы для нормальной работы всего комплекта периферии поддерживаемый конкретным CPU. Если не ошибаюсь, то шина S100 это все и реализует для комплекта 80хх с большим избытком.

С другой стороны можно не заморачиваться. Как пример шина MSX. В ней отсутствует многие вкусные сигналы с комплекта Z80. И нечего до сих пор здравствует и процветает:)


Или одно из двух. :v2_dizzy_snowman:Это мне начинает напоминать Петьку, Василия Ивановича, радиостанцию на бронепоезде...Делайте как считаете нужным
Не ну таки нужен полный комплект документашки. Понятно что для хобби этим заморачиваться никто не будет. Поэтому так и выходит. То разъем верх ногами запаяют, то еще что. Это нормально и анекдоты тут наверное не очень в тему;)

freddy
29.03.2018, 18:52
OrionExt, уже давно все сделано. Есть готовая машина, все что надо выведено и буферизировано.

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


Это нормально и анекдоты тут наверное не очень в тему
А что в тему? Разъемы обсуждать? Так я не в радиокружке и не в доме пионеров и не разу не педагог.

OrionExt
29.03.2018, 18:58
А что в тему? Разъемы обсуждать? Так я не в радиокружке и не в доме пионеров и не разу не педагог.
Этот форум и есть как бы такой радиокружек, на современный лад:) Я вот тоже не педагог и может мысли излагаю криво, и нечего этим не переймаюсь. Главное интерес общий:)

freddy
29.03.2018, 20:13
Главное интерес общий
Согласен. Я вот вобще мысли излагать не умею, поэтому иногда фото выкладываю.

Как то у моей машины мало адресов под ISA. Положено иметь 1Мб. Подумываю расширить до 1Мб и сделать изолированным от адресного пространства процессора. Т.е. как бы мне важнее всего 32кб B800:0000-B800:7FFF, ну и порты ввода вывода 100-3FF. Кагбы IO-space тоже придется расщирить. Хочу, чтоб любимый видеочип TVGA9000i-3 завелся на i8080

freddy
30.03.2018, 02:21
Чего то у меня непонятки c DMA. С одной стороны это нужная вещь, с другой стороны ну его... Сильно усложняет шину, используется только контроллером дисковода и всякими саундбластерами. С контроллером дисковода понятно, что он не нужен, есть загрузка через RS-232, а хранить на дискетах, как то не то, когда подключен винт. С саундбластером я думаю, что он тоже не нужен, машина не игровая и не мультимедийная ни разу. Выходит что DMA не нужно. Точно осознал, что нужен KBC под PS/2 типа 8042 и прочих от старых материнок, PIC i8259, расширитель адресного пространства 3хИР82, 1хЛН1, 1хИД7.

И конечно хорошо бы учесть людей с платой первой версии, что бы и у меня была возможность воткнуть дополнительные контроллеры не МГТФом.
Новой версии материнской платы не надо. Я вот подумываю, что будет простая крос-плата с коннекторами IDC, и более сложная с IDC и 2-3 ISA.
Но я ж это просто так написал, лишь бы написать. :)

Xrust
30.03.2018, 08:30
Точно осознал, что нужен KBC под PS/2 типа 8042
В принципе можно и без него обойтись. Скан коды клавиатуры в состоянии прочитать ВВ51.


Чего то у меня непонятки c DMA. С одной стороны это нужная вещь, с другой стороны ну его...
Так-то да. Но если использовать КР1810ВТ37... Гораздо практичнее, чем ВТ57. Может блоки в памяти перекидывать.


С саундбластером я думаю, что он тоже не нужен, машина не игровая и не мультимедийная ни разу.
Наверное у вас просто нет isa-8 саундбластера ;)

freddy
30.03.2018, 16:13
В принципе можно и без него обойтись. Скан коды клавиатуры в состоянии прочитать ВВ51.
Ага, а писать в клавиатуру он в состоянии?


Наверное у вас просто нет isa-8 саундбластера
Есть у меня даже GUS ACE. К чему это сказано?

Xrust
30.03.2018, 18:11
Ага, а писать в клавиатуру он в состоянии?
Нет, с записью вышел облом. Как ни дергал ноги у ВВ51, удалось послать только FF (сброс). Но я не сдался еще окончательно. Плата, на которой я упражнялся с клавиатурой, лежит и ждет своего часа.


Есть у меня даже GUS ACE
А она разве isa-8?



К чему это сказано?
А зачем тогда VGA ставить если комп нифига не мультимедийный? Я и подумал грешным делом, что Трайдент любимый просто потому, что он есть, а Гусь есть, но не восьмибитный ;)

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

freddy, у меня почему-то винт не форматируется

HDD Format Utility v1.0 (c)Freddy 2017
Formatting drive A:
и на этом висит. Винт сигейт 40Гб. Рабочий, проверял. Перемычка "мастер" стоит. Пробовал CF адаптер с картой на 32Мб вместо винта подключать - там процедура успешно завершилась. Но потом с установкой системы что-то не так пошло.

freddy
31.03.2018, 01:17
Дорогу осилит идущий. ;)

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


Как ни дергал ноги у ВВ51, удалось послать только FF (сброс).
Зачем колхозные решения? есть на это KBC


А она разве isa-8?
Так без разницы, всеравно для этой машины звуковые карты бесполезны и DMA не будет у нее.

А зачем тогда VGA ставить если комп нифига не мультимедийный?
хорошо, не буду, и в терминале развертку под TV стандарт перенастрою.
Да... SVGA-карточка ему не нужна, ISA соответственно тоже... Слаб он сильно.

Кто то в курилке радиокота писал что 8080 можно разогнать на 5 и более Мгц :)
http://radiokot.ru/forum/viewtopic.php?p=399064&sid=8248d75b4a9c8fffcd8065d837be3171#p399064
вот здесь почитайте сообщение от "Секретный кот"

Xrust
31.03.2018, 11:26
Зачем колхозные решения? есть на это KBC
У кого есть, у кого нет :(

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


Да... SVGA-карточка ему не нужна, ISA соответственно тоже... Слаб он сильно.
Тоже так думаю.

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


Кто то в курилке радиокота писал что 8080 можно разогнать на 5 и более Мгц
Почему бы и нет? Греется только сильно. Надо попробовать с напругой поиграться и с охлаждением. А охлаждать наверное лучше в пластиковом корпусе. Там снизу металл проглядывает. Перевернуть проц вверх ногами и радиатор прицепить.

TomaTLAB
12.04.2018, 19:29
А охлаждать наверное лучше в пластиковом корпусе. Там снизу металл проглядывает.
Это да, так и делали, в принципе. Хотя есть экземпляры где на пузе довольно глубокие впадины от прессформы.
И неизвестно есть ли там вообще эта подложка. Ну наждачку/напильник/фрезерный станок никто не отменял :)

Перевернуть проц вверх ногами и радиатор прицепить.
И ноги ему пообламывать? Не стоит.
При "посадке" в панельку там миллиметра два зазор. Между пузом и панелькой. Если паять на плату то и все три.
Пропихиваем туда полоску люминя/латуни/медяхи и "уши" наверх загибаем.
А если в цанговые (они "жестче") и без поперечин - так туда вообще мелкие радиаторы влезут типа таких (https://www.aliexpress.com/item/New-20pcs-Silver-14x14x6mm-Aluminum-Heat-Sink-Radiator-Heatsink-for-CPU-GPU-Electronic-Chipset-heat-dissipation/32619836287.html?spm=a2g0v.10010108.addToCart.1.ed 262740eMio9L&traffic_analysisId=recommend_2049_1_-1_iswiall&scm=1007.12908.99723.0&pvid=2c9e0585-2980-4682-afe1-1da834d7c63b&tpp=1).
Ну может с некоторым напилингом, да и работать он будет как радиатор неахти, если дырьев под ним в плате не наделать. :)

freddy
17.04.2018, 01:45
Скачайте кто-нибудь архивы из первого поста этой ветки и проверьте. Мне сказали что они все типа битые. Хотя у меня все норм распаковывается.

TomaTLAB
17.04.2018, 08:08
Мне сказали что они все типа битые Трындят. Все скачивается и распаковывается, и открывается.

Xrust
17.04.2018, 14:01
freddy, архивы проверил, все в порядке.
Но вот с контроллером HDD пока результатов нет. Пробовал подключать 2 разных винчестера, отрезал сигнал сброса - пока безрезультатно. После обращения к диску загорается светодиод и не гаснет до выключения питания. Нужна методика проверки. И на фотографии монтажа есть отличия от схемы.

freddy
17.04.2018, 15:33
Нужна методика проверки.
Методика есть. Называется осциллограф и ассемблер. Машина то заработала, значит можно программировать. Для начала проверьте запись и чтение с регистров.
Жесткий диск подключать пока не надо.


И на фотографии монтажа есть отличия от схемы.
и что же там не так?

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

Если с программированием туго, я могу тестер IDE контроллера написать. Голосуйте.

Xrust
17.04.2018, 15:53
Голосуйте.
Я за любой кипишь, кроме голодовки!

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


и что же там не так?
Де-факто резисторов больше, чем в схеме. Точнее - на плате 6, в схеме 3. Вот я и думаю: может что-то не подтянул, что надо было?

freddy
17.04.2018, 16:21
Де-факто резисторов больше, чем в схеме. Точнее - на плате 6, в схеме 3. Вот я и думаю: может что-то не подтянул, что надо было?
У меня на плате сброс жесткого диска отдельно притянут к +. На общий системный сброс не заведено. Вам это не нужно. Еще у меня на светодиод лишний резистор и VCC на U23_11 подано через резистор. Поэтому резисторов больше, но это все не принципиально.

OrionExt
17.04.2018, 19:25
Нужна методика проверки.
IDE и мелко регистры, которые IDE шевелят - хитрая штука. Методика тут может не прокатить.

Что делать?) Проверить монтаж тщательно. Попробовать разные винты (СФ-карты). Если не … И потом шевелить разработчика.

Xrust
17.04.2018, 20:26
Проверить монтаж тщательно
Этим сейчас и занимаюсь. Пришлось уже 2 раза ИР82 на маме менять. Причины каждый раз разные, но всегда в итоге доставалось почему-то AB0.

OrionExt
17.04.2018, 21:14
Подумалось. Там можно на стороне IDE навесить просто резисторов (на +/-) и просто их почитать (только почитать и выходной регистр в /ОЕ - нафиг).

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

Да это есть большая радость. Если навешанная штука не конфликтует с тем что работает (модульный-комп) Бо, возможны всякие не хорошие штуки (-10у.е)

freddy
18.04.2018, 14:46
На этой машине проверено 5кг жестких дисков, все ок. Работать будут любые на 63 сектора на трек. Ищите ошибки.


Пришлось уже 2 раза ИР82 на маме менять. Причины каждый раз разные, но всегда в итоге доставалось почему-то AB0.
Жестко :))) ИР82 спалить нужен талант. Дважды??? :eek: Более дубового буфера наверно не бывает. ВА86 и то слабее.

1 человек "за программу тестирования IDE" уже есть.

Voxel
18.04.2018, 15:18
1 человек "за программу тестирования IDE" уже есть.

Так же присоединяюсь)

Shumadan
18.04.2018, 16:12
Так же присоединяюсь)

Я как потенциальный сборщик, поддержу

freddy
18.04.2018, 16:28
Если не … И потом шевелить разработчика.
Толку то шевелить. Делал по стандарту ATA-1, вот ссылка:
http://www.t13.org/documents/UploadedDocuments/project/d0791r4c-ATA-1.pdf
Все работает в своем нативном 16-ти битном режиме, как в IBM AT. И по-другому не заработает.

3 человека за тест IDE, ну ок. Сделаю в пятницу ночью.

freddy
19.04.2018, 14:51
Нашлось немного свободного времени.
Сделал тестер контроллера IDE. Инструкция в архиве. Также обновил 1й пост.
65066
Запускается командой J100.

Voxel
30.04.2018, 13:41
И так... Компьютер собрал, так как у меня нет "кроваток" все паял сразу на плату. Как и предыдущий сборщик не правильно впаял ВК28, хорошо не запускал. После выпайки ВК пришлось выпаивать кроватку со старых плат так, как боялся что убил ее, но живучая "сопака" оказалась)))

По сборке: Сама плата собирается за час два, но допаивание мелочевки это целая эпопея. В схеме сброса поставил электролит на 4.7 мкф по аналогии с радио 86рк. Диоды шотки заменил на SR160. Резисторы были только на 3.3 ком, вместо 3 ком, как у автора. Конденсатор электролит рядом с разъемом CON поставил, что под рукой было, на схеме вообще его не нашел. Все конденсаторы на 0.1 мкф.
БП использовал сначала, что под руками валялся на 500 мА, с ним проверил напряжения преобразователей на +12 и -5, но компьютер с ним не завелся, поставил на 2А.

65183

65185

От себя хочу добавить: Очень не хватает схемы монтажа. Долго тупил (возможно это я тугодум) какой нуль-модемный кабель нужно.

65184

Программа для связи https://www.emtec.com/zoc/ в настройках поменял только скорость на 9600.

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

freddy
30.04.2018, 18:39
От себя хочу добавить: Очень не хватает схемы монтажа.
Принципиальная схема достаточно проста. Нет смысла заморачиваться с рисованием.


Долго тупил (возможно это я тугодум) какой нуль-модемный кабель нужно.
Нульмодемный кабель стандартный.

На фото электролит С12 запаян в неправильной полярности.



Хотелось бы услышать от автора, как собирать контроллер винчестера, что куда нужно допаять и где что отрезать.
перерезать дорожки со стороны деталей на 11-е выводы ИР82. напаять ЛН1, согласно схемы поверх ЛЛ1. К 11-м выводам ИР82 припаяться проводками.
См. на фото выложенное ранее, но хостинг сейчас глючит и его возможно не видно.

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

разъем шины паяется со стороны монтажа.

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

Прежде всего, после сборки, прогоните контроллер на тесте. Сброс IDE проще сделать от локальной RC-цепочки, там на плате под это есть место. Но можно и по схеме, через 1-й вывод шины притянуть системный ~RES. Питание винта и компьютера от разный БП не рекомендую. Найдите БП, выдающий +5 и +12 В.

TomaTLAB
30.04.2018, 19:12
Резисторы были только на 3.3 ком, вместо 3 ком, как у автора.
Вот Вы не первый, кто задается этим "глупым" вопросом :)
В цифровых (а в микропроцессорных в особенности) схемах резисторы за ооочень редким исключением можно смело ставить из диапазона от в два раза меньше до в два раза больше от указанного на схеме. Вот тут, например, всего два резистора которые желательно в ~20% "уложить" - в задающем генераторе.
Обвязку MC34063 не рассматриваем, это не цифровая часть. Но тоже можно пошевелить немного, но уже парами, сохраняя соотношение. :)

Voxel
30.04.2018, 23:00
На фото электролит С12 запаян в неправильной полярности.

Хм... Точно?? Вроде, как у вас на фото, минусом к земле...

freddy
01.05.2018, 03:26
Хм... Точно?? Вроде, как у вас на фото, минусом к земле...
См. схему. На моем фото не правильно.

Voxel
01.05.2018, 13:58
Сброс IDE проще сделать от локальной RC-цепочки

А что куда запаять?? и какие номиналы?

freddy
01.05.2018, 18:57
А что куда запаять?? и какие номиналы?
в 210 посту есть ссылка на стандарт. Берем его, читаем, о, нашлось то что нужно:
" 6.3.14 RESET- (Drive reset)
This signal from the host system shall be asserted for at least 25 usec after
voltage levels have stabilized..."

К этим 25мксек добавляем еще время на запуск своего БП, С ЗАПАСОМ!
резистор и конденсатор выбираем из имеющихся, чтобы постоянная времени цепи была не меньше необходимого. Резисторы более 10к брать не стоит, этот сигнал через шлейф идет, который шумит.
Ставить вот сюда:
65191

обведено красным. Сверху резистор и разрядный диод ставятся друг на друга.

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

5-10мс будет норм

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

Есть еще лучший вариант. На лишних инверторах ЛН1 можно собрать триггер Шмитта, формировать сброс им. Он не будет чувствительным к шлейфу и помехам.

Voxel
01.05.2018, 21:20
Спасибо)

Поставил резистор на 1 ком и конденсатор на 10мкф х 10в. Как я понял должно быть в районе 10мс с такой цепочкой.
Винчестер Conner CFS425A 425 MB

CP/M установил. Как я понимаю для передачи файлов нужно еще один нуль-модемный кабель в COM порт?

65192 65193

Резистор на светодиод надо убрать, на фото смотрел и поставил.

freddy
02.05.2018, 12:43
Как я понял должно быть в районе 10мс с такой цепочкой.
все правильно.

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

CP/M установил. Как я понимаю для передачи файлов нужно еще один нуль-модемный кабель в COM порт?
Все отлично. Вы уже почти у цели. Нужен еще один нульмодемный кабель. Я пользуюсь программой kermit , она не может передавать файлы через порт терминала. Другого решения я пока что не искал.
Загружаем кермит.хекс хитрым способом, по инструкции. Выбираем порт TTY. Далее копируем кермит.ком на диск. Оно может глючить и с первого раза не сработать, не обращаем внимания, все получается. Потом стартуем CP/M и запускаем кермит уже оттуда с диска, и все работает ок. Кермит можно настроить под себя по мануалу. Со стороны PC любая терминальная программа с поддержкой кермита, ZOC например хорошо может. Слишком много файлов одной пачкой не передавайте, у кермита есть глючок со скоростью на этот случай.

Voxel
03.05.2018, 10:48
И так... Разобрался как передавать файлы. Закинул на диск базу CP/M файлов, что в сети нашел.

Инструкция: http://www.cpm.z80.de/manuals/cpm22-m.pdf
Сайт: http://www.cpm.z80.de/
Файлы от сюда: http://www.cpm.z80.de/download/cpm22-b.zip

И вот ни как у меня ED.COM не работает. Либо я туплю, либо... В итоге запуска и перезапуска этого файла, случилось странное... Пишу DIR а диск пустой((( пока не понял в чем косяк.

На текущий момент хотелось бы узнать следующее:

1. Какой софт использовать для написания и компиляции на ASMе под Windows?
2. Как это возможно прогнать(запустить) не на реальной машине?
3. Как компилировать под CP/M из под Windows?
4. Какой редактор использовать уже на реальной машине в связке с ASM.COM и DDT.COM?

Добавлю ссылку на книгу по cp/m: http://files.nehudlit.ru/books/013/operatsionnaya-sistema-cp-m.djvu

marinovsoft
03.05.2018, 11:29
1. Какой софт использовать для написания и компиляции на ASMе под Windows?
TASM от Squak Valley Software . Гуглить версию 3.2 для win32.
Еще вариант: http://sensi.org/~svo/i8080/

2. Как это возможно прогнать(запустить) не на реальной машине?
Есть эмуляторы cp/m, емнип файл именуется либо cpm.exe либо cpm80.exe, Как вариант, вообще взять эмулятор Корвета и запустить в нем :)

3. Как компилировать под CP/M из под Windows?
Ну, есть кросс-компиляторы, например компилятор си от Vinxru https://github.com/alemorf/retro/tree/master/c8080 (пункт 1 в комплекте). Библиотеки, правда, нет - придется писать самому. Или вот Manx Aztec C80, у него и библиотека есть, но exe-файлы там досовские.

freddy
03.05.2018, 15:06
4. Какой редактор использовать уже на реальной машине в связке с ASM.COM и DDT.COM?
"WORDSTAR 3.0" попробуйте, вдруг понравится. Мне он кажется более удобным, чем "ED".

Для пунктов 2,3 есть ооооочень много разных эмуляторов, запускалок CP/M софта под вин32. Я пользуюсь эмулятором от b2m.
А для п.1 есть вобще бесчисленное множество ассемблеров, многие поддерживают табличную настройку. Можно свои мнемоники и макросы делать.
Свой вариант я где то в середине ветки приводил и ассемблер выкладывал.

rw6hrm
03.05.2018, 17:19
Лучше Wordstar4.0 патченый под 8 бит.

marinovsoft
09.05.2018, 12:04
У Vinxru есть еще один вариант компилятора си, совмещенного с ассемблерами 8080 и pdp11 https://github.com/alemorf/pdp11asm Точнее даже наоборот, этол ассемблер со встроенным компилятором си :)
Собрал под винду https://ru.files.fm/u/7y8wcm9p#_

Исходник должен иметь примерно такой вид:


.i8080
org 100h
entry:
jmp main
{
void main() {
uint8_t a[1];
a[0] = 0;
}
}


Есть еще один вариант компилятора си того же авторства, умеет некоторые оптимизации, ищется на просторах инета вместе с исходниками по имени "C8080-master.zip", например здесь:
https://github.com/andykarpov/radio-86rk-sdcard/blob/master/firmware/src/orig/C8080-master.zip

Error404
09.05.2018, 15:10
Версию от Vinxru можно условно называть C, а скорее С--, т.к. ЕМНИП нормальную обработку стека он так и не допилил (переменные на стеке, рекурсивные вызовы, вот это всё).
Что до инструментария, то для разработки под WIN я использую эмулятор CPM от уважаемого Keiji Murakami (hp.vector.co.jp/authors/VA000084/) который удобен тем, что консольный и работает с локальными файлами на файловой системе Винды, а не образами. Т.е. просто накидал в каталог Винды файлов и выполняешь любую команду как если бы сидел в CP/M просто добавив в начале CPM. Это удобно автоматизируется например в make которые есть для Винды (GUI-шные эмуляторы или работающие с образами дисков а не отдельными файлами так не подвяжешь)

Пример команд для компиляции на С:

cpm era libff.lib
cpm era libscr.lib
cpm era libmenu.lib

cpm c -o -x -c screen.c
cpm c -o -x -c windows.c
cpm c -o -x -c controls.c

cpm libr r libscr.lib screen.obj windows.obj controls.obj

cpm c -o -x -c diskio.c
cpm c -o -x -c ff.c
cpm c -o -x -c ffp.c

cpm libr r libff.lib ffp.obj ff.obj diskio.obj

cpm c -o -x -c filemgr.c
cpm c -o -x -c stringz.c
cpm c -o -x -c menu1.c
cpm c -o -x -c menu2.c
cpm c -o -x -c scanFAT.c
cpm c -o -x -c scanCPM.c

cpm libr r libmenu.lib stringz.obj scanFAT.obj scanCPM.obj
cpm libr r libmenu.lib filemgr.obj menu2.obj menu1.obj

cpm c -o -x fat.c -lff -lmenu -lscr


Пример make для С:

# Makefile for UZIX modules

.SUFFIXES: .c .obj .as .lib

CPM = cpm -h
CC = cpm -h c
AS = cpm -h zas
LINK = cpm -h link
LIBR = cpm -h libr
OBJHEX = cpm -h objtohex
M80 = cpm m80n
L80 = cpm l80m
RM = rm
#DEFINES = -DORI_UTIL
#DEFINES = -DORI_UZIX
DEFINES = -DORI_FDISK
CFLAGS = -O -x
ASFLAGS = -N
OBJ_MKFS = md.obj fs.obj dmisc.obj dsk.obj dio.obj dfd.obj dtty.obj sc1.obj data.obj
OBJ_BD = md.obj fs.obj dmisc.obj dsk.obj dio.obj dfd.obj dtty.obj sc1.obj data.obj
OBJ_FSCK = md.obj fs.obj dmisc.obj dsk.obj dio.obj dfd.obj dtty.obj sc1.obj data.obj
OBJ_UCP = md.obj fs.obj dmisc.obj dsk.obj dio.obj dfd.obj dtty.obj sc1.obj sc2.obj XFS.obj ucs.obj data.obj
OBJ_UZIX = md.obj fs.obj dmisc.obj dsk.obj dio.obj dfd.obj dtty.obj sc1.obj sc2.obj sc3.obj pr1.obj pr2.obj swp.obj
OBJ_FDSK = fdisk2.obj fdisk1.obj f_mkfs.obj dsk.obj

.c.obj :
$(CC) $(CFLAGS) $(DEFINES) -c $*.c

.as.obj :
$(AS) $(ASFLAGS) -L$*.lst $*.as

# compiled without optimization (-O) because optimizer spoiling #asm blocks :
md.obj : md.c machdep.orn machdep2.orn
$(CC) $(DEFINES) -x -c md.c

# corecompiled (step-by-step) because no memory for $$EXEC (sc1.c too big)
sc1.obj : sc1.c
$(CPM) CPP -DCPM -DHI_TECH_C -Dz80 $(DEFINES) -I sc1.c CTMP1.TMP
$(CPM) P1 CTMP1.TMP CTMP2.TMP CTMP3.TMP
$(CPM) CGEN CTMP2.TMP CTMP1.TMP
$(CPM) OPTIM CTMP1.TMP CTMP2.TMP
$(CPM) ZAS -X -J -N -osc1.obj CTMP2.TMP
$(RM) CTMP1.TMP CTMP2.TMP

# corecompiled (step-by-step) because no memory for $$EXEC (sc2.c too big)
sc2.obj : sc2.c
$(CPM) CPP -DCPM -DHI_TECH_C -Dz80 $(DEFINES) -I sc2.c CTMP1.TMP
$(CPM) P1 CTMP1.TMP CTMP2.TMP CTMP3.TMP
$(CPM) CGEN CTMP2.TMP CTMP1.TMP
$(CPM) OPTIM CTMP1.TMP CTMP2.TMP
$(CPM) ZAS -X -J -N -osc2.obj CTMP2.TMP
$(RM) CTMP1.TMP CTMP2.TMP

idebdos.com : idebdos.mac
$(M80) idebdos,=idebdos
$(L80) /p:100,idebdos,idebdos/n/e

bd.com : $(OBJ_BD) bd.c
$(CC) $(CFLAGS) $(DEFINES) bd.c $(OBJ_BD)

fsck.com : $(OBJ_FSCK) fsck.c
$(CC) $(CFLAGS) $(DEFINES) fsck.c $(OBJ_FSCK)

mkfs.com : $(OBJ_MKFS) mkfs.c
$(CC) $(CFLAGS) $(DEFINES) mkfs.c $(OBJ_MKFS)

ucp.com : $(OBJ_UCP) ucp.c
$(CC) $(CFLAGS) $(DEFINES) ucp.c $(OBJ_UCP)

uzix.com : $(OBJ_UZIX) uzix.c dispatch.c
$(CC) -x $(DEFINES) uzix.c $(OBJ_UZIX)

fdisk.com : $(OBJ_FDSK) fdisk.c
$(CC) $(CFLAGS) fdisk.c $(OBJ_FDSK)

# set "DEFINES" to "-DORI_UTIL" and do "make clean" before doing "make utils" !
utils : idebdos.com bd.com fsck.com mkfs.com ucp.com

# set "DEFINES" to "-DORI_UZIX" and do "make clean" before doing "make kernel" !
kernel : idebdos.com uzix.com

clean :
$(RM) $(OBJ_UZIX) data.obj XFS.obj ucs.obj bd.obj fsck.obj mkfs.obj ucp.obj uzix.obj F_MKFS.OBJ FDISK.OBJ FDISK1.OBJ FDISK2.OBJ


В качестве ассемблера использую пакет M80/L80 от Микрософт (ИМХО лучший), а редактор - SED (он для VT52 - а какой у вас тип драйвера CRT?) тоже пока ничего лучше не нашел. Это для 8080.

В качестве С использую Hitech C, но это уже для Z80.

Xrust
02.06.2019, 16:21
freddy, BIOS для новой видюхи будет запилен?

freddy
06.06.2019, 20:39
Пока ещё не хватает vt82c42 и i8259 для полного счастья. Видеокарта без всего этого безсмысленна для моего компьютера.

Xrust
07.06.2019, 16:15
freddy, ради этого я даже готов vt82c42 купить. Неужели сбудется мечта и появится комп с прерываниями и нормальной видюхой? Ещё бы и ПДП на общей шине... Да на хорошей печатке с паяльной маской.

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

И да, в данном варианте можно ведь будет не мапить порты на адресное пространство памяти...

freddy
08.06.2019, 18:58
freddy, ради этого я даже готов vt82c42 купить. Неужели сбудется мечта и появится комп с прерываниями и нормальной видюхой? Ещё бы и ПДП на общей шине... Да на хорошей печатке с паяльной маской.
ПДП вещь полезная, знать бы еще, что через него гонять.
Мечта то сбудется когда то, но платы с маской производите сами. Я буду использовать старую плату, остальное будет в шину вставляться.


И да, в данном варианте можно ведь будет не мапить порты на адресное пространство памяти...
конечно. Сюда пойдет другой вариант. И у него будет циклический аппаратный скроллинг экрана. Но для этого видеокарта должна пережить еще несколько эволюций. Текущий макет я трогать уже не буду. Работает и ладно. Маппинг портов в конец окна - это было очень просчитанное и не простое схемотехническое решение, ценность которого так никто и не оценил. Видеокарта это для основной массы сильно сложно ибо вопросы не о том... А как подключить... То интерфейс "не тот", то архитектура материнки "не та". А дальше будет только сложнее.

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

пока нет времени развести плату даже под тот вариант, что есть.

Xrust
08.06.2019, 19:58
пока нет времени развести плату даже под тот вариант, что есть.
Не беда. Если схема будет удачной, кто-нибудь разведет обязательно.


ПДП вещь полезная, знать бы еще, что через него гонять.
Файлы на диск, данные в памяти. Только желательно 1818ВН19 (AM9519) использовать.

ivagor
08.06.2019, 20:30
AM9519
Если речь про DMA, то am9517

Xrust
08.06.2019, 20:56
Точно, перепутал. КР1810ВТ37 - контроллер ПДП и КР1818ВН19 - контроллер прерываний.

freddy
09.06.2019, 14:52
А чего не вн59? Зачем вн19?

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


Не беда. Если схема будет удачной, кто-нибудь разведет обязательно.
Разведите видеокарту

Xrust
09.06.2019, 15:46
А чего не вн59? Зачем вн19?
Да не принципиально. Просто интересно. Валяется у меня такая одна.


Разведите видеокарту
Мысль такая есть. Хочу еще попробовать засунуть схему большей частью в CPLD. Полностью выводов не хватило. Но мне такой вариант без портов и аппаратного скроллинга не очень нравится.

freddy
09.06.2019, 16:00
Но мне такой вариант без портов и аппаратного скроллинга не очень нравится.
вынесете их в наружу, дешифратор на свое усмотрение. Желательно где то туда 80H-AFH. IOWR также синхронизируйте как и WR

Xrust
09.06.2019, 16:22
freddy, попробую. Не могли бы вы в соседней теме для меня "на пальцах" объяснить как видеогенератор с вг75 взаимодействует? Как там растр получается? А то мозги совсем заржавели.

freddy
10.06.2019, 13:30
Напишите в ветку про вг75 более подробно, что не понятно. Я попробую помочь, но объяснить я не умею. Завидую ржавым мозгам. У меня мозг не ржавеет, он с самого начала конструктивно был не предусмотрен и отсутствует.