Требуется карта памяти по адресам 00h-ffh (как можно подробнее, желательно с точностью до байта), особенно интересует область 060h-080h. Еще нужно описание файловой системы Robotron 1715 (самое подробное). Заранее thanx.
Требуется карта памяти по адресам 00h-ffh (как можно подробнее, желательно с точностью до байта), особенно интересует область 060h-080h. Еще нужно описание файловой системы Robotron 1715 (самое подробное). Заранее thanx.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
только по Robotron?
иначе:
http://obsolescence.wixsite.com/obso.../cpm-internals
[QUOTE=Шынни;946745]только по Robotron?
Можно и для Кворум (они вроде одинаковые)
иначе:
http://obsolescence.wixsite.com/obso.../cpm-internals
Тут я уже был, хотелось бы по-русски.
Там где "был" английским по белому написано FCB.
Какое из слов Default File Control Block перевести?
Но на самом деле там схема не сооветствует действительности. Default FCB начинается с 0x5c.
И на знаю за Роботрон, а в Кворуме 80h - это верхушка стека, используемого при старте. Ниже неё, соответственно, его небольшое содержимое.
Последний раз редактировалось Eltaron; 23.01.2018 в 13:21.
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
Код:---------------------------------------------------------------- (АДРЕСА ПРЕДСТАВЛЕНЫ В ШЕСТНАДЦАТЕРИЧНОМ ФОРМАТЕ) 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-БУФЕР (БУФЕР ПРЯМОГО ДОСТУПА К ПАМЯТИ) ПО УМОЛЧАНИЮ.
Я не знаю, как где, но в CP/M на АТМ с этого адреса СРАЗУ после запуска COM-файла располагается строка с параментрами (т.е. все ключи, которые идут после имени файла и байт-указатель длины этой строки (максимум - 127 байт)). Например, если вы в командной строке набрали "FORMAT C: /a /b /q", то после старта утилиты FORMAT по адресу #0080 будет располагаться следующее:
#0080 defb 12 ; длина строки параметров - 12 байт, включая байт пробела после расширения файла.
#0081 defm " C: /a /b /q" ; собственно сама строка.
- - - Добавлено - - -
Меня постоянно во всех описаниях умиляет эта строка про резервирование на будущее.... )))))
Максагор, 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], естественно...
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
Не совсем так. Я во всех своих адаптациях CP/M, активно задействовал все RST (кроме 0-го) и использовал всю область 0008...005B, произвольно. Просто потому, что во всех реализациях CP/M 2.2, что существовали в России, это не вызывает проблем. Насчёт CP/M 3.0 не знаю.Сообщение от caro
Как известно, и первым это открыл Билл Гейтс в своём 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.
"005C - 006B 1st SLOT" - как здесь быть с обработчиком NMI ?
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)