Блог страдающего Лиса
Lorem ipsum hello dolor sit world amet
25 ноя 2024 Пн
Невероятный 2000-й год
REM Сначала написать программочку OPEN "DOS" FOR OUTPUT PRINT# "1999 г. NORTON COMMANDER" PRINT# 0 CLOSE RUN NEWТак заканчивался мой год, 1999 и начинался новый год, новое десятилетие, новое столетие и новое тысячелетие. Это был самый огромный юбилей тех, кто родился однажды ровно 2000 лет назад, 1 января. Для меня этот год стал одним из переломных, когда в моей жизни наступили новые времена, когда я смог написать свою первую, и самую любимую программу.
Это было потрясающее время новых перемен, когда мне исполнилось 12 лет. В возрасте двенадцати лет я переступил в новое тысячелетие, имея на столе из еды ровно ничего, но держа в руках старую карту МТС и рисуя буквы программы, которую я запомнил на всю свою жизнь и которую я обожаю.
Первое, что я стал искать в этом замшелом городке, так это место, где можно было бы посидеть на компе. Оттуда же, откуда я приехал в 1999-м году, примерно к началу лета, я ходил и в небольшой кружок, где колпачил на БК-0010, на УКНЦ иногда, а также посещал компьютерный класс в местном ГПТУ, чем был несказанно рад, потому что я мог реализовывать свои программы и на Корвете, в том числе, на том Бейсике, что поставлялся с ним, и даже иногда прикоснуться к сверхкомпам вроде Pentium
I
, состоящему в одном экземпляре, и даже — это было пределом мечтании — выйти в интернет с модема!Так что относительно скоро, а именно на следующий день, одним погожим утром я шел по мосту через реку и смотрел на мир с радостью, несмотря на то, что радоваться было нечему, прямо за рекой зашел в компьютерный клуб, где стояли компы Pentium
II
и где люди играли в SimCity и Quake 2 с графическим ускорителем...Изголодавшийся по компам, я испытал откровенный шок, смотря на невероятно плавную, трехмерную графику, с непостижимым образом размытую с помощью неведомых методов. Я привык к тому времени видеть максимум что пикселизированную псевдотрехмерную графику, а тут... а тут на моих глазах творилось волшебство и настоящая магия. Я никогда в жизни не забуду, как меня чуть ли не трясло от восторга, как я мог часами смотреть на то, как играют люди в эти игры. Я с восхищением смотрел на Сим Сити, и думал о том, что это наверное, сон.
Я только абсолютно не помню, что я видел, какую из версии — 2000 или 3000. Одна из них вышла в 1993 году, вторая в 1999. Но это уже неизвестно мне, память стерла точные воспоминания об этом событии. Лишь только помню как стоял и глазел с широко распахнутыми глазами и открытым сердцем, на игру. С тех пор меня неотступно преследует желание создать собственную трехмерную графику. В целом я принципы формирования графики понял, но это все не то...
Но, смотреть на компы, не имея ни гроша денег в кармане... конечно, интересно, но не то что я бы хотел, и потому стал искать место, где я мог бы сидеть за компами, программировать. И такое место было найдено, я пришел очень вовремя, потому что в городе открывал один хороший человек собственный компьютерный клуб, именно в 1999-м году.
Занятия проводились раза 2 в неделю, но для меня эти занятия стали настоящей отдушиной в моей тяжелой жизни на тот момент. Количество и разнообразие компов было велико, там был и мой любимый УКНЦ, и БК0010, и даже заветные 286. Но моя страсть был именно УКНЦ. Он был не просто компом, у него был диск, а это то, чего я так долго ждал в своей жизни! Теперь у меня был, наконец-то, диск! Это конечно, был диск 5-дюймовый, но ведь это был именно диск, а не то, как я раньше делал, вводил программы снова и снова, снова и снова.
Поднатаскавшись программировать на этом компе, одним холодным вечером с воющим ветром из окна и сквозняком, с ледяными полами, я приступил к разработке моей самой крупной программы на тот момент, а именно - Нортону Коммандеру, который я так любил в детстве, который я запомнил с того момента, когда мне исполнилось 5 лет. Я откуда-то чудом раздобыл карту МТС покрытия Москвы и писал программу на задней его стороне. Карта была огромной, и места хватало. У меня был невероятный дефицит бумаги в тот период жизни. Теперь же я коллекционирую тетради.
Программу я писал очень долго, примерно неделю. Я не знаю то, получилась ли она, потому что ни разу в жизни ее не смог ввести в УКНЦ, чтобы проверить это. Однако, у меня получилось ввести первую часть программы... и она не работала. Да, я смог на УКНЦ ввести примерно страницу, но программа содержала ошибки. Вот так вот. Я скажу так, что программировать на бумаге не самая лучшая затея, но у меня не было тогда никакой возможности ввести такой огромный текст программы на учебном компе за приемлемое время.
17 ноя 2024 Вс
Нарисовать Night City
Мне помню, очень нравилось кодом рисовать ночные города под светом фонарей в дождливую ночь. Надо продолжить эту традицию и нарисовать Night City более цветасто и более детализированно, чем я делал до этого. Все это надо нарисовать в разрешении 320 на 200, 256 цветов. Это важно. Без этого никуда.
Впрочем, мне все равно уже.
Впрочем, мне все равно уже.
16 ноя 2024 Сб
Новое веяние графического построения
Наконец-то у меня появилась возможность просто взять и сделать программу, которая бы рисовала кодом, а не это вот все. Теперь я могу просто брать и в своей админке проверять то, что не мог проверять раньше, а именно нарисовать например, вот таким кодом:
Причем совершенно невозбранно. Это классно, ведь теперь есть возможность быстро рисовать и проверять кодом и загружать картинки вот сюда в блог и не только. Раньше мне приходилось очень сложно и много рисовать в Quick Basic, но эти времена ушли и стали наступать новые, более интересные времена.
Еще у меня есть микросхема EPM240 и я отчаянно пытаюсь придумать ей применение. Один из вариантов, сделать для нее подключение к микросхеме памяти и юзать на полную катушку. С другой стороны, надо бы придумать что-то поинтереснее, чем просто создавать одно и то же постоянно. Самым удобным методом было бы конечно, загрузить программу в SRAM и там исполнять ее, но проблема в том, что эта SRAM работает срамно медленно. Ну вот если посудить, то чтобы запросить один байт памяти, требуется отослать 8 бит команду, 16 бит адреса и 8 бит данных (чтение или запись). Медленно, крайне медленно, даже если запускать на 12.5 мгц, то это скорость 390625 байт в секунду. Для сравнения, спектрум читал 875000 байт в секунду, что быстрее в 2.24 раза.
С другой стороны, если отбросить все умозаключения и страдания из-за скорости, то что меня парит? 381кб в секунду это не прямо настолько мало, чтобы совсем ничего не делать. Но проблема еще в том, что графику надо бы где-то отображать... То есть, если еще и читать из этой памяти графику, то скорость работы процессора вообще будет невероятно медленной.
Итак, представим что надо отобразить экран 256 на 192, это значит что придется запрашивать на скорости 12.5 мгц, а значит что эффективных тактов будет 256/400, так как строк по ширине у VGA для разрешение 640 на 400 будет равно 800. Итак, это дает 64% загрузки, остается лишь 4.5 чтения из памяти на один сканлайн.
Хорошо, это слишком медленно и представим что мы следуюший сканлайн вообще выводить не будем. Это дает 400 тактов / 32 = 12.5 чтений или записей на 1 линию. Итого, на две линии будет суммарно около 17 чтений или записи. Всего строк 192, а значит, 3264 байт на кадр. Помимо 192 строк, остаются свободными 65 строк на гашение кадра и прочей лабуды. Это дает 65*12.5 = 812 байт на кадр.
Итого 4076 байт на кадр или 4076x60 = 244560 байт в секунду, 238Кб в секунду. На самом деле, это не так плохо! 40% падения производительности с пропуском сканлайнов.
И получится то, что можно с последовательной SRAM выводить как графическое изображение, так и выполнять код одновременно с выводом, что очень неплохо. Надо теперь подумать, как бы реализовать такую минималистичную систему и процессор для этого дела. Ведь количество LE крайне ограничено. Смогу ли я вообще сделать в таком небольшом объеме хоть что либо? Кто знает.
cls(); let cat = "CAT on THE KittyCat"; for (let i = 1; i < 100; i++) circle(160,100,i,clr(i)); print(cat,86,11,clr(15)); print(cat,85,10,clr(0));И при этом получиться такая вот картинка.
Причем совершенно невозбранно. Это классно, ведь теперь есть возможность быстро рисовать и проверять кодом и загружать картинки вот сюда в блог и не только. Раньше мне приходилось очень сложно и много рисовать в Quick Basic, но эти времена ушли и стали наступать новые, более интересные времена.
Еще у меня есть микросхема EPM240 и я отчаянно пытаюсь придумать ей применение. Один из вариантов, сделать для нее подключение к микросхеме памяти и юзать на полную катушку. С другой стороны, надо бы придумать что-то поинтереснее, чем просто создавать одно и то же постоянно. Самым удобным методом было бы конечно, загрузить программу в SRAM и там исполнять ее, но проблема в том, что эта SRAM работает срамно медленно. Ну вот если посудить, то чтобы запросить один байт памяти, требуется отослать 8 бит команду, 16 бит адреса и 8 бит данных (чтение или запись). Медленно, крайне медленно, даже если запускать на 12.5 мгц, то это скорость 390625 байт в секунду. Для сравнения, спектрум читал 875000 байт в секунду, что быстрее в 2.24 раза.
С другой стороны, если отбросить все умозаключения и страдания из-за скорости, то что меня парит? 381кб в секунду это не прямо настолько мало, чтобы совсем ничего не делать. Но проблема еще в том, что графику надо бы где-то отображать... То есть, если еще и читать из этой памяти графику, то скорость работы процессора вообще будет невероятно медленной.
Итак, представим что надо отобразить экран 256 на 192, это значит что придется запрашивать на скорости 12.5 мгц, а значит что эффективных тактов будет 256/400, так как строк по ширине у VGA для разрешение 640 на 400 будет равно 800. Итак, это дает 64% загрузки, остается лишь 4.5 чтения из памяти на один сканлайн.
Хорошо, это слишком медленно и представим что мы следуюший сканлайн вообще выводить не будем. Это дает 400 тактов / 32 = 12.5 чтений или записей на 1 линию. Итого, на две линии будет суммарно около 17 чтений или записи. Всего строк 192, а значит, 3264 байт на кадр. Помимо 192 строк, остаются свободными 65 строк на гашение кадра и прочей лабуды. Это дает 65*12.5 = 812 байт на кадр.
Итого 4076 байт на кадр или 4076x60 = 244560 байт в секунду, 238Кб в секунду. На самом деле, это не так плохо! 40% падения производительности с пропуском сканлайнов.
И получится то, что можно с последовательной SRAM выводить как графическое изображение, так и выполнять код одновременно с выводом, что очень неплохо. Надо теперь подумать, как бы реализовать такую минималистичную систему и процессор для этого дела. Ведь количество LE крайне ограничено. Смогу ли я вообще сделать в таком небольшом объеме хоть что либо? Кто знает.
<< Ранние записи |
Поздние записи >>