nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Apr 2024 14:53



Reply to topic  [ 39 posts ]  Go to page Previous  1, 2, 3  Next
[ATM] Програмирование на Turbo2+ 
Author Message
Writer
User avatar

Joined: 07 Jul 2005 22:58
Posts: 15
Location: Новосибирск
Reply with quote
Post 
Shaos wrote:
Я так думаю, что пришла пора кому-то из ATM-щиков написать статью для NedoPC-издания о программировании Турбо-2+, о том как читаются и пишутся файлы, элементарные операции с экраном и т.д.

Я пользуюсь "CP/M V2.2 для пользователей и программистов" NedoPC 2004.По работе с экраном и клавиатурой лично мне всё понятно,а вот по работе с диском хотелось бы поболее и поподробней.


31 Oct 2005 02:36
Profile ICQ
Writer
User avatar

Joined: 07 Jul 2005 22:58
Posts: 15
Location: Новосибирск
Reply with quote
Post 
Максагор wrote:
Будешь программить под CP/M, могу помочь. С этой системой я хорошо разобрался.


Как будет корректней выводить символ на экран?Через BIOS или
напрямую F809h монитора.


31 Oct 2005 03:45
Profile ICQ
Fanat

Joined: 21 Nov 2002 11:09
Posts: 88
Location: E-burg/Russia
Reply with quote
Post 
Yarik wrote:
Как будет корректней выводить символ на экран?
Через BIOS или напрямую F809h монитора.
Через точку вызова BDOS или через BIOS, если хочешь, что бы программа работала при любых их изменениях.
Через BIOS конечно работает быстрее.
Но рекомендуется вызовы делать с учетом адреса теплого старта,
который расположен в ячейках 0001h, 0002h.
При этом обычно, либо пишется процедура вызова требуемой
функции BIOS по ее смещению относительно адреса теплого старта,
либо при запуске программы производится настройка точек вызова
функций BIOS.
Второй вариант мне кажется предпочтительным поскольку обеспечивает
наибольшее быстродействие.
Можно конечно выводить и через монитор, но в этом случае
программа будет работать только на ATM.


31 Oct 2005 04:47
Profile WWW
Senior
User avatar

Joined: 08 Jun 2002 19:00
Posts: 126
Location: Москва
Reply with quote
Post 
Yarik wrote:
Я пользуюсь "CP/M V2.2 для пользователей и программистов" NedoPC 2004.По работе с экраном и клавиатурой лично мне всё понятно,а вот по работе с диском хотелось бы поболее и поподробней.


Сформулируй вопрос почетче. А пока в общих чертах - открываешь файл соответствующей функцией. А затем функцией последовательного чтения (про более сложный произвольный доступ ведь речь пока не идет? Только про банальное считывание файла?) читаешь поблочно (один логический блок - 128 байт) - за один вызов функции считывается в 128-байтный буфер (расположенный, если не переставить его силами системы - по адресу #0080) один блок. Далее ты его содержимое уже силами своей программы перебрасывай (LDIRом или еще чем) в место постоянной дислокации. Ну и зацикли считывание блоков либо пока тебе самому не надоест считывать (например, тебе надо считать только часть файла с начала), либо пока не прийдет сообщение "End of file". Каждый следующий блок, естественно, перекидывай на место после предыдущего. Например, планируешь подгрузить файл с адреса #6000. Тогда первый блок из буфера проLDIRишь в #6000, следующий уже в #6080, третий - в #6100 и так далее до нужного тебе завершения цикла.

Кстати, а что ты писать задумал? Или пока просто так тренируешься?

P.S. Номера указанных функций не привожу, так как пишу экспромтом, не имея перед глазами доки... Думаю, сам отыщещь соответствующие данному тексту...

_________________
Максагор


31 Oct 2005 17:29
Profile WWW
Senior
User avatar

Joined: 08 Jun 2002 19:00
Posts: 126
Location: Москва
Reply with quote
Post 
Yarik wrote:
Максагор wrote:
Будешь программить под CP/M, могу помочь. С этой системой я хорошо разобрался.


Как будет корректней выводить символ на экран?Через BIOS или
напрямую F809h монитора.


Если есть хоть малейшая возможность писать через BIOS, пиши через BIOS - прога универсальнее будет. Так как Рестарты BIOSа стандартные для CP/M 2.2 для любого компа, а вот керналь #F8xx - чисто ATMовская фича. Тут Камиль, кнечно, правильно говорит - через керналь, ессно, чуть быстрее. Но если тебе действительно большая скорость вывода нужна, тот тут тебе никакие средства CP/M не помогут - уж слишком она тормоз. Что через рестарты BIOSа, что через керналь. Тут помогает только прямое обращение к экрану. Так, к примеру, когад я писал SIMPLE PLAYER, то заставку (полоски с менюшками) выводил через BIOS (предварительно временно погасив палитру, кстати, через BIOS, чтобы не был видет тормозной процесс ее рисования), а вот бегущую строку и AYшные уровни громкости каналов - уже прямо кидая байты в экран. Иначе я не то что в прерывание, в десять прерываний не уложился бы, наверное...

_________________
Максагор


31 Oct 2005 17:38
Profile WWW
Senior
User avatar

Joined: 08 Jun 2002 19:00
Posts: 126
Location: Москва
Reply with quote
Post 
CHRV wrote:
Shaos wrote:
Я так думаю, что пришла пора кому-то из ATM-щиков написать статью для NedoPC-издания о программировании Турбо-2+, о том как читаются и пишутся файлы, элементарные операции с экраном и т.д.

Ну про экраны есть документация. А вот Макс мог бы напрячся написать про основные принципы програмирования под СПМ. Поддерживаю! В частности обзорчик тулзов...


Если и возьмусь, то не раньше, чем через полгода. Диссер все силы отнимает. Даже заниматься любимым делом - ругаться на форуме в теме про ЭсЭсЭсЭРу сил и времени не осталось... :)

Но обещаю, что TASiS все-таки выпущу в самое ближайшее время (счет пошел на дни). А после него - "лягу на дно" на некоторое время.

_________________
Максагор


31 Oct 2005 17:43
Profile WWW
Writer
User avatar

Joined: 07 Jul 2005 22:58
Posts: 15
Location: Новосибирск
Reply with quote
Post 
Максагор wrote:
Сформулируй вопрос почетче. А пока в общих чертах - открываешь файл соответствующей функцией. А затем функцией последовательного чтения (про более сложный произвольный доступ ведь речь пока не идет? Только про банальное считывание файла?) читаешь поблочно (один логический блок - 128 байт) - за один вызов функции считывается в 128-байтный буфер (расположенный, если не переставить его силами системы - по адресу #0080) один блок. Далее ты его содержимое уже силами своей программы перебрасывай (LDIRом или еще чем) в место постоянной дислокации. Ну и зацикли считывание блоков либо пока тебе самому не надоест считывать (например, тебе надо считать только часть файла с начала), либо пока не прийдет сообщение "End of file". Каждый следующий блок, естественно, перекидывай на место после предыдущего. Например, планируешь подгрузить файл с адреса #6000. Тогда первый блок из буфера проLDIRишь в #6000, следующий уже в #6080, третий - в #6100 и так далее до нужного тебе завершения цикла.

Ну мне это и надо.Просто считать и записать файл.
Quote:
Кстати, а что ты писать задумал? Или пока просто так тренируешься?

см. мой пост выше.Ну и тренируюсь,как же без этого.
Quote:
Но обещаю, что TASiS все-таки выпущу в самое ближайшее время (счет пошел на дни)

Ждём


01 Nov 2005 04:58
Profile ICQ
Writer
User avatar

Joined: 07 Jul 2005 22:58
Posts: 15
Location: Новосибирск
Reply with quote
Post 
Можно как нибудь обмануть линковщик:
надо чтобы часть программы была под адрес #100 а другая часть под другой адрес,но в СОМ файле распологалась сразу за первой частью?


02 Nov 2005 03:26
Profile ICQ
Fanat

Joined: 21 Nov 2002 11:09
Posts: 88
Location: E-burg/Russia
Reply with quote
Post 
Yarik wrote:
Можно как нибудь обмануть линковщик:
надо чтобы часть программы была под адрес #100 а другая часть под другой адрес,но в СОМ файле распологалась сразу за первой частью?
Можно.
Для этого в M80 есть две опции .phase и .dephase
Например можно написать так:
Code:
.z80
adr2     equ  8000h
;
            cseg
;
start:    ld  hl,adr1
            ld  de,adr2
            ld  bc,adr3-adr2
            ldir
            jp  adr2
adr1:
.phase  adr2
cikl:      ld  a,01h
            out  (0feh),a
            ld  a,07h
            out  (0feh),a
            jr  cikl             
adr3:
.dephase
            end


02 Nov 2005 03:40
Profile WWW
Writer
User avatar

Joined: 07 Jul 2005 22:58
Posts: 15
Location: Новосибирск
Reply with quote
Post 
Вот.Первый блин
http://www.yrslv.newmail.ru/xdump.zip


04 Nov 2005 06:57
Profile ICQ
Fanat

Joined: 21 Nov 2002 11:09
Posts: 88
Location: E-burg/Russia
Reply with quote
Post 
Yarik wrote:
Вот.Первый блин
http://www.yrslv.newmail.ru/xdump.zip
Посмотрел. Для начала не плохо. Не посчитай, что критикую просто рекомендации:
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
Profile WWW
Senior
User avatar

Joined: 08 Jun 2002 19:00
Posts: 126
Location: Москва
Reply with quote
Post 
Caro wrote:
А так отлично, так держать.
Я всегда считал, что по сравнению с TR-DOS CP/M-80 проф-система.
Надеюсь ты оценил это.


Надеюсь, по достоинство и TASiS оцените. Как раз сегодня система вышла.

_________________
Максагор


04 Nov 2005 20:24
Profile WWW
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Post 
Caro wrote:
Я всегда считал, что по сравнению с TR-DOS CP/M-80 проф-система.

Не вызывает сомнений. Наверное не стоит сравнивать разные вещи. TR-DOS это минимальный набор функций для работы с диском. Во время выхода Дисковых интерефейсов вроде Beta и Delta, даже такой набор предоставлялся не всеми.

_________________
Extreme Entertainment


05 Nov 2005 00:15
Profile
Writer
User avatar

Joined: 07 Jul 2005 22:58
Posts: 15
Location: Новосибирск
Reply with quote
Post 
Caro wrote:
Yarik wrote:
Вот.Первый блин
http://www.yrslv.newmail.ru/xdump.zip
Посмотрел. Для начала не плохо. Не посчитай, что критикую просто рекомендации:
1) Я уже говорил прямое обращение к функциям BIOS не рекомендуется.
В данном примере правильней было бы при формировании вызова
CONOUT (ADR_BIOS+0Ch) при установке RST8, взять старший байт из ячейки 0002h.
А для вызова CONIN (ADR_BIOS+09h) старшие байты адресов также
модифицировать значением из ячейки 0002h.
Либо под CONIN настроить RST10
2) Выход из программы в CP/M-80 обычно выполняется по Ctrl/С;

Учтем
Quote:
3) Листание в данном случае лучше сделать нажатием одной клавиши (без Ctrl).
Например как на Спектруме Q-вверх, A-вниз;

А я так понял что это стандартные (принятые в СПМ) PageUp PageDown
Quote:
4) Обьем ZIP файла оказался очень большим, поскольку в исходном TRD файле
сохранились все программы, которые были на этом диске, несмотря на
то что они были в CP/M удалены.
Наверное лучше иметь образ пустого диска, на который перед
выкладыванием копироовать нужные файлы.

Я заметил,но переделать поленился.
Quote:
А так отлично, так держать.
Я всегда считал, что по сравнению с TR-DOS CP/M-80 проф-система.
Надеюсь ты оценил это.

Да.Мне система понравилась,легко осваивается.Если бы ещё каталоги
поддерживала.


05 Nov 2005 05:19
Profile ICQ
Fanat

Joined: 21 Nov 2002 11:09
Posts: 88
Location: E-burg/Russia
Reply with quote
Post 
Yarik wrote:
А я так понял что это стандартные (принятые в СПМ) PageUp PageDown

Если бы был задействован режим редактирования, имело бы смысл использовать стандартные сочетания Ctrl+.
А так удобней листать одной клавишей.
Yarik wrote:
Мне система понравилась, легко осваивается.
Если бы ещё каталоги поддерживала.
Как вариант можно задействовать USER-области (до 32).


05 Nov 2005 05:55
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 39 posts ]  Go to page Previous  1, 2, 3  Next

Who is online

Users browsing this forum: No registered users and 49 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.