ZXNet эхоконференция «code.zx»


тема: Передача параметров хитрой железке



от: Victor Ronin
кому: All
дата: 12 Jul 2006
Hello, heroy her> ут вот в чем вопрос допустим тебе штук 10 одинаковых команд послать her> надо они только отличаются скажем одним параметром, а параметр в her> цикле вычисляется получаются такие телодвижения her> her> Для начала выделяем где нить буфер для комадного пакета her> her> заполняем его her> при помощи outi запихиваем в железяку her> вычисляем параметр her> правим буфер her> и все сначала а как этот самый параметр у тебя планируется править когда он уже залитый в FIFO буфере лежит :) ну и кучка pop hl - тоже время как бы кушает-то :) а можно не ипать мозги а повесить 256 байт обычного озу на старший байт (a8-15) порта и править эти команды хоть вдоль хоть поперек.

от: Дмитрий Демьяненко
кому: All
дата: 12 Jul 2006
Hello, fk0 fk0> Для тугодумов: В СПЕКТРУМЕ ИМЕЮТ ЗHАЧЕHИЕ МЛАДШИЕ 8 РАЗРЯДОВ. Сам подумал что сказал? fk0> LD HL, paramters_address fk0> LD BC, #xxyy ; xx -- ваш регистр, yy -- порт. fk0> OTIR fk0> fk0> Медленно? Да я уже вроде пришол к этому выводу

от: Дмитрий Демьяненко
кому: All
дата: 12 Jul 2006
Hello, captain cobalt cap> Можно прослушивать только команду LD и брать её непосредственные cap> операнды. cap> Код будет выглядеть так: Думали над таким вариантом, трабл в том что если в цикле смыкать такую конструкцию, то прийдется делать самомодифицируищейса код, да и результат вроде медленней получается чем при использовании outi (хотя таблички под рукой нет мог и соврать). Склоняюсь наверное к варианту работы с блочными командами ввода вывода у нее 2 плюса 1. не надо будет сильно извращаться 2. реализация железяки проще будет

от: Дмитрий Демьяненко
кому: All
дата: 12 Jul 2006
Hello, Ronin Ron> OUTI не слишком тормознее стекового копирования Тут вот в чем вопрос допустим тебе штук 10 одинаковых команд послать надо они только отличаются скажем одним параметром, а параметр в цикле вычисляется получаются такие телодвижения Для начала выделяем где нить буфер для комадного пакета заполняем его при помощи outi запихиваем в железяку вычисляем параметр правим буфер и все сначала Тоесть есть лишние телодвижения, вопрос - как вы считаете это нормально (можно ли с этим смириться)?

от: Дмитрий Демьяненко
кому: All
дата: 12 Jul 2006
Hello, Ronin Hечетко выразился Просто ты можеш в регистре нужные манипуляции провести и послать заново push hl. В общем варант с outi все самый оптимальный выходит.

от: van Yu Shinn
кому: All
дата: 12 Jul 2006
Hello, heroy Сугубо по тактам память работает быстрее, чем порты. Даже без DMA можно просто ловить обращения к определённым адресам памяти. Тогда можно совместить два способа: LD DE,#xxxx - для передачи констант LD (#zzzz),HL - для передачи переменных Для программистов наиболее удобно программируемое устройство. Чтобы был свой процессор, ему даётся программа и дальше он самостоятельно работает по этой программе и не мешается.

от: van Yu Shinn
кому: All
дата: 12 Jul 2006
Hello, heroy her> планируется свести к минимуму колво портов в адресном пространстве her> машинки Альтернативный вариант - открывающиеся/закрывающиеся порты. Когда работает старый софт, который может нагадить в порты, порты закрыты и не реагируют. Hовый крутой софт работает при открытых портах и использует их возможности. her> 1. Юзается стек Можно прослушивать только команду LD и брать её непосредственные операнды. Код будет выглядеть так: ┌─- code ─── LD HL,#xxxx LD HL,#yyyy LD HL,#zzzz LD A,A └── code ─── Другой вариант - DMA. her> 2. если между инструкциями PUSH HL происходит прерыание Умная железка могла бы прослушивать их и вести себя соответственно.

от: Victor Ronin
кому: All
дата: 12 Jul 2006
Hello, skyther классические порты незачем бояться :) или расшаренная память как самый быстрый вариант кидания массивов. sky> Шлем команду "записать данные в регистр N", протом шлем необходимое sky> количество байт в рег данных. так и работает v9990 между прочим - указываешь стартовый адрес, и пошел пхать байты подряд :)))) OUTI не слишком тормознее стекового копирования, вполне сносно. и достаточно просто чтобы юзать.

от: Victor Ronin
кому: All
дата: 12 Jul 2006
Hello, heroy а мне память на портах больше нравица ;)

от: Kirill Frolov
кому: All
дата: 12 Jul 2006
Hello, heroy her> Так как планируется свести к минимуму колво портов в адресном her> пространстве машинки мы добавляем всего 2 порта 1-индекс внутреннего her> регистра, 2 непосредственно адресуемый регистр в связи с этим her> становиться неудобно передавать параметры, her> так как получается следующего вида манипуляции her> 1. устанавливаем в первом порту номер регистра для параметра 1 her> 2. записываем параметр в порт 2 her> Ересь. Возьмите ОДИH 8-битный порт. Останется ещё 8 бит (старшая половина адреса) для адресации 256 регистров вашей железяки. Для тугодумов: В СПЕКТРУМЕ ИМЕЮТ ЗHАЧЕHИЕ МЛАДШИЕ 8 РАЗРЯДОВ. ld a,a // признак железяке что необходимо исполнить команду Дурацкий метод. В том смысле, что может самопроизвольно что угодно навыполняться. Через порты надёжнее. [quote] Основные требования к методу это 1. Скорость работы [quote] LD HL, paramters_address LD BC, #xxyy ; xx -- ваш регистр, yy -- порт. OTIR Медленно?

от: van Yu Shinn
кому: All
дата: 12 Jul 2006
Hello, heroy Это, можно сказать, DMA. А без DMA это LD (#zzzz),HL Железяка дешифрует #zzzz понимает что к ней обращаются, и ловит 2 байта. Такую команду можно использовать в цикле с разными значениями HL.

от: Дмитрий Демьяненко
кому: All
дата: 12 Jul 2006
Hello, captain cobalt cap> Сугубо по тактам память работает быстрее, чем порты. cap> Даже без DMA можно просто ловить обращения к определённым адресам cap> памяти. Тогда можно совместить два способа: Правильно я понимаю Даем железка адрес буффера (BASE) в 8 байт (для командного пакета) Потом пишем туда параметры, а скажем при записи команды в BASE+0 железяка воспринимает это как признак того что можеш начинать исполнение. То есть можно модифицировать один байт и записать (перезаписать) код команды и железяка начала ее исполнять

от: Марк Антонов
кому: All
дата: 13 Jul 2006
Hello, Ronin Ron> OTI Ron> OTI Ron> OTI Ron> OTI outi =) а для модифицирующихся параметров разбавить outi обычными out

от: Wladimir Bulchukey
кому: Victor Ronin
дата: 13 Jul 2006
Здравствуй(-те), Victor...! 12 Июл 06 19:45, Victor Ronin -> All: VR> так и работает v9990 между прочим - указываешь стартовый адрес, и пошел VR> пхать байты подряд :)))) Hу почему же сразу 9990... И 9958, и 9938 это умели. Это изначально было классикой обращения к видеопамяти MSX. С наилучшими - Wlodek # wlblack()newmail.ru # http://wlodeks.narod.ru [ZX] [500:95/462@ZXNet] [2:5016 Forever] [Golyanovo] [Старые русские]

от: Victor Ronin
кому: All
дата: 14 Jul 2006
Hello, The Exploited The> outi =) гыгы ;) her> тоже время если порты замапить на карту памяти ну вот верной дорогой идем :) токмо мапить на память имеет смысл если тебе большие массивы слать нужно. когда речь идет о 16 байтах это не так важно. да и мапить на память через шину можно не куда попало. а всего лишь в одно место на один единственный сигнал без арбитража. т.е. это весьма ценный ресурс шины с которым нужно обращаться аккуратно (в отличии от портов). хотя если мапить параллельно с обычной памятью (т.е. только на запись в девайс) - можно и куда угодно :)

от: Дмитрий Демьяненко
кому: All
дата: 14 Jul 2006
Hello, Ronin Ron> хотя если мапить параллельно с обычной памятью (т.е. только на запись Ron> в девайс) - можно и куда угодно Именно!!! К тому же это не зависит от архетектуры шины. Этим финтом к тому же решается проблема с портами на чтение. И появляется некоторые команды подавать в обработчике прерывания (достаточно сохранить изменяемые параметры)

от: Kirill Frolov
кому: All
дата: 14 Jul 2006
Hello, heroy her> В тоже время если порты замапить на карту памяти для передачи 16 her> битного параметра достаточно 16 таков ld (xxxx),HL к тому же her> становятся Через память быстрей на пару тактов (собственно те такты, что "вводятся дополнительно в цикле ввода-вывода). Вопрос в том, куда замапить. В спектруме неположено вместо ПЗУ или ОЗУ чёрт знает что "замапливать". Хотя вместо ПЗУ можно. В том смысле, что шина позволяет. Через ОЗУ никак (имеются ввиду адреса 0x4000--0xffff). Hо это тоже -- прямой путь к проблемам несовместимости и неудобство для кодера (нужно отслеживать чего там в ПЗУ).

от: Kirill Frolov
кому: All
дата: 14 Jul 2006
Hello, heroy her> Цитата: her> Сообщение от fk0 her> Для тугодумов: В СПЕКТРУМЕ ИМЕЮТ ЗHАЧЕHИЕ МЛАДШИЕ 8 РАЗРЯДОВ. her> her> Сам подумал что сказал? "Ларченко и Родионов" на соответствующей странице. Спорить будешь?

от: Дмитрий Демьяненко
кому: All
дата: 14 Jul 2006
Hello, fk0 fk0> Вопрос в том, куда замапить. В спектруме неположено вместо ПЗУ или fk0> ОЗУ чёрт знает fk0> что "замапливать". Хотя вместо ПЗУ можно. В том смысле, что шина fk0> позволяет. Через ОЗУ fk0> никак (имеются ввиду адреса 0x4000--0xffff). Hо это тоже -- прямой fk0> путь к проблемам несовместимости и неудобство для кодера (нужно fk0> отслеживать чего там в ПЗУ). Железяка следит за шиной адреса шиной данных и nMREQ nWR и когда процессор записывает в нужную нам область мы сохраняем внутри железки и нет никакой совместимости, далее если мапить на облать ПЗУ то теряется возможность читать что что записали, и еще облать где размещаются регистры можно будет указывать программисту




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
new warez - свежий warez: pro tracker 3.54+,psychoz #6, #7 ,forever 2oo2 gfx viewer,lamergy D, W,Twilight Invitation,ngkong phoee, tokyo gang, ruff&reddy, zone trooper, north star.
Система - Обзор системных программ: Total Commander v 1.4
B.B.S. Новости - О новой B.B.S. - Elly Estel-BBS.
Intеrviеw - В этом кусочке психо 1чb вы сможете зачитать интервью с Shаfft^Cоlоr оf Mаgiс.
Форум - Алгоритм распознавания символов.

В этот день...   8 мая