LINUX.ORG.RU
ФорумTalks

Многопоточность на ZX Spectrum

 , ,


0

4

В продолжение темы про извращения на вычислительных устройствах, которые провоцировало глобальное безкомпьютерье на необъятных просторах СССР.

тема собственно вот Интерпретатор языка для МК-61

А это история как извращенец(ТС) немного подрос - заколебал всех своим калькулятором МК-61 и разброссаными книжками и журналами про самосборные компы типа ЮТ-89, схемы которого и код прошивки ПЗУ печатались в Приложении к Юному технику.

И примерно в 14 лет у меня появился клон ZX Spectrum 48.

Это была наколеночносборная, кривоватая коробка с потёками клея, жаль что фоток не сделал тогда... :(

К моему счастью, у папы было несколько сотрудников, которые увлекались «непадецки» такого рода фигнёй как паять всякие микросхемы на платы и подрубать к ним кассетные магнитофоны, а потом клацаться в игры. Цветные! У меня даже джойстик был!

К этой коробке с кривыми, залипающими клавишами и постоянно сползающими наклейками, мне папины друзья вручили ещё пару килограмм литературы по встроенному бейсику, по архитектуре компа и полную распечатку справочника по ассемблеру проца Z-80.

И тут понеслась новая спираль извращений над вычислительной техникой.

Я уже знал, что есть компы с графическими операционными системами типа Виндовс и Мак ОС. И я даже где-то слышал что там можно запускать несколько процессов параллельно.

Извращался я над этой коробкой много и страшно. Практическуи сразу начал писать на ассемблере... потому как встроенный бейсик тормознутая фигня.

Практически самой первой программой на ассемблере была запись и воспроизведение звука через порт по которому передавались игры на/с магнитофона. Звук был однобитный - потому жутко свистящий и скрежещащий но наговариваемые слова вполне можно было различить и при достаточной треннеровке даже узнавать по голосу. записывалось конечно очень мало, несколько секунд с частотой дискретизации 10000 Гц

Так как прогу писал на бамажке и проводил проверку над ошибками там же, то был жутко удивлён что прога заработала с первого раза.

Писал потом игры всякоразные к счастью не всё на ассемблере (нашёл КОМПИЛЯТОР! бейсика) и ещё всякой фигни... Но всё таки, я всё продолжал хотеть «Настоящий компьютер». Потому стал заниматься разработкой многопоточной операционки. И кое что у меня даже получилось.

Вплоть до того, что я запускал 3 программы: одна играла музыку, воторая гоняла по экрану точку, которая отпрыгивала от занятых пикселей и от краёв экрана, а третьей была сама среда программирования бейсик встроенная в ZX. Забавно было наблюдать, как точка отпрыгивала от набираемого мной текста на бейсике.

На бескомпьютерье и лист бумаги - IDE.

Ответ на: комментарий от imul

Я писал на ассемблере и по прерыванию начала кадра перерисовывал весь кадр. занимало примерно треть производительности компа. вобщем повысить на несколько оттенков подменяя растр изображения и палитру можно было и у меня получилось. но производительность падала на треть + нужно было динамически рисовать 2 кадра - вобщем для просмотра статичных картинок можно было использовать типа как имедж вьювер, но мерцание убивало глаза за пару минут.

Serg_HIS
() автор топика
Ответ на: комментарий от Serg_HIS

Что такое по вашему палитра?

Палитра - это когда у тебя вагон цветов (к примеру, 256), но использовать за раз на экране ты можешь не больше, например, 16-ти.

Black_Shadow ★★★★★
()
Ответ на: комментарий от Black_Shadow

хотя палитра = это не только для цветов ;)

например есть палитра запахов и т.п.

Serg_HIS
() автор топика
Ответ на: комментарий от Black_Shadow

из общего набора

подсказка. Назови одним словом общий набор цветов.

:)

Serg_HIS
() автор топика
Ответ на: комментарий от Black_Shadow

Назови одним словом общий набор цветов

Serg_HIS
() автор топика
Ответ на: комментарий от Black_Shadow

Ты лишь бы вброс сделать?

Мозг есть?

Serg_HIS
() автор топика
Ответ на: комментарий от Black_Shadow

Я про ЦГА графику знаю больше чем ты видимо можешь себе представить.

Но что такое палитра так ты и не понял

палитра - доступные цвета.

Serg_HIS
() автор топика
Ответ на: комментарий от Serg_HIS

Што? Сам-то что принял?

Я просто сказал что таких динозавров не застал, и моим первым компьютером был IBM AT с 286-ым процессором, не знаю чому ты так возбудился.

iz_tabakerki
()
Ответ на: комментарий от iz_tabakerki

Там, правда, тогда только сенсорный экран, микроволновка и купюроприёмник были. Гуй был на дотнете 2.0, железо дёргалось через лпт порт

iz_tabakerki
()
Ответ на: комментарий от iz_tabakerki

У меня два вопроса которые не коррелируют с вашими высказываниями.

На чём нынче пишут не программисты и что нынче считается ранней молодостью?

Serg_HIS
() автор топика
Ответ на: комментарий от iz_tabakerki

ну хоть не 13 и не ассемблер - отлегло :)

Serg_HIS
() автор топика
Ответ на: комментарий от Serg_HIS

Я про ЦГА графику знаю больше чем ты видимо можешь себе представить.

Реализуй её нормально в dosbox'е.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Реализуй её нормально в dosbox'е.

Нет времени.

Я вообще просто так вспомнил былую школьную, «славную» историю пред начала массового (программирования?) в пост СССР.

Сейчас всё более глобально.

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

Serg_HIS
() автор топика

Очень интересно узнать, как сложилась в итоге судьба. По двум темам ясно, что многое умел еще в 13-14 лет. Пригодился опыт? Кем и где работаешь?

CaptainFarrell
()
Ответ на: комментарий от Serg_HIS

палитра - доступные цвета.

Палитра - доступные в текущем режиме цвета, а не все цвета, поддерживаемые графической системой.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от Serg_HIS

1. Средняя длина команды у z80 - примерно 15 тактов. Это тебе не 286-я машина. 2. Чтобы оцифровать 10 khz, надо цифровать 20. Теорема Котельникова. Таким образом, теоретически, уложиться можно, но если ты это сделал, то ты реально крут. Я тебе не верю, ты врёшь.

lenin386 ★★★★
()

Я так понимаю, для многопоточности использовалось прерывание от кадровой развертки. Все время думал, что его обработчик находится в ПЗУ и к нему не прицепиться. Или там какие-то системные переменные для этих целей были? Я в свое время на ассемблере Z80 писал программу печати изображения с экрана на матричном принтере в полутонах. Еще что-то писал на паскале и форте.

Rupricht ★★
()
Ответ на: комментарий от Serg_HIS

Судя по всему объяснять бестолку если у вас другое понимание палитры от принятого в компьютерной техники и физиологии зрения человека.

У меня правильное понятие палитры. Более того, я неплохо знаю схемотехнику спектрума и достаточно много в свое время для него писал.
Но вы можете продолжать балабольство, может вас на рентв автором бредопрограмм возьмут.

andreyu ★★★★★
()
Ответ на: комментарий от Serg_HIS

подменяя растр изображения и палитру

Млять, какую палитру в спектруме вы подменяли?

но мерцание убивало глаза за пару минут.

Мультиколор вполне себе рабочее решение, только к палитре никакого отношения не имеет.

andreyu ★★★★★
()
Ответ на: комментарий от Serg_HIS

Я писал на ассемблере и по прерыванию начала кадра перерисовывал весь кадр. занимало примерно треть производительности компа.

Ты всё врёшь. На прерывание у Спектрума ~70k тактов, экран ~7килобайт. Итого, у тебя на изменение 1 байта 10 тактов. Для z80, это абсолютно невозможно. Есть правда один хак, одна волшебная команда push, которая заполняет 2 байта за 11 тактов. Но даже если твоя перерисовка - это тупо fill, и ты нахерачил 3.5 килобайта push-ей, то даже это съест >50% производительности, и ты уже соврал. Но ты же понимаешь, что если твоя картинка - что-то более сложное, чем заливка экрана одним цветом, то математика будет уже совсем другая. FPS на спектрумах очень редко выше 10, и перерисовывается только часть экрана, и это всё, что они могут. Это самый-самый ассемблер.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 3)
Ответ на: комментарий от Rupricht

Я так понимаю, для многопоточности использовалось прерывание от кадровой развертки. Все время думал, что его обработчик находится в ПЗУ и к нему не прицепиться. Или там какие-то системные переменные для этих целей были?

Регистр такой есть. Туда пишешь цифирьку, и эта цифирька формирует адрес, куда будет обращение по приходу прерывания.

lenin386 ★★★★
()
Ответ на: комментарий от imul

У спектрума nmi к таймеру цеплялось?

Это не nmi. Это его единственное прерывание, вполне себе маскируемое. Цеплялось на таймер (счётчик тактов), да.

lenin386 ★★★★
()
Ответ на: комментарий от Serg_HIS

У него было 4 канала.

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

Никто не считает генератор шума отдельным каналом. Но даже если допустить твою классификацию, но там был ещё генератор огибающей, так что по твоей классификации у AY было 5 каналов. Но никто так не считает, физически звуковых ног у микросхемы 3, и этот генератор всеми называется трёхканальным.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от lenin386

На 128 можно банки переключать. Я не помню, касалось ли это видеопамяти, если да - то можно заранее подготовить 2 банка с готовыми изображениями, а затем их попеременно менять.

Black_Shadow ★★★★★
()
Ответ на: комментарий от Black_Shadow

Да, всё так и было, но это всего лишь уберёт (сделает проще) проблему моргания, перерисовывать экран быстрее это не поможет.

lenin386 ★★★★
()
Ответ на: комментарий от Serg_HIS

Звук был однобитный - потому жутко свистящий и скрежещащий

И на сколько секунд у тебя памяти хватало под 10 kbit/s?

У меня на «Дельта-С» (Z80) было < 48 Кбайт ОЗУ.

Я когда-то тоже выводил звук на «пищалку», но вроде - уже на 286, на спектрумах только однотональный писк + covox + AY, на асме (zeus).

pacify ★★★★★
()
Ответ на: комментарий от Serg_HIS

Ностальгия

Я писал на ассемблере и по прерыванию начала кадра перерисовывал весь кадр. занимало примерно треть производительности компа

Хе-хе. У меня выходило примерно 10-15 FPS на Turbo Pascal + EGAVGA.bgi, без асма (INTEL 80286, 12 MHz). Графика 4 бита из палитры 64 цветов, 640x350 стандартный режим. Рисовалось 2-3 невыпуклых тела из десятка полигонов с вычислением и отрисовкой тени от каждого. Точечный источник света.

pacify ★★★★★
()
Ответ на: комментарий от lenin386

Чтобы оцифровать 10 khz, надо цифровать 20

Ты всегда на внимательно читаешь.

Перечитай что там у меня 10000Hz (именно дискретизация)

Думаю вложился бы и в 20000Hz но мне не нужно было, потому как памяти мало и я делал не звукозаписывающую студию.

Serg_HIS
() автор топика
Ответ на: комментарий от andreyu

Я выше уже описал принцип визуального расширения палиты, который я реализовал. Этот принцип даже использован в некоторых демках как для спектрума таки и для IBM PC.

К схемотехнике никакого отношения не имеет, как например и стерео изображение. Это относится к физиологии зрения.

Выдохни.

Serg_HIS
() автор топика
Ответ на: комментарий от lenin386

Так называемый мультиколор не позволяет увеличивать количество цветов вообще.

Спасибо, кэп.

andreyu ★★★★★
()
Ответ на: комментарий от Black_Shadow

На 128 можно банки переключать.

Да.

Я не помню, касалось ли это видеопамяти, если да - то можно заранее подготовить 2 банка с готовыми изображениями, а затем их попеременно менять.

Можно, это позволяло избавиться от мерцания.

andreyu ★★★★★
()
Ответ на: комментарий от lenin386

Есть правда один хак, одна волшебная команда push, которая заполняет 2 байта за 11 тактов

Эх...

Настоящий хак это был ldir, который перемещал сразу блок памяти из указанной области в указанную, указанное количество байт.

Учись, студент! ;)

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

Serg_HIS
() автор топика
Ответ на: комментарий от Serg_HIS

Я выше уже описал принцип визуального расширения палиты, который я реализовал.

Где? Давайте линк на описание.

Этот принцип даже использован в некоторых демках как для спектрума таки и для IBM PC.

Ваш принцип? :)

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Ваш принцип? :)

извращенцев подобных мне было предостаточно.

просто такой же принцип.

Самому лень почитать внимательно ветку?

Serg_HIS
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.