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

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Срочно нужна информация по CP/M!

  1. #1
    Member Аватар для Helloween
    Регистрация
    09.08.2010
    Адрес
    Екатеринбург
    Сообщений
    119
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Срочно нужна информация по CP/M!

    Требуется карта памяти по адресам 00h-ffh (как можно подробнее, желательно с точностью до байта), особенно интересует область 060h-080h. Еще нужно описание файловой системы Robotron 1715 (самое подробное). Заранее thanx.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    только по Robotron?
    иначе:
    http://obsolescence.wixsite.com/obso.../cpm-internals

  4. #3
    Member Аватар для Helloween
    Регистрация
    09.08.2010
    Адрес
    Екатеринбург
    Сообщений
    119
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    [QUOTE=Шынни;946745]только по Robotron?

    Можно и для Кворум (они вроде одинаковые)

    иначе:
    http://obsolescence.wixsite.com/obso.../cpm-internals

    Тут я уже был, хотелось бы по-русски.

  5. #4
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Там где "был" английским по белому написано FCB.

  6. #5
    Sinclair User Аватар для Eltaron
    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,045
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    463
    Поблагодарили
    326 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Helloween Посмотреть сообщение
    Тут я уже был, хотелось бы по-русски.
    Какое из слов Default File Control Block перевести?

    Но на самом деле там схема не сооветствует действительности. Default FCB начинается с 0x5c.
    И на знаю за Роботрон, а в Кворуме 80h - это верхушка стека, используемого при старте. Ниже неё, соответственно, его небольшое содержимое.
    Последний раз редактировалось Eltaron; 23.01.2018 в 13:21.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI

  7. #6
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    ----------------------------------------------------------------
           (АДРЕСА ПРЕДСТАВЛЕНЫ В ШЕСТНАДЦАТЕРИЧНОМ ФОРМАТЕ)
    
    a. СИСТЕМНАЯ ЗОНА ( 0000 - 00FF )
    
    0000 - 0002     JMP WBOOT (СМ. BIOS)
    0003            I/O byte (СМ. BIOS)
    0004            current User & Disk (СМ. CCP)  (uuuudddd)
    0005 - 0007     JMP BDOS
    0008 - 002F     RST1 - RST5 ( ДОСТУПНЫ ДЛЯ ПОЛЬЗОВАТЕЛЯ, СИС-
                    ТЕМОЙ НЕ  ИСПОЛЬЗУЮТСЯ)
    0030 - 0037     ЗАРЕЗЕРВИРОВАНО НА БУДУЩЕЕ (Digital Research)
    0038 - 003F     RST7 - ИСПОЛЬЗУЕТСЯ ДИНАМИЧЕСКИМИ  ОТЛАДЧИКА-
                    МИ:  DDT, SID ,ZSID И ДР.
    0040 - 004F     В ОРИГИНАЛЬНОЙ ВЕРСИИ ЭТА ОБЛАСТЬ ИСПОЛЬЗУЕТСЯ
                    ДЛЯ  УПРАВЛЕНИЯ ДИСКОМ СОВМЕСТНО С IMSAI FIF
                    КОНТРОЛЛЕРОМ.  ПРАКТИЧЕСКИ  ДАННУЮ   ОБЛАСТЬ
                    МОЖНО  ИСПОЛЬЗОВАТЬ ДЛЯ РАБОТЫ С ПРОЦЕДУРАМИ
                    BIOS'а, А ДЛЯ РАБОТЫ С ПРОГРАММАМИ ПОЛЬЗОВА-
                    ТЕЛЯ - НЕЛЬЗЯ.
    0050 - 005B ЗАРЕЗЕРВИРОВАНО НА БУДУЩЕЕ ( Digital Research )
    005C - 006B 1st SLOT - ПЕРВАЯ ЗОНА (ПЕРВОЕ ИМЯ ФАЙЛА),  АВТО-
    МАТИЧЕСКИ  ЗАПОЛНЯЕМАЯ CCP ПРИ ИСПОЛНЕНИИ КОМАНДЫ (ФОРМАТ ЗА-
    ПОЛНЕНИЯ - СМ. BDOS, FCB-БЛОК)
    006C - 007B 2nd SLOT - ВТОРАЯ ЗОНА (ВТОРОЕ ИМЯ ФАЙЛА)
    005C - 007C  ПРИ РАБОТЕ ТОЛЬКО С ОДНИМ ФАЙЛОМ ЭТА ЗОНА МОЖЕТ
    ЯВЛЯТЬСЯ FCB-БЛОКОМ ПО УМОЛЧАНИЮ.
    007D - 007F Random Record Pointer (СМ. BDOS, FCB-БЛОК) - ИС-
    ПОЛЬЗУЕТСЯ ПРИ РАБОТЕ С FCB-БЛОКОМ, РАСПОЛАГАЮЩИМСЯ В АДРЕСАХ
    005C - 007C, ЕСЛИ ВЫЗЫВАЮТСЯ ФУНКЦИИ ПРОИЗВОЛЬНОГО ДОСТУПА  К
    ФАЙЛУ (СМ. BDOS, Write/Read Random).
    0080 - 00FF DMA-БУФЕР (БУФЕР ПРЯМОГО  ДОСТУПА  К  ПАМЯТИ)  ПО
    УМОЛЧАНИЮ.

  8. #7
    Moderator Аватар для Максагор
    Регистрация
    16.01.2005
    Адрес
    Москва
    Сообщений
    1,981
    Спасибо Благодарностей отдано 
    206
    Спасибо Благодарностей получено 
    303
    Поблагодарили
    113 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от caro Посмотреть сообщение
    0080 - 00FF DMA-БУФЕР (БУФЕР ПРЯМОГО ДОСТУПА К ПАМЯТИ) ПО УМОЛЧАНИЮ.
    Я не знаю, как где, но в CP/M на АТМ с этого адреса СРАЗУ после запуска COM-файла располагается строка с параментрами (т.е. все ключи, которые идут после имени файла и байт-указатель длины этой строки (максимум - 127 байт)). Например, если вы в командной строке набрали "FORMAT C: /a /b /q", то после старта утилиты FORMAT по адресу #0080 будет располагаться следующее:
    #0080 defb 12 ; длина строки параметров - 12 байт, включая байт пробела после расширения файла.
    #0081 defm " C: /a /b /q" ; собственно сама строка.

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

    Цитата Сообщение от caro Посмотреть сообщение
    0030 - 0037 ЗАРЕЗЕРВИРОВАНО НА БУДУЩЕЕ (Digital Research)
    Меня постоянно во всех описаниях умиляет эта строка про резервирование на будущее.... )))))
    Максагор, NedoPC group
    ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
    [ZX rulezzz 4reva!!!]
    http://atmturbo.nedopc.com
    http://vk.com/atmturbo
    http://maksagor.livejournal.com
    http://moskprf.ru
    [СССР][Коммунизм][КПРФ] ну [ZX], естественно...

  9. #8
    Sinclair User Аватар для Eltaron
    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,045
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    463
    Поблагодарили
    326 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Максагор Посмотреть сообщение
    Я не знаю, как где, но в CP/M на АТМ с этого адреса СРАЗУ после запуска COM-файла располагается строка с параментрами (т.е. все ключи, которые идут после имени файла и байт-указатель длины этой строки (максимум - 127 байт))
    Это везде так, все программы там и ищут свои аргументы. Цитата из официальной доки
    As an added convenience, the default buffer area at location BOOT+0080H is initialized to the command line tail typed by the operator following the program name.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI

  10. #9
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от caro
    эту область... можно использовать для работы с процедурами BIOS-а, а для работы с программами пользователя - нельзя
    Не совсем так. Я во всех своих адаптациях CP/M, активно задействовал все RST (кроме 0-го) и использовал всю область 0008...005B, произвольно. Просто потому, что во всех реализациях CP/M 2.2, что существовали в России, это не вызывает проблем. Насчёт CP/M 3.0 не знаю.

    Как известно, и первым это открыл Билл Гейтс в своём Altair-BASIC, RST-команды позволяют сократить объём кода. Именно RST позволили Биллу Гейтсу в 1975 уместить полноценный бейсик в 4 кб, что и сделало его миллиардером. Например, за счёт RST в коде CCP CP/M в 2 кб экономится более 60 байт (а при Z80 вообще за сотню).

    Ещё в 80-тые годы, читая описание одного иностранного компьютера, я узнал о пользе RST. Потому я просто один к одному заимствовал эти RST и сохранив назначение функций и номера RST, применил в CP/M. И ни одной программе CP/M это не повредило. RST упрощает разработку программ, как для CP/M, так и без-DOS-ных программ (если они работают на адресе 0).

    По Warm Boot CP/M кидается блок на адреса 0008...005B (выше увы, со стандартным CCP нельзя, т.к он на адресах 005C и 006С нагло строит два FCB из 1-го и 2-го параметра CCP-команды). Это позволяет в программах для такой CP/M использовать RST. А если программа делается универсальной для любых CP/M, то к программе в конце её кода с помощью строки INCLUDE RST.INC я подключал тот же стандартный блок RST, а в начале программы ставил строку CALL INIRST, что с помощью LDIR копирует блок RST на адрес 8 и из стандартной CP/M получается CP/M с RST.

    Кстати отладчикам и другим программам, что шарятся в адресах 8...5B использование RST не вредит, а по Warm Boot блок RST восстанавливается. И кстати не все отладчики используют именно RST 38, и при необходимости изменение используемого отладчиком RST не проблема, замена нескольких байтов (я это делал).

    Из RST-команд особенно часто используются: RST 18H (вывод текста размещённого сразу за самой командой RST, конец по 0 или старшему биту символа =1), RST 10H (вывод на экран символа из рег.A), RST 30H (делает CALL CONIN) и RST 28H (делает CALL 0F81BH).

    Кстати, экономит ОЗУ использование выводимого текста не со стоп-байтом 0, а со стопом вывода по взведённому старшему биту символа. Для чего в нормальных ассемблерах есть оператор DC, что эквивалентен DB, но в задаваемой строке в последнем её символе взводит бит D7. Можно взводить старший бит в строке так: defb 'Hell','o' or 80H. В подпрограмме MSSG вывода строки стоп по старшему биту обходится всего в одну лишнюю команду (после RET Z ставим RET M).

    Кстати, описывая ZERO-page CP/M забыли упомянуть, что буфер ввода строки CCP и буфер чтения с диска SUB- и временных $$$-файлов это адрес 0080. И на этот же адрес 80H часто ставится стек. По логике этот стек может затирать до входов в RST, но реально затирается порядка 10-ти байт ниже 80H.

    Кстати, читал, что для каких-то ЭВМ (возможно ZX), где ОЗУ пользователя начинается с 4000 (а ниже ПЗУ или экран) была CP/M в которой ZERO-page CP/M перемещена на 4000...40FF, а остальное всё то же самое. При этом с использованием RST получается облом.
    Последний раз редактировалось barsik; 23.01.2018 в 18:13.

  11. #10
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    "005C - 006B 1st SLOT" - как здесь быть с обработчиком NMI ?

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. TOKK PC 48G - нужна информация
    от elker в разделе Несортированное железо
    Ответов: 6
    Последнее: 06.02.2024, 15:09
  2. COMPOSIT нужна информация
    от Almaz в разделе Ленинград
    Ответов: 37
    Последнее: 16.06.2014, 12:37
  3. Ответов: 8
    Последнее: 04.06.2010, 21:19

Ваши права

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