Что хотелось бы увидеть в новой разработке (условно АТМ-3)

Старый спектрумистский форум

Moderator: Shaos

lvd
Maniac
Posts: 230
Joined: 01 Mar 2005 21:42

Post by lvd »

Ronin wrote:ну кадровое прерывание не исправишь :)
Значит, НАДО исправить. Сохранив, естественно, старый режим для совместимости. =)
так что что есть то есть. а вот по остальным - этот самый шифратор перенесен в программную часть - по таблице im2 можешь понавзводить каких угодно флагов-триггеров в какой угодно комбинации. может это и лишние тормоза, зато не надо всяких извратов типа целого чипа х59, да и можно обрабатывать только пару-тройку событий а не все. в общем гибкость огромная :)
Блюе! =)

Прикинь, если хотя бы 5 девайсов. это ж 32 обработчика писать! - ипануццо! Никто писать не будет, а значит - опять поллинг. А если поллинг, то и фигли извращаться - заОРить интерапты, и дело с концом.
Никто не говорит, что надо ставить древний, агромадный и коматозный вн59. Говорится, что можно сделать контроллер прерываний свой, например:

Входы прерываний от внешних устройств - по фронту или по уровню. По фронту или уровню взводится триггер, соответствующий этому входу. Выходы всех триггеров ОРятся и идут на /INT. На цикл подтверждения им2 выдаётся выход приоритетного шифратора, на который так же все выходы триггеров идут. Когда процессор 'взял' интеррупт, тот триггер, что взялся - сбрасывается, остальные остаются. Когда проц сдеает EI:RET, он 'возьмёт' другой уже интеррупт, если осталось, что брать.

к тому же учитывая активность использования прерываний внешними девайсами (=нулевую) этот чип просто стоял бы зря.
К новому железу подразумеваются новые девайсы, причём не обязательно внешние. Например, идеконтроллер на прерывания вешать, интервальный таймер (для многозадачности), выходы прерываний с 9990, в конце концов.
можно конечно загибать пальцы что это отстой
Действительно, ацтой =)
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Согласен. Считаю, надо использовать конроллер прерываний. Если девайсов будет несколько - их опрашивать ухеришься.
lvd wrote:интервальный таймер (для многозадачности)
Это надо вешать на NMI. Иначе:

di
l1: jmp l1

и висяк
User avatar
Ronin
Maniac
Posts: 304
Joined: 29 Mar 2005 06:06
Location: Krasnodar

Post by Ronin »

Какой частотой предполагается тактировать его? Сколько тактов займёт полный цикл доступа (RAS latency, CAS latency, закрытие и precharge, точных терминов не помню, по сути - сколько тактов отделяют друг от друга чтение 2 произвольных байтов)?

если не ошибаюсь, на 100мгц при CL=2 - 5 циклов нуно (50нс). или при 133мгц при CL=3 - 6 циклов (45нс).

Значит, НАДО исправить

v9990 имеет свое кадровое прерывание. вроде как на нее пока ориентируемся.

это ж 32 обработчика писать! - ипануццо

адын раз написал и забыл.

чтобы повторить описанную схему с шифратором - просто 32 команды записи (модификации кодов jp (либо есть jp либо забит nop (или еще что - например модификация на jp cc когда cc=false)) основного обработчика) и jp на общий обработчик который состоит всего из 5 jp на собссно обработчики устройств, в той последовательности которая и определит их приоритет. каждый обработчик в конце снова модифицирует код основного (сбрасывает свой флаг) и jumpает на него чтобы исполнить менее приоритетные прерывания. и никакого поллинга, несколько jumpов и все дела.

итого в полном масштабе на 7 устройств потребуется пару кб озу из необъятного всем_хватит_4мб :)

Входы прерываний от внешних устройств - по фронту или по уровню

окей, куда на шине ты будешь пихать эти входы прерываний ? места на слоте нетуть столько. не считая того что несовместимо с прежними девайсами.

К новому железу подразумеваются новые девайсы

ну вообще как-то и на старом железе именно по им2 и юзались DMA Sound, Com-port и тд.

идеконтроллер на прерывания вешать

это в каком режиме :) PIO и так быстрее z80-7.0 поэтому иде без прерываний и обходицца.

выходы прерываний с 9990, в конце концов

будут висеть именно на этом самом отстое

Если девайсов будет несколько - их опрашивать ухеришься

окей, специально для оси которая поддержит прерывания, напишу обработчик прерываний по вышемнойописанной схеме. на выходе будет - 7 CALLов на внешние обработчики.
lvd
Maniac
Posts: 230
Joined: 01 Mar 2005 21:42

Post by lvd »

SfS wrote:Согласен. Считаю, надо использовать конроллер прерываний. Если девайсов будет несколько - их опрашивать ухеришься.
lvd wrote:интервальный таймер (для многозадачности)
Это надо вешать на NMI. Иначе:

di
l1: jmp l1

и висяк
НЕ нужно! DI:HALT и подобное - это либо необходимость (например, критическая секция), либо клиника. Те программы, которые под мультитаскинг пишутся, так не делают (или делают НАМЕРЕННО).
А если вешать на НМИ - то критические секции хрен сделаешь, безопасные трюки со стеком - тоже хрен сделаешь, ну и т.д.
НМИ пусть будет НМИ - для Очень Важных Событий (правда, хз вот, для каких.)
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

lvd wrote: НЕ нужно! DI:HALT и подобное - это либо необходимость (например, критическая секция), либо клиника.
Либо ошибка в программе. Как раз для этого - и на NMI.
lvd wrote: Те программы, которые под мультитаскинг пишутся, так не делают (или делают НАМЕРЕННО).
Вово. Ошибся ты - и вся система висит. Красивооо!
lvd wrote:А если вешать на НМИ - то критические секции хрен сделаешь,
Это какие ?
lvd wrote:безопасные трюки со стеком - тоже хрен сделаешь,
И не надо.
lvd wrote:НМИ пусть будет НМИ - для Очень Важных Событий (правда, хз вот, для каких.)
Например, для переключения задач.

Хотя конечно, можно задачи по инту щелкать, а NMI - по кнопке, для удаления зависонов и т.п.
lvd
Maniac
Posts: 230
Joined: 01 Mar 2005 21:42

Post by lvd »

Ronin wrote:если не ошибаюсь, на 100мгц при CL=2 - 5 циклов нуно (50нс). или при 133мгц при CL=3 - 6 циклов (45нс).
То есть это именно между 2 чтениями, а не от начала обращения до получения данных?
Ну тогда ок, на 20мгц зетнике заработает и ещё останется (для ВК), остаётся проблема с 100мгц. :(
v9990 имеет свое кадровое прерывание. вроде как на нее пока ориентируемся.
На мультиколорно-несекущуюся совместимость с 256x192 уже не ориентируемся, что ли? А оно требует весьма конкретного положения инта относительно экрана...
адын раз написал и забыл.
чтобы повторить описанную схему с шифратором - просто 32 команды записи (модификации кодов jp (либо есть jp либо забит nop (или еще что - например модификация на jp cc когда cc=false)) основного обработчика) и jp на общий обработчик который состоит всего из 5 jp на собссно обработчики устройств, в той последовательности которая и определит их приоритет. каждый обработчик в конце снова модифицирует код основного (сбрасывает свой флаг) и jumpает на него чтобы исполнить менее приоритетные прерывания. и никакого поллинга, несколько jumpов и все дела.
Несколько джампов, докуя тактов...
итого в полном масштабе на 7 устройств потребуется пару кб озу из необъятного всем_хватит_4мб :)
Нет, из ДРАГОЦЕННОГО 64кб, причём это 2кб должно будет торчать в памяти ВСЕГДА. что есть сакс.
Можно, ктсати, пример кода? :)

Ещё. Если вдруг какой девайс передумает прерывание давить, то у тебя он всё равно обрабатываться почему-то будет.

[last thought] То, что ты предложил, по сути и есть поллинг. Только просто инфа обо всех прерываниях читается в цикле подтверждения, а не потом. А потом и начинается возня - биты, коллы, прочая байда, жрущая время. а ИМ2 - он и придумывался, чтобы сразу в нужный обработчик прыгать!

окей, куда на шине ты будешь пихать эти входы прерываний ? места на слоте нетуть столько. не считая того что несовместимо с прежними девайсами.
На /INT зхбасовский и буду. В случае ИМ2, кстати, входов прерываний может быть 128, если кто не знал, а не 7. =))
ну вообще как-то и на старом железе именно по им2 и юзались DMA Sound, Com-port и тд.
дма усц - выкинь. Ибо он требует ковыряния в потрохах, причём нехилого. компорт и тд - умеет давать инт? Ну и отлично... пусть даёт дальше.
идеконтроллер на прерывания вешать
это в каком режиме :) PIO и так быстрее z80-7.0 поэтому иде без прерываний и обходицца.
А раньше вообще компы делали, без прерываний вообще. И как-то обходились.

винты обучены давать прерывания. Использование этой фишки позволит НЕЗАВИСИМО с основной программой грузить файлы в память. Конечно, основная прога станет колом, но музу-то уж играть можно будет одновременно с загрузкой, б/п.
Если девайсов будет несколько - их опрашивать ухеришься
Так, а такого - я не писал! Мухлюете, товарисч! :);):);)
окей, специально для оси которая поддержит прерывания, напишу обработчик прерываний по вышемнойописанной схеме. на выходе будет - 7 CALLов на внешние обработчики.
Пишите, Шура, пишите. А мы посмотрим =))
lvd
Maniac
Posts: 230
Joined: 01 Mar 2005 21:42

Post by lvd »

SfS wrote:Вово. Ошибся ты - и вся система висит. Красивооо!
Уверяю тебя, что я смогу так 'ошибиться', что система не то что повиснет, а вообще исчезнет, как будто её и не бывало. Так что это - НЕ АРГУМЕНТ.
lvd wrote:А если вешать на НМИ - то критические секции хрен сделаешь,
Это какие ?
Учи многозадачность. Можно - на примере амигаос (как истинно многозадачной системы без защиты памяти).

Простой пример. Шедулер шедулит по прерыванию, какая задача следующая. А мы ещё одну задачу создаём, меняем шедулерные таблицы. А тут нми бац - и шедулер пойдёт шедулить шит с разрушенными таблицами.
lvd wrote:безопасные трюки со стеком - тоже хрен сделаешь,
И не надо.
Ты демы на спектруме писал или как? ;)
lvd wrote:НМИ пусть будет НМИ - для Очень Важных Событий (правда, хз вот, для каких.)
Например, для переключения задач.
Это не особый случай. Это рядовое явление, происходящее сотни раз в секунду.
Хотя конечно, можно задачи по инту щелкать, а NMI - по кнопке, для удаления зависонов и т.п.
Для удаления зависонов есть более другая кнопка, о которой все знают. НМИ - не поможет ни разу. А чтобы ошибки были пох системе - надо виртуализацию и защиту памяти наводить, что, КАК ОЧЕВИДНО, на з80 не бывает.

Хороший пример НМИ - это отладчик. Или подобное что-то. Но никак не многозадачность.
Last edited by lvd on 21 Dec 2006 05:32, edited 1 time in total.
lvd
Maniac
Posts: 230
Joined: 01 Mar 2005 21:42

Post by lvd »

Ещё идея. Делать начало экрана с любого места в памяти. Чтобы как в катдемо, но по-человески. Вдобавок - делать строчный модуль. например, выбралась строчка экранная, и бац - число заданное прибавилось к указателю у ВК, откуда следующую строчку брать.
К этому вдобавок - ещё сдвиг экрана на 0-7 пикселей - и можно будет скроллы плавные устраивать малыми силами (добавлением аддера и начального адреса в железку).
Du bist ein Spektrumist!
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

Прерывания нужны, может и не как воздух, но преимущества очевидны. Однозначно вектора долны быть по INT/IM2. Использовать для этого NMI несколько нелогично. ZXBUS для этого расширять совсем даже не нужно, достаточно сделать разделения INTов по-слотово + те, которые OnBoard.

Еще мысль есть такая: фсад FDC, а вместо него сделать на меге эмулятор портов ВГшки и все это хоз-во транслировать в SD/MMC Flash, чтоб юзать не дискеты, а их образы (н-р: trd, fd0, etc) с флеша.

Однозначно он-борд: ZXMultiCard (PS/2 keyb & mouse, RS232, watch), PAL-coder (composit & svhs), IDE.
Неплохо бы иметь выход звука сразу на наушники (KA2209 ???).
TurboSound оставить в виде "нашлепки" на АУк.
Питание, форм-фактор miniATX.
Внутри обязательно: I2C, SPI

Стандартный порт клавы тоже можно (нужно) ликвидировать.
Есть также сомнения по поводу нужности VGA-out...
lvd
Maniac
Posts: 230
Joined: 01 Mar 2005 21:42

Post by lvd »

jdigreze wrote:Еще мысль есть такая: фсад FDC, а вместо него сделать на меге эмулятор портов ВГшки и все это хоз-во транслировать в SD/MMC Flash, чтоб юзать не дискеты, а их образы (н-р: trd, fd0, etc) с флеша.
Ааа! ВГшку, на которую мы молимся 2 раза в день, хотят у нас украсть подлые язычники!!! :) :) :) :) :)
Однозначно он-борд: ZXMultiCard (PS/2 keyb & mouse, RS232, watch), PAL-coder (composit & svhs), IDE.
Онборд, но не факт, что именно zxmc (с тем же софтом то бишь).
Что такое svhs? =) Почему не просто vhs или не betacam, скажем? =)
Неплохо бы иметь выход звука сразу на наушники (KA2209 ???).
TurboSound оставить в виде "нашлепки" на АУк.
Выход на наушники сакс. Кому захочется подключать спек к нормальному усилку, придётся мириться с испорченным звуком.
Турбосоунд - ни в коем случае. Вообще, 2203 проще для сопряжения с шиной (если БЕЗ вынужденной шина>ay>2203 трансляции сигналов управления).
Внутри обязательно: I2C, SPI
Внутри чего, куда идут и что делают (и зачем)?
Стандартный порт клавы тоже можно (нужно) ликвидировать.
Я тте ликвидирую! =)
Ты скобочки в аласме давно не набирал на пцклавеотуре? :)
[хм... или пофиксили генто?]
Есть также сомнения по поводу нужности VGA-out...
И по поводу нужности TV-out тоже :)
Du bist ein Spektrumist!
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

jdigreze wrote: Стандартный порт клавы тоже можно (нужно) ликвидировать.
А играть как в старые игры ?
Sonic
Senior
Posts: 112
Joined: 09 Jun 2005 05:34

Post by Sonic »

lvd wrote: Входы прерываний от внешних устройств - по фронту или по уровню. По фронту или уровню взводится триггер, соответствующий этому входу. Выходы всех триггеров ОРятся и идут на /INT. На цикл подтверждения им2 выдаётся выход приоритетного шифратора, на который так же все выходы триггеров идут. Когда процессор 'взял' интеррупт, тот триггер, что взялся - сбрасывается, остальные остаются. Когда проц сдеает EI:RET, он 'возьмёт' другой уже интеррупт, если осталось, что брать.
В Профи есть контроллер прерываний. Используется для RS232 и часов (по будильнику).
Сделан до безобразия просто - диодами на ШД нужный байт подается - и порядок. Все работает.
lvd
Maniac
Posts: 230
Joined: 01 Mar 2005 21:42

Post by lvd »

Sonic wrote: В Профи есть контроллер прерываний. Используется для RS232 и часов (по будильнику).
Сделан до безобразия просто - диодами на ШД нужный байт подается - и порядок. Все работает.
Это не контроллер (он ничего не контролирует). Это всё - от безысходности и бедности. Если есть в оси 2 независимых программы, одна из которых хочет повесить обработчик на будильник, а другая - на приём рс232, что они (или ось) должны делать? А если оба прерывания одновременно приходят? А если источников прерывания 8? А если 20?
Du bist ein Spektrumist!
F0lken
Novelist
Posts: 35
Joined: 26 Sep 2006 11:04
Location: 83.237.37.199

Post by F0lken »

Не судите строго.
Чего бы я хотел от машинки мечты.
1. Минимальный размер. Речь не о PDA конечно.
2. Встроенный выход на ТВ, встроенный выход на наушники/динамики
3. Встроенный CF-слоt
4. Дыра для подключения CD - чтобы шлейф втыкаешь с питанием и все.
5. Выход на 2 джоя
6. Выход для клавиатуры и ps/2, а еще лучше USB мыши.
7. Технологическая колодка контактов, куда выведен LPT, serial, обычная спектрумовская клава, чтобы не морочиться с разъемами.

Приоритетно - !малые габариты!, малое энергопотребление. Внешний БП навроде ноутбучного - вольт на 18, внутри чтобы из него 5+12-12 делалось, чтобы голова не болела все это разными контактами подрубать.
Основная идея - уходить от PCшного формфактора. Поймите - место у нас в квартирах не растет, а только уменьшается. =)

Чего НЕ надо делать.
Извращаться с периферией. Т.е. никакие кардридеры, флешки, IDE->USB винты и прочее подключать НЕ НАДО. Пусть будет просто маленькая элегантная плата. Я даже готов раздербанить IDE-СDROM, дабы упихать все в корпус. И шину бы вывести. Чтобы секасом не заниматься с подключением.
User avatar
CHRV
God
Posts: 1101
Joined: 29 Dec 2003 01:00
Location: Москва

Post by CHRV »

F0lken wrote:Приоритетно - !малые габариты!, малое энергопотребление. Внешний БП навроде ноутбучного - вольт на 18, внутри чтобы из него 5+12-12 делалось, чтобы голова не болела все это разными контактами подрубать.
Основная идея - уходить от PCшного формфактора. Поймите - место у нас в квартирах не растет, а только уменьшается. =)
Согласен, но у нас определяющая - это конечно цена.
А если делать "маленькое", то это значит корпус специально делать и с расширениями проблема.
Лично мне нравится BTX форм фактор, но уж больно дороговато за него просят. Поэтому я все западаю на miniATX - и корпуса под них есть и малюсенькие и большие (кому подешевше хотца).