Author |
Message |
Yarik
Writer
Joined: 07 Jul 2005 22:58 Posts: 15 Location: Новосибирск
|
Я пользуюсь "CP/M V2.2 для пользователей и программистов" NedoPC 2004.По работе с экраном и клавиатурой лично мне всё понятно,а вот по работе с диском хотелось бы поболее и поподробней.
|
31 Oct 2005 02:36 |
|
|
Yarik
Writer
Joined: 07 Jul 2005 22:58 Posts: 15 Location: Новосибирск
|
Как будет корректней выводить символ на экран?Через BIOS или
напрямую F809h монитора.
|
31 Oct 2005 03:45 |
|
|
Caro
Fanat
Joined: 21 Nov 2002 11:09 Posts: 88 Location: E-burg/Russia
|
Через точку вызова BDOS или через BIOS, если хочешь, что бы программа работала при любых их изменениях.
Через BIOS конечно работает быстрее.
Но рекомендуется вызовы делать с учетом адреса теплого старта,
который расположен в ячейках 0001h, 0002h.
При этом обычно, либо пишется процедура вызова требуемой
функции BIOS по ее смещению относительно адреса теплого старта,
либо при запуске программы производится настройка точек вызова
функций BIOS.
Второй вариант мне кажется предпочтительным поскольку обеспечивает
наибольшее быстродействие.
Можно конечно выводить и через монитор, но в этом случае
программа будет работать только на ATM.
|
31 Oct 2005 04:47 |
|
|
Максагор
Senior
Joined: 08 Jun 2002 19:00 Posts: 126 Location: Москва
|
Сформулируй вопрос почетче. А пока в общих чертах - открываешь файл соответствующей функцией. А затем функцией последовательного чтения (про более сложный произвольный доступ ведь речь пока не идет? Только про банальное считывание файла?) читаешь поблочно (один логический блок - 128 байт) - за один вызов функции считывается в 128-байтный буфер (расположенный, если не переставить его силами системы - по адресу #0080) один блок. Далее ты его содержимое уже силами своей программы перебрасывай (LDIRом или еще чем) в место постоянной дислокации. Ну и зацикли считывание блоков либо пока тебе самому не надоест считывать (например, тебе надо считать только часть файла с начала), либо пока не прийдет сообщение "End of file". Каждый следующий блок, естественно, перекидывай на место после предыдущего. Например, планируешь подгрузить файл с адреса #6000. Тогда первый блок из буфера проLDIRишь в #6000, следующий уже в #6080, третий - в #6100 и так далее до нужного тебе завершения цикла.
Кстати, а что ты писать задумал? Или пока просто так тренируешься?
P.S. Номера указанных функций не привожу, так как пишу экспромтом, не имея перед глазами доки... Думаю, сам отыщещь соответствующие данному тексту...
_________________ Максагор
|
31 Oct 2005 17:29 |
|
|
Максагор
Senior
Joined: 08 Jun 2002 19:00 Posts: 126 Location: Москва
|
Если есть хоть малейшая возможность писать через BIOS, пиши через BIOS - прога универсальнее будет. Так как Рестарты BIOSа стандартные для CP/M 2.2 для любого компа, а вот керналь #F8xx - чисто ATMовская фича. Тут Камиль, кнечно, правильно говорит - через керналь, ессно, чуть быстрее. Но если тебе действительно большая скорость вывода нужна, тот тут тебе никакие средства CP/M не помогут - уж слишком она тормоз. Что через рестарты BIOSа, что через керналь. Тут помогает только прямое обращение к экрану. Так, к примеру, когад я писал SIMPLE PLAYER, то заставку (полоски с менюшками) выводил через BIOS (предварительно временно погасив палитру, кстати, через BIOS, чтобы не был видет тормозной процесс ее рисования), а вот бегущую строку и AYшные уровни громкости каналов - уже прямо кидая байты в экран. Иначе я не то что в прерывание, в десять прерываний не уложился бы, наверное...
_________________ Максагор
|
31 Oct 2005 17:38 |
|
|
Максагор
Senior
Joined: 08 Jun 2002 19:00 Posts: 126 Location: Москва
|
Если и возьмусь, то не раньше, чем через полгода. Диссер все силы отнимает. Даже заниматься любимым делом - ругаться на форуме в теме про ЭсЭсЭсЭРу сил и времени не осталось...
Но обещаю, что TASiS все-таки выпущу в самое ближайшее время (счет пошел на дни). А после него - "лягу на дно" на некоторое время.
_________________ Максагор
|
31 Oct 2005 17:43 |
|
|
Yarik
Writer
Joined: 07 Jul 2005 22:58 Posts: 15 Location: Новосибирск
|
Ну мне это и надо.Просто считать и записать файл. см. мой пост выше.Ну и тренируюсь,как же без этого.
Ждём
|
01 Nov 2005 04:58 |
|
|
Yarik
Writer
Joined: 07 Jul 2005 22:58 Posts: 15 Location: Новосибирск
|
Можно как нибудь обмануть линковщик:
надо чтобы часть программы была под адрес #100 а другая часть под другой адрес,но в СОМ файле распологалась сразу за первой частью?
|
02 Nov 2005 03:26 |
|
|
Caro
Fanat
Joined: 21 Nov 2002 11:09 Posts: 88 Location: E-burg/Russia
|
Можно.
Для этого в M80 есть две опции .phase и .dephase
Например можно написать так:
|
02 Nov 2005 03:40 |
|
|
Yarik
Writer
Joined: 07 Jul 2005 22:58 Posts: 15 Location: Новосибирск
|
|
04 Nov 2005 06:57 |
|
|
Caro
Fanat
Joined: 21 Nov 2002 11:09 Posts: 88 Location: E-burg/Russia
|
Посмотрел. Для начала не плохо. Не посчитай, что критикую просто рекомендации:
1) Я уже говорил прямое обращение к функциям BIOS не рекомендуется.
В данном примере правильней было бы при формировании вызова
CONOUT (ADR_BIOS+0Ch) при установке RST8, взять старший байт из ячейки 0002h.
А для вызова CONIN (ADR_BIOS+09h) старшие байты адресов также
модифицировать значением из ячейки 0002h.
Либо под CONIN настроить RST10;
2) Выход из программы в CP/M-80 обычно выполняется по Ctrl/С;
3) Листание в данном случае лучше сделать нажатием одной клавиши (без Ctrl).
Например как на Спектруме Q-вверх, A-вниз;
4) Обьем ZIP файла оказался очень большим, поскольку в исходном TRD файле
сохранились все программы, которые были на этом диске, несмотря на
то что они были в CP/M удалены.
Наверное лучше иметь образ пустого диска, на который перед
выкладыванием копироовать нужные файлы.
А так отлично, так держать.
Я всегда считал, что по сравнению с TR-DOS CP/M-80 проф-система.
Надеюсь ты оценил это.
|
04 Nov 2005 11:05 |
|
|
Максагор
Senior
Joined: 08 Jun 2002 19:00 Posts: 126 Location: Москва
|
Надеюсь, по достоинство и TASiS оцените. Как раз сегодня система вышла.
_________________ Максагор
|
04 Nov 2005 20:24 |
|
|
Mac Buster
Retired
Joined: 03 Aug 2003 22:37 Posts: 1474 Location: Moscow
|
Не вызывает сомнений. Наверное не стоит сравнивать разные вещи. TR-DOS это минимальный набор функций для работы с диском. Во время выхода Дисковых интерефейсов вроде Beta и Delta, даже такой набор предоставлялся не всеми.
_________________ Extreme Entertainment
|
05 Nov 2005 00:15 |
|
|
Yarik
Writer
Joined: 07 Jul 2005 22:58 Posts: 15 Location: Новосибирск
|
| | | | Caro wrote: Посмотрел. Для начала не плохо. Не посчитай, что критикую просто рекомендации: 1) Я уже говорил прямое обращение к функциям BIOS не рекомендуется. В данном примере правильней было бы при формировании вызова CONOUT (ADR_BIOS+0Ch) при установке RST8, взять старший байт из ячейки 0002h. А для вызова CONIN (ADR_BIOS+09h) старшие байты адресов также модифицировать значением из ячейки 0002h. Либо под CONIN настроить RST10 2) Выход из программы в CP/M-80 обычно выполняется по Ctrl/С; | | | | |
Учтем А я так понял что это стандартные (принятые в СПМ) PageUp PageDown Я заметил,но переделать поленился.
Да.Мне система понравилась,легко осваивается.Если бы ещё каталоги
поддерживала.
|
05 Nov 2005 05:19 |
|
|
Caro
Fanat
Joined: 21 Nov 2002 11:09 Posts: 88 Location: E-burg/Russia
|
Если бы был задействован режим редактирования, имело бы смысл использовать стандартные сочетания Ctrl+. А так удобней листать одной клавишей. Как вариант можно задействовать USER-области (до 32).
|
05 Nov 2005 05:55 |
|
|