снова смысловые галлюцинации? где там было сказано, что ЭКРАН?
Закольцованный экран без края?
Ват зе… Прям слышно как трещит мой шаблон…
Я всё понял. Страшный ты человек, зря я с тобой связался…
Пацаны, бегите… :)))
Не паясничай. И ты еще смеешь обвинять меня в клоунаде…
Ты неправильно используешь слово «край». У закольцованной структуры нету краёв. У фрагментов же внутри такой структуры край считается по выходу за фрагмент.
Закольцованный экран без края?
Ват зе… Прям слышно как трещит мой шаблон...
Я всё понял. Страшный ты человек, зря я с тобой связался...
Пацаны, бегите… :)))
Я конечно видел много клоунады, но такую чтобы мой оппонент сначала что-то нарисовал или написал,
а потом, несмотря на четко нарисованные биты, заявил что я должен якобы представлять это не так (при том что написал/нарисовал — он всё вполне четко) — вот такую изворотливость я вижу впервые.
Клоунадой ты сейчас занимаешься. И нарисовано, и сказано было чётко: «c — столбцы». А то, что в этих битах непременно должны перебраться все комбинации — исключительно твои личные сексуальные фантазии. Я же ничего такого не утверждал.
Поздравляю. Ведь если уменьшить количество столбцов, уменьшится количество бит (или диапазон пересчета) и будет происходить регенерация не всех строк DRAM.
иииииишто? Кто сказал из религиозных авторитетов, что регенерация должна осуществляться именно чтением растра для отображения и никак иначе?
Дело в том что у тебя нарушена регенерация памяти и железо не рабочее. Дело в этом.
И пустым птицебольством «выше сказано, что могла усложниться схема регенерации» — не отделаешься.
Дурачок? Если нет, то прекращай включать дурачка. Даже в спектруме есть огромный промежуток в регенерации в 152 строки развёртки, почти полкадра. То есть достаточно делать один лишний доступ во время hblank, последовательно перебирая RAS от 0 до 127 — промежуток даже меньше получится. Можно даже применить для этого штатный счётчик строк видеоузла (но тогда на один hblank могут понадобиться два доступа, если промежуток в 184 строки слишком долгий).
Дело за малым, жду от тебя столбцовую раскладку адресов, такую чтобы работало.
Всё рабочее. Заканчивай клоунаду. От тебя жду формулу «коэффициента извратности перестановок»
Lethargeek ПОЧЕМУ ОДНО ПЕРЕПУТЫВАНИЕ ТЫ СЧИТАЕШЬ ИЗВРАЩЁННЕЙ ДРУГОГО?
Ведь у тебя наверняка есть какие-то СЕРЬЁЗНЫЕ основания (раз уж ты такой серьёзный Непетросян))
Напиши, пожалуйста, нам здесь серьёзную формулу для вычисления
КОЭФФИЦИЕНТА ИЗВРАТНОСТИ по заданной комбинации 14 неповторяющихся номеров!
А мне абсолютно норм! Вышел tsl, крикнул первую попавшуюся команду, и ушел в туман. Чего еще? Самое то, всё по закону жанра. По идее, он может еще где-то из-за кулис крикнуть: «прерывание вам всем в кернель!» После этого стреляет пушка и появляется VBI :)))
Нет, здесь факапчик-с у тебя приключился. Ты не подумал, что..
Я конечно видел много клоунады, но такую чтобы мой оппонент сначала что-то нарисовал или написал,
а потом, несмотря на четко нарисованные биты, заявил что я должен якобы представлять это не так (при том что написал/нарисовал — он всё вполне четко) — вот такую изворотливость я вижу впервые.
Поздравляю. Ведь если уменьшить количество столбцов, уменьшится количество бит (или диапазон пересчета) и будет происходить регенерация не всех строк DRAM.
И дело даже не в h7
Дело в том что у тебя нарушена регенерация памяти и железо не рабочее. Дело в этом.
И пустым птицебольством «выше сказано, что могла усложниться схема регенерации» — не отделаешься.
Дело за малым, жду от тебя столбцовую раскладку адресов, такую чтобы работало.
Приведи корректные биты адреса, идущие от контролера к DRAM 4116. Если это возможно в реальности, а не в диванных мечтах.
Чистка стеком применяется много где. Да хотя бы в той же Elite 1985 года. Но вот на пример именно копирования буфера, чтобы стеком и чтение, и запись осуществлялись, могу вспомнить только Wec le Mans от 1988
Инженеры не пользуются подобной терминологией, в электронике сложно представлять «средние». Именно этот образ мышления, терминология и форма выражения мысли поначалу вводит в полный ступор.
а при чём тут электроника? когда это нужно было представлять в ГЕОМЕТРИИ )))
Не удивительно, что я долгое время не мог ничего понять, у меня даже мысли не работают подобным извращенно-искривленным образом, чтобы я смог до такого додуматься. Смеялся я дооолго…
Ндаа… и эти люди раскритиковали Sinclair ZX Spectrum!
Нет, у ТЕБЯ они работают таким образом, если ты извращённо-искривлённый спектрум считаешь лучше. Это же именно на спектруме приходится извращаться для такой простой операции, как сдвиг по вертикали экранного адреса. Да и для вычисления по координатам самого адреса.
Соответствие | центр.пикс = край атр.
Ты неправильно используешь слово «край». У закольцованной структуры нету краёв. У фрагментов же внутри такой структуры край считается по выходу за фрагмент.
Lethargeek должен быть внесен в анналы спектрумистов как выдумщик
Если что, я не претендую на единоличное авторство))
Это всё результат одного давнего коллегиального обсуждения.
самого наибольшего hardware-извращения, какое только можно представить.
За сим нарекаю справедливо заслуженным титулом «хардварный Петросян».
Ладно, понимаю, со стороны софта у тебя мозги могли быть безнадёжно искривлённо-извращены многолетним программированием на спеке. Но вот с чего ты в hardware извращение усмотрел? Применяется ведь тот же самый приём, что в спектруме — перепутывание адресных линий. А теперь ВНИМАНИЕ, ВОПРОС: ПОЧЕМУ ОДНО ПЕРЕПУТЫВАНИЕ ТЫ СЧИТАЕШЬ ИЗВРАЩЁННЕЙ ДРУГОГО? Ведь у тебя наверняка есть какие-то СЕРЬЁЗНЫЕ основания (раз уж ты такой серьёзный Непетросян)) Напиши, пожалуйста, нам здесь серьёзную формулу для вычисления КОЭФФИЦИЕНТА ИЗВРАТНОСТИ по заданной комбинации 14 неповторяющихся номеров! :|
в общепринятом смысле «байты» (октеты) в адресе видеоконтроллера,
выставляемого на DRAM отсутствуют,
поскольку ША видео-адреса, будучи представленной выводами счётчиков,
не пересекается с микропроцессорной ША, вот такая для тебя шокирующая новость.
это для меня совсем не новость, представь себе
Однако говорить о старшей и младшей части адреса можно.
ну и к чему тогда пустая придирка выше? Чтобы только показать вумность?
14 бит, 2^14 = 16384.
У вас факапчик-с приключился с видеообластью объемом 16кб.
Нет, здесь факапчик-с у тебя приключился. Ты не подумал, что 16k нужно было бы для всех теоретических 64 столбцов, но столько даже в тв-строку не влезает с квадратным пикселем. 32 столбца как на спеке — 8k. А хочешь 320 пикселей в ширину, как на всех нормальных компах обычно — 10k. И то, что эта схема НЕ ДИКТУЕТ единственно возможную ширину экрана, как у Альтвассера — жирный ПЛЮС.
Тут еще один факапчик из-за банального незнания как регенерируется DRAM.
К сведению: tREF по даташиту MAX 2 ms. Бит h7 — половина высоты растра. Сколько это ms?
Нет, еще один факапчик тут опять у тебя из-за привычки очень выборочно читать. К сведению: выше сказано, что могла усложниться схема регенерации. И дело даже не в h7, а в том, что не перебираются все столбцы. Переделывать ничего не требуется, а достаточно 1-2 «лишних» чтений на строку растра, что практически процессор не замедляло бы (но, возможно привело бы к удорожанию изделий на пару фунтов, если бы не влезло в юлу).
Я сейчас не помню кто первым изобрёл копирование буфера в экран стеком. Но точно помню что это было раньше, что-то типа 1985 или 1986; думаю к 1989, которых не клали в экран стеком, просто уже увольняли по профнепригодности :)
Лёш, про стек наверное в 89 так же говорили) Команды PUSH и POP нужны для того, чтобы сохранять и восстанавливать значения! Не надо придумывать для них странное применение, зачем помещать стек в экранную область? ЕРЕСЬ СЖЕЧ!
@tsl, походу в этом треде жгут вообще поголовно все!
Пояснение для некодеров: DAA — это команда для коррекции нормальной арифметики в применении к числам в BCD представлении. Неважно, что это заклинание означает, но важно понимать, что это странная команда для немного странной вещи, узкоспециализированная. Всякий раз когда кодер придумывает какое-то применение для DAA вне BCD чисел, все остальные кодеры сбегаются в восхищении, чтобы выразить своё почтение и внести изобретателя на руках на Олимп.
Если ты всерьёз сейчас расскажешь, как применить DAA для ускорения вычисления адресов в экране спектрума, у тебя добавится много новых поклонников.
Поскольку атрибуты лежат в одном столбце с пикселями, то старший байт адреса один, то есть совпадают уже 6 бит.
Последний совпадающий бит найти можно, например, если начинать распределять байты от средней линии.
Инженеры не пользуются подобной терминологией, в электронике сложно представлять «средние». Именно этот образ мышления, терминология и форма выражения мысли поначалу вводит в полный ступор.
То есть центр столбца по высоте это младшие байты адреса для пикселей #7F и #80, соответствующих атрибутов — #00 и #FF.
Сдвиг от центра на пиксельную линию — #7E и #81 против тех же #00 и #FF.
Сдвиг на знакоместо — #77 и #88 против #01 и #FE. Совпадает старший бит младшего адреса.
Все 7 нужных совпадающих бит нашли.
Не удивительно, что я долгое время не мог ничего понять, у меня даже мысли не работают подобным извращенно-искривленным образом, чтобы я смог до такого додуматься. Смеялся я дооолго...
Ндаа… и эти люди раскритиковали Sinclair ZX Spectrum!
Объясняю, что тут такое придумано.
Lethargeek предлагает чтобы layout (адресация) была такой:
Address | Type | Comm.
--------------------------------
#xx00 Attrs Начало столбца из 256 байт, байт атрибутов <--+
#xx01 Attrs Следующий адрес атрибутов |
#xx02 Attrs И так далее, байт атрибутов |
... | Соответствие
... | центр.пикс = край атр.
#xx7E Pixels |
#xx7F Pixels <- Пиксель -1 по вертикали от центра <--+
--- условная линия разделяющая экран по высоте ------
#xx80 Pixels <- Пиксель +1 по вертикали от центра <--+
#xx81 Pixels |
|
... |
#xxFD Attrs |
#xxFE Attrs Предпоследний байт в столбце, байт атрибутов |
#xxFF Attrs Последний байт в столбце, байт атрибутов <--+
То есть, в центре столбцов — пиксели, а по краям столбца сверху и снизу атрибуты.
При этом лежащие ближе к центру столбца (по-вертикали) байты пикселей соответствуют атрибутам ближе краю (по-вертикали) экрана.
Т.е. в начале адресов #xx00..#xx0F лежат атрибуты, далее с адреса #xx10 до адреса #xxEF идут пиксели, затем по адресам #xxF0..#xxFF снова лежат атрибуты.
Адресация такова:
двигаешься по пикселям вверх, адрес атрибутов спускается вниз.
двигаешься вниз, адрес атрибутов идёт вверх.
Высота экрана 224 строки (#E0).
Lethargeek должен быть внесен в анналы спектрумистов как выдумщик
самого наибольшего hardware-извращения, какое только можно представить.
За сим нарекаю справедливо заслуженным титулом «хардварный Петросян». :)))))
О байтах и «русском языке».
Я тут пару сообщений назад все хотел тебе сказать:
в общепринятом смысле «байты» (октеты) в адресе видеоконтроллера,
выставляемого на DRAM отсутствуют,
поскольку ША видео-адреса, будучи представленной выводами счётчиков,
не пересекается с микропроцессорной ША, вот такая для тебя шокирующая новость.
Однако говорить о старшей и младшей части адреса можно.
14 бит, 2^14 = 16384.
У вас факапчик-с приключился с видеообластью объемом 16кб.
RAS: c13, с12, с11, с10, с9, с8,h7
Тут еще один факапчик из-за банального незнания как регенерируется DRAM.
К сведению: tREF по даташиту MAX 2 ms. Бит h7 — половина высоты растра. Сколько это ms?
Сорян, придется всё переделать, чтобы заработало в реальности.
P.S.
И, кстати, по своим ощущениям — когда действительно этот мой библиотечный по духу код несколько вырос и я оценил просто как он при этом набухает байтами, то мне самому показалось, что без умения выкидывать неиспользованные функции, как полагается в ЯВУ, оно больше потом будет обременять в реальных вещах, чем помогать. Для асма вроде такая оптимизация не проходит, т.к. понятие функции слишком аморфно ведь.
Не паясничай. И ты еще смеешь обвинять меня в клоунаде…
Вот цитата из его интервью: «This was a bit of a breakthrough at the time. The key to it was some very efficient code for copying the 4K of active screen area (256x128) during the screen refresh. I had to draw each frame in a separate block of RAM (4K) and then copy it across to the graphics area when the machine had finished drawing that part of the screen to the CRT. So I wrote a routine treated the screen memory like a stack, using every register of the CPU (including the alternates), pushing and popping 16 bytes at a time.»
Закольцованный экран без края?
Ват зе… Прям слышно как трещит мой шаблон...
Я всё понял. Страшный ты человек, зря я с тобой связался...
Пацаны, бегите… :)))
иииииишто? Кто сказал из религиозных авторитетов, что регенерация должна осуществляться именно чтением растра для отображения и никак иначе?
Дурачок? Если нет, то прекращай включать дурачка. Даже в спектруме есть огромный промежуток в регенерации в 152 строки развёртки, почти полкадра. То есть достаточно делать один лишний доступ во время hblank, последовательно перебирая RAS от 0 до 127 — промежуток даже меньше получится. Можно даже применить для этого штатный счётчик строк видеоузла (но тогда на один hblank могут понадобиться два доступа, если промежуток в 184 строки слишком долгий).
Всё рабочее. Заканчивай клоунаду. От тебя жду формулу «коэффициента извратности перестановок»
Я конечно видел много клоунады, но такую чтобы мой оппонент сначала что-то нарисовал или написал,
а потом, несмотря на четко нарисованные биты, заявил что я должен якобы представлять это не так (при том что написал/нарисовал — он всё вполне четко) — вот такую изворотливость я вижу впервые.
Поздравляю. Ведь если уменьшить количество столбцов, уменьшится количество бит (или диапазон пересчета) и будет происходить регенерация не всех строк DRAM.
Дело в том что у тебя нарушена регенерация памяти и железо не рабочее. Дело в этом.
И пустым птицебольством «выше сказано, что могла усложниться схема регенерации» — не отделаешься.
Дело за малым, жду от тебя столбцовую раскладку адресов, такую чтобы работало.
Приведи корректные биты адреса, идущие от контролера к DRAM 4116. Если это возможно в реальности, а не в диванных мечтах.
Нет, у ТЕБЯ они работают таким образом, если ты извращённо-искривлённый спектрум считаешь лучше. Это же именно на спектруме приходится извращаться для такой простой операции, как сдвиг по вертикали экранного адреса. Да и для вычисления по координатам самого адреса.
Ты неправильно используешь слово «край». У закольцованной структуры нету краёв. У фрагментов же внутри такой структуры край считается по выходу за фрагмент.
Если что, я не претендую на единоличное авторство))
Это всё результат одного давнего коллегиального обсуждения.
Ладно, понимаю, со стороны софта у тебя мозги могли быть безнадёжно искривлённо-извращены многолетним программированием на спеке. Но вот с чего ты в hardware извращение усмотрел? Применяется ведь тот же самый приём, что в спектруме — перепутывание адресных линий. А теперь ВНИМАНИЕ, ВОПРОС: ПОЧЕМУ ОДНО ПЕРЕПУТЫВАНИЕ ТЫ СЧИТАЕШЬ ИЗВРАЩЁННЕЙ ДРУГОГО? Ведь у тебя наверняка есть какие-то СЕРЬЁЗНЫЕ основания (раз уж ты такой серьёзный Непетросян)) Напиши, пожалуйста, нам здесь серьёзную формулу для вычисления КОЭФФИЦИЕНТА ИЗВРАТНОСТИ по заданной комбинации 14 неповторяющихся номеров! :|
ну и к чему тогда пустая придирка выше? Чтобы только показать вумность?
Нет, здесь факапчик-с у тебя приключился. Ты не подумал, что 16k нужно было бы для всех теоретических 64 столбцов, но столько даже в тв-строку не влезает с квадратным пикселем. 32 столбца как на спеке — 8k. А хочешь 320 пикселей в ширину, как на всех нормальных компах обычно — 10k. И то, что эта схема НЕ ДИКТУЕТ единственно возможную ширину экрана, как у Альтвассера — жирный ПЛЮС.
Нет, еще один факапчик тут опять у тебя из-за привычки очень выборочно читать. К сведению: выше сказано, что могла усложниться схема регенерации. И дело даже не в h7, а в том, что не перебираются все столбцы. Переделывать ничего не требуется, а достаточно 1-2 «лишних» чтений на строку растра, что практически процессор не замедляло бы (но, возможно привело бы к удорожанию изделий на пару фунтов, если бы не влезло в юлу).
Пояснение для некодеров: DAA — это команда для коррекции нормальной арифметики в применении к числам в BCD представлении. Неважно, что это заклинание означает, но важно понимать, что это странная команда для немного странной вещи, узкоспециализированная. Всякий раз когда кодер придумывает какое-то применение для DAA вне BCD чисел, все остальные кодеры сбегаются в восхищении, чтобы выразить своё почтение и внести изобретателя на руках на Олимп.
Если ты всерьёз сейчас расскажешь, как применить DAA для ускорения вычисления адресов в экране спектрума, у тебя добавится много новых поклонников.
Инженеры не пользуются подобной терминологией, в электронике сложно представлять «средние». Именно этот образ мышления, терминология и форма выражения мысли поначалу вводит в полный ступор.
Не удивительно, что я долгое время не мог ничего понять, у меня даже мысли не работают подобным извращенно-искривленным образом, чтобы я смог до такого додуматься. Смеялся я дооолго...
Ндаа… и эти люди раскритиковали Sinclair ZX Spectrum!
Объясняю, что тут такое придумано.
Lethargeek предлагает чтобы layout (адресация) была такой:
То есть, в центре столбцов — пиксели, а по краям столбца сверху и снизу атрибуты.
При этом лежащие ближе к центру столбца (по-вертикали) байты пикселей соответствуют атрибутам ближе краю (по-вертикали) экрана.
Т.е. в начале адресов #xx00..#xx0F лежат атрибуты, далее с адреса #xx10 до адреса #xxEF идут пиксели, затем по адресам #xxF0..#xxFF снова лежат атрибуты.
Адресация такова:
двигаешься по пикселям вверх, адрес атрибутов спускается вниз.
двигаешься вниз, адрес атрибутов идёт вверх.
Высота экрана 224 строки (#E0).
Lethargeek должен быть внесен в анналы спектрумистов как выдумщик
самого наибольшего hardware-извращения, какое только можно представить.
За сим нарекаю справедливо заслуженным титулом «хардварный Петросян». :)))))
Я тут пару сообщений назад все хотел тебе сказать:
в общепринятом смысле «байты» (октеты) в адресе видеоконтроллера,
выставляемого на DRAM отсутствуют,
поскольку ША видео-адреса, будучи представленной выводами счётчиков,
не пересекается с микропроцессорной ША, вот такая для тебя шокирующая новость.
Однако говорить о старшей и младшей части адреса можно.
14 бит, 2^14 = 16384.
У вас факапчик-с приключился с видеообластью объемом 16кб.
Тут еще один факапчик из-за банального незнания как регенерируется DRAM.
К сведению: tREF по даташиту MAX 2 ms. Бит h7 — половина высоты растра. Сколько это ms?
Сорян, придется всё переделать, чтобы заработало в реальности.
Глянул документацию по SjASMPlus — и интуиция не подвела. Там есть для этих оптимизационных целей ключевое слово IFUSED. Прикольно, прикольно…
И, кстати, по своим ощущениям — когда действительно этот мой библиотечный по духу код несколько вырос и я оценил просто как он при этом набухает байтами, то мне самому показалось, что без умения выкидывать неиспользованные функции, как полагается в ЯВУ, оно больше потом будет обременять в реальных вещах, чем помогать. Для асма вроде такая оптимизация не проходит, т.к. понятие функции слишком аморфно ведь.