Важная информация

User Tag List

Страница 6 из 8 ПерваяПервая ... 2345678 ПоследняяПоследняя
Показано с 51 по 60 из 78

Тема: Железо под CP/M-80

  1. #51
    Veteran Аватар для krotan
    Регистрация
    30.08.2010
    Адрес
    Санкт-Петербург
    Сообщений
    1,263
    Спасибо Благодарностей отдано 
    53
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    159 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Главным, и практически единственным достоинством cp/m было то, что что её можно было установить на, практически любом компьютере того времени, она могла настраиваться практически на любое железо, лишь бы:
    - в младших адресах памяти лежало ОЗУ
    - был бы текстовый режим не менее 80x25
    - процессор был i8080 и выше, совместимый
    К сожалению, ZX Spectrum, был чуть ли не единственным компьютером того времени, который не удовлетворял этим параметрам. Плата за такую универсальность была очень дорогая, а именно:
    - нет никаких графических режимов экрана
    - полностью отсутствует цвет
    - полностью отсутствует музыка, звук
    - полностью отсутствует какая-либо память за пределами 64 Кб
    Причем, использовать всё перечисленное было никак нельзя, даже если комп на самом деле это позволял (типа спектрума). Потому что терялось главное и единственное достоинство этой операционки - совместимость, возможность запуска одной и той же программы на любом cp/m-компьютере без какой-либо адаптации!
    Поэтому, не следует восторгаться тому, какие красивые цвета экрана в cp/m на ATM-turbo или какой замечательный музыкальный редактор в cp/m на Скорпе (кажется) - это всё от некомпетентности, криворукости и тараканов в голове! В cp/m доступ к железу производится только через операционку и ни в коем случае не напрямую - это религия!

    Что касается, дискового формата, он выбирается по следующим соображениям.
    Cp/m может работать с дисками, отформатированными на сектора длиной 128, 256, 512 или 1024 байт. От длины сектора зависит ёмкость дискеты, поскольку много места занимают промежутки между секторами. Для дискет DD DS она может быть от 640 до 1024 Кб (полная, неформатированная). То есть, под cp/m в зависимости от длины сектора ёмкость одной и той же дискеты может отличаться почти в два раза! Казалось бы, чем длиннее сектор, тем больше ёмкость дискеты - тем лучше. Но тут следует учесть другой фактор - разброс значения частоты вращения разных дисководов разных компьютеров. Синхронизация частоты данных сектора происходит в момент чтения индекса, а далее производится его чтение (или запись) вслепую с заданной частотой. Чем длиннее сектор, тем больше вероятность, того что за время его чтония синхронизация "убежит" и сектор не будет прочитан. Особенно велика такая вероятность, если диск писался на одном дисководе, а читается на другом. Конечно, можно улучшить качество чтения путём точной настройки частоты вращения всех имеемых дисководов. Но это не панацея, потому что она зависит ёщё от колебаний напряжения питания, влажности воздуха, степени износа дискеты и пр. К тому же, вероятно, вы захотите чтобы записанная вами дискета надёжно читалась на компьютере другого человека, которому не интересны все эти технические особенности, а интересен только результат
    Радикальным решением этой проблемы является использование фазовой автоподстройки частоты дисковода (ФАПЧ).
    Вывод: длинные сектора, невзирая на увеличение ёмкости дискеты, следует использовать только в том случае, если вы уверены, что на всех компьютерах, где она может быть прочитана есть ФАПЧ.

  2. #52
    Guru Аватар для Vadim
    Регистрация
    24.07.2008
    Адрес
    г. Курган
    Сообщений
    2,062
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krotan Посмотреть сообщение
    Поэтому, не следует восторгаться тому, какие красивые цвета экрана в cp/m на ATM-turbo или какой замечательный музыкальный редактор в cp/m на Скорпе (кажется) - это всё от некомпетентности,
    На скорпе в CP/M почти ничего нет, а редактор есть на Профи. Насчёт графики и звука могу сказать следующее: во всех осях того времени было аналогично. На ПЦ в ms-dos всё было точно также. И программная прослойка между программой и железом в плане мультимедиа реально заработало лишь в Windows 9x, NT. И в *nix системах 90-х годов. Слишком громоздким будет api и не позволяла производительность проца и компа в целом сделать такую прослойку. На компьютерах обладающих графикой и звуком при использовании CP/M к аппаратуре обращались напрямую. Да, программа намертво привязана именно к той платформе, на которой написана. Ну и что? CP/M используется для работы с файлами, а для вывода графики и звука мы обращаемся к аппаратуре напрямую.

    А далее автор пишет о дискетах. В общем ерунда, посоветую читать матчасть. К CP/M это отношения не имеет.

    Цитата Сообщение от krotan Посмотреть сообщение
    Синхронизация частоты данных сектора происходит в момент чтения индекса, а далее производится его чтение (или запись) вслепую с заданной частотой.
    В какую "вслепую"? Скорость вращения в дисководе контролирует схема привода, колебания при этом не превышают 0,5%. А во вторых CRC код никто не отменял, для контроля правильности считанных данных.
    А вообще бы, если уж пишем про дисковый формат и CP/M так первое, что надо было сказать, что есть 2 уровня формата. Логический и физический. И как бы, вообще говоря, практически со 100% вероятностью можно утверждать, что дискеты от одного типа компьютера с системой CP/M не прочитаются на другом. На ПЦ есть несколько программ для чтения дискет CP/M - так вот, там нельзя указать детали ни логического формата ни физического, выбор ведется по модели компа. Но хоть это есть. А вообще, в принципе если у нас имеется DS DD дисковод, то любую дискету можно прочитать. Вопрос в настройках системы и дискового драйвера. Для Q-DOS я сделал такую утилитку, позволяющую читать любые дискеты CP/M - требуется лишь указать параметры.

    Скрытый текст

    Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
    ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
    ZX Evolution Rev B.
    Color 48 + Beta Disk Interface +FDD+YM2149F
    Орель-08БК
    Pentagon-48 (недоссобранный кем-то)
    Pentagon-128 (полуубитый)
    Кворум-128 (в ремонте)
    Магик-05 (в ремонте)
    Robotron 1715
    Корвет ПК8020 и ПК8010
    Amstrad CPC 464
    Amstrad CPC 6128
    [свернуть]

  3. #53
    Member Аватар для alexeilm
    Регистрация
    25.12.2008
    Адрес
    Владивосток
    Сообщений
    114
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А кто помнит, как обрабатывалось биосом содержимое Intel I/O byte (аддр: $0003) ?
    iMac + A1200 (Blizzard 1230 IV-33Mhz + Blizzard SCSI-2 IV, 98Mb Fast RAM, Indivision), для всего остального - Altera DE1

  4. #54
    Guru Аватар для Vadim
    Регистрация
    24.07.2008
    Адрес
    г. Курган
    Сообщений
    2,062
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В фирменном описании CP/M 2.2 это есть, как мне помнится. Вот копипаст с сайта
    http://www.seasip.info/Cpm/iobyte.html

    CP/M 2 Input/Output mapping

    Under CP/M 2, input and output device selection are performed by the BIOS. Some BIOSes may implement a feature called the IOBYTE which allows the user to change which device the screen, printer etc. output go to.

    The IOBYTE lives at address 3 (in the Zero Page) and should be changed using BDOS calls 7 and 8 (get/set IOBYTE). The value is bitmapped:

    Bits Bits 6,7 Bits 4,5 Bits 2,3 Bits 0,1
    Device LIST PUNCH READER CONSOLE

    Value
    00 TTY: TTY: TTY: TTY:
    01 CRT: PTP: PTR: CRT:
    10 LPT: UP1: UR1: BAT:
    11 UL1: UP2: UR2: UC1:

    BAT = batch mode. Use the current Reader for console input, and he current List (printer) device as the console output.
    CRT = Standard console (keyboard and terminal screen).
    LPT = Standard line printer.
    PTP = Standard Paper Tape Punch.
    PTR = Standard Paper Tape Reader.
    TTY = Teletype device, eg a serial port.
    UC1 = User defined (ie implementation dependent) console device.
    UL1 = User defined (ie implementation dependent) printer device.
    UPn = User defined (ie implementation dependent) output device.
    URn = User defined (ie implementation dependent) input device.

    Скрытый текст

    Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
    ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
    ZX Evolution Rev B.
    Color 48 + Beta Disk Interface +FDD+YM2149F
    Орель-08БК
    Pentagon-48 (недоссобранный кем-то)
    Pentagon-128 (полуубитый)
    Кворум-128 (в ремонте)
    Магик-05 (в ремонте)
    Robotron 1715
    Корвет ПК8020 и ПК8010
    Amstrad CPC 464
    Amstrad CPC 6128
    [свернуть]

  5. #55
    Member Аватар для alexeilm
    Регистрация
    25.12.2008
    Адрес
    Владивосток
    Сообщений
    114
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это-то так, но "как обрабатывалось биосом содержимое Intel I/O byte". Т.е. каким образом сам биос это делал. Если кто помнит...
    Что-бы понятнее было. Что надо вписать в биос, чтобы работала процедура:

    STAT CON:=CRT: - ввод/вывод с теминала
    STAT CON:=TTY: - система переключается на ввод/вывод по последовательному порту.
    Последний раз редактировалось alexeilm; 05.09.2012 в 12:23.
    iMac + A1200 (Blizzard 1230 IV-33Mhz + Blizzard SCSI-2 IV, 98Mb Fast RAM, Indivision), для всего остального - Altera DE1

  6. #56
    Guru Аватар для Vadim
    Регистрация
    24.07.2008
    Адрес
    г. Курган
    Сообщений
    2,062
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Команда STAT просто меняет байт по адресу 0003. А в BIOS уже ветвитель, на который попадаем по вызову функции CONOUT смотрит, какому драйверу передать управление. Думаю так.

    Скрытый текст

    Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
    ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
    ZX Evolution Rev B.
    Color 48 + Beta Disk Interface +FDD+YM2149F
    Орель-08БК
    Pentagon-48 (недоссобранный кем-то)
    Pentagon-128 (полуубитый)
    Кворум-128 (в ремонте)
    Магик-05 (в ремонте)
    Robotron 1715
    Корвет ПК8020 и ПК8010
    Amstrad CPC 464
    Amstrad CPC 6128
    [свернуть]

  7. #57
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    107
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vadim Посмотреть сообщение
    Команда STAT просто меняет байт по адресу 0003. А в BIOS уже ветвитель, на который попадаем по вызову функции CONOUT смотрит, какому драйверу передать управление. Думаю так.
    Совершенно верно. Все так и делается, и работает.
    Я делал такую доработку CP/M для Ориона-2010 (у О-2010 есть RS232), работали стандартные STAT (переназначение консоли), PIP (RAW передача файла) и классический KERMIT как ASCII-терминал и файловый прием/передача.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	example.jpg 
Просмотров:	313 
Размер:	24.7 Кб 
ID:	37225  
    Последний раз редактировалось Error404; 06.09.2012 в 11:17.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  8. #58
    Member Аватар для alexeilm
    Регистрация
    25.12.2008
    Адрес
    Владивосток
    Сообщений
    114
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я правильно мыслю, к примеру вызов bios CONIN?


    conin: ; bios function CONIN

    ld a,(IOBYTE) ;
    and 3 ; strip 7-2 bits
    jr z, tty_input

    console_input: ;CRT INPUT
    in a,(console_satus)
    .
    .
    .
    in a,(console_data)
    and 7fh
    ret

    tty_input: ;SERIAL LINE INPUT
    in a,(tty_status)
    .
    .
    .
    in a,(tty_data)
    and 7fh
    ret
    Последний раз редактировалось alexeilm; 07.09.2012 в 01:13.
    iMac + A1200 (Blizzard 1230 IV-33Mhz + Blizzard SCSI-2 IV, 98Mb Fast RAM, Indivision), для всего остального - Altera DE1

  9. #59
    Member Аватар для alexeilm
    Регистрация
    25.12.2008
    Адрес
    Владивосток
    Сообщений
    114
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нихрена KERMIT4 не могу заставить работать
    iMac + A1200 (Blizzard 1230 IV-33Mhz + Blizzard SCSI-2 IV, 98Mb Fast RAM, Indivision), для всего остального - Altera DE1

  10. #60
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    107
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alexeilm Посмотреть сообщение
    Нихрена KERMIT4 не могу заставить работать
    а ты каким пользуешься? я брал с официального сайта самый свежий для срм. и там его еще надо склеить было из двух частей - логической и аппаратнозависимой, которую надо брать именно для варианта работы через IOBYTE

    ---------- Post added at 18:57 ---------- Previous post was at 18:55 ----------

    и что именно не работает? каковы симптомы?
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

Страница 6 из 8 ПерваяПервая ... 2345678 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Вектор-06Ц: Железо
    от svofski в разделе Вектор
    Ответов: 262
    Последнее: 27.04.2022, 07:30
  2. Железо от NedoPC
    от CHRV в разделе Новодел
    Ответов: 116
    Последнее: 15.05.2012, 23:24
  3. Современное железо
    от Example626 в разделе Несортированное железо
    Ответов: 50
    Последнее: 26.10.2008, 15:48
  4. Про всякое железо...
    от Sayman в разделе Несортированное железо
    Ответов: 26
    Последнее: 21.04.2008, 05:10
  5. Железо УКНЦ
    от Sonic в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 26.07.2007, 10:39

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •