Обо мне
Привет! Меня зовут Лис и это мой блог. Здесь я могу ныть и страдать, писать про код и обо всем.
Декабрь 2024
ПнВтСрЧтПтСбВс
1
2345678
9101112131415
16171819202122
23242526272829
3031
Теги
Блог страдающего Лиса
Lorem ipsum hello dolor sit world amet

30 янв 2023 Пн Двадцатая попытка создания процессора 8088

Не секрет, что мне нравится писать процессоры снова и снова. Даже я принял это как данность, что процесс написания процессора (какой ироничный каламбур!) мне просто нравится. Несмотря на это, необходима, все равно, цель, иначе процесс то процессом, а что в итоге делаю, сам не пойму, неизвестно. Недавно выложил на ютубе 3.5 часа видео, с того момента записал еще 1 час работы, в котором в целом, прилично было сделано инструкции, но они все так сказать, несложные, однотипные. Например, инструкции mov r, imm или условный короткий переход, все эти инструкции не особо сложные, потому я справился с ними суммарно за 35 минут, а остальные 25 минут делал встраивание процессора в девборду Марсохода2, там где Циклон 3.
Теперь к самому главному. Как ранее я говорил, цель моего всего действия в том, чтобы, когда я сделаю процессор, запихнуть его в какой-нибудь ретро-корпус и запускать очень простые программы. Мне конечно, несколько жалко, что нет диска, чтобы сохраняться, но ничего, не страшно, для этой цели вообще-то, у меня будет процессор AVR. Так вот, что я буду запускать на процессоре? Например, создам экран загрузки BIOS, для сохранения ощущения аутентичности. Второе, что сделаю, это сам Биос, с разными опциями, которые правда, сохранять нельзя... да, вот все упирается в сохранение. Потом я сделаю микробейсик, где можно будет писать и выполнять очень простые программы. За основу возьму 512 байтный бейсик с бутсектора.
Еще у меня есть в планах делать микропрограммы и даже микроигры. Единственное только, что они не поместятся в 32кб и надо диск... да что же такое, везде диск нужен! Эх, видимо, без диска компьютер не может никогда считаться полноценным, поэтому какой-то диск, но прицепить придется. Мне только не хочется делать проводками, а как-то по-хорошему сделать надо, все-таки.
Снимок экрана от 2023-01-30 09-55-04.png
На шилде расширения есть 2 usb разъема, которые я могу применить не совсем так как надо, а прицепить туда sd-карту. Так что без диска никак вообще. Надо думать как его сделать правильно. Конечно, на шилде еще есть место для дополнительных пинов, их тоже можно использовать. Надо проверить, надо все проверить и сделать — без диска никак, как я сейчас только что выяснил.
Теги: 8088

28 янв 2023 Сб Почти три с половиной часа кодинга

Не буду я делать по 8 часов видосы, сделал пока что 3 с половиной часа, и вот что я успел сделать за это время:
instr.png
Моя любимая табличка с выполненными опкодами. Для 8088 интересная ситуация получается, там некоторые опкоды работают не так, как на обычном 86-м процессоре, например, все 60-6F отведены под алиасы. Так как я решил что не буду отклоняться именно от 8088, то там будут алиасы. Более новые программы уже не запустить на этом процессоре... А я и не собираюсь, вообще-то. Максимум HELLO WORLD будет на нем запущен, а для этого даже простейшего процессора хватит.
Проще говоря, хочу создавать простые программы для процессора этого, например, те же сортировки. Ресурсов Циклона 3 хватит. Там много не надо, 38 Кб для программ и данных, 8 Кб для видеопамяти, в итоге и получается 46 Кб. Программы для этого процессора будут предельно простые, вообще. Это важно, прямо вообще важно, потому что когда делаешь такие вещи, хочется сделать что-то большее, чем вывод HELLO WORLD на экране, а что-то такое, сверх-космическое.
Как и обычно, после того как сделаю процессор (если сделаю), то на нём захочется запустить или создать операционную систему. Вот этого делать не надо! Все потому, что для того, чтобы запустить ОС, нужен диск, которого я подключить не могу к Марсоходу. Даже если бы и мог, толку от нее ноль.
Микро-операционная система может быть только для того, чтобы запускать разные мелкие программки из памяти. Например, можно сделать интерпретатор бейсика, который будет запускать заранее загруженные программы. Все должно быть максимально, предельно просто. Вот в чем суть всего того, что я хочу сделать и всегда делал.
Простота программ должна быть обязательно.

27 янв 2023 Пт Создание 8088 процессора под видеозапись

Короче, вот что начал я делать, стал писать процессор на верилоге, но не просто так, а записывая абсолютно все. Процессор с нуля. Единственное что могу смотреть — это доки и какой-нибудь си-код, например, из PCem эмулятора, ну и на сайте у себя тоже. Копипаста запрещается, все должно быть написано руками без копипасты из своих других процессоров. Делаю это для того, чтобы оценить то время, за которое реально создам процессор с нуля. И это должен быть процессор 8088, чтобы он вмещался также в Циклон 3 для Марсохода2.
I8088.jpg
Все отлично знают, что у меня просто мания создавать процессоры, особенно архитектуры 86-го. Много создавал уже разных эмуляторов, и мне очень хочется именно зафиксировать на видео. Оно получится видимо, больше чем 8 часов, но это нормально. Все эти видео специально не буду ускорять, прямо так склейку сделаю и выложу на ютуб себе, сохраню как есть. Ну, может быть, музыку наложу, чтобы совсем не скучно было. Никто смотреть не будет все равно это дело.
На данный момент я работал над процессором 2 часа и 5 минут и за это время смог сделать, но не отладить:
  • Чтение опкода и префикса
  • Сделал АЛУ на 8 операции
  • Чтение байта modrm и считывание опкода из памяти и регистров
  • Запись в память или регистр
На самом деле, это довольно значительно, но поскольку я уже ранее все это делал, то не так сложно. Отладки не выполнял, просто пока что написал по памяти. Посмотрим потом, как это работать будет.
Далее надо сделать исполнение инструкции, и вот тут самая большая проблема. Инструкции выполняются минимум за 2Т, но я принципиально решил, что не буду ничего ускорять. Процессор 8088 и так медленный был и выполнялся на низких частотах (от 5 до 16 Мгц), так что я ровным счетом ничего не потеряю от того, что запущу на 25 Мгц.

26 янв 2023 Чт Немного о спектруме и то, как он у меня появился

Пиииии... тшик. Пииии.... Короче, это была имитация звука загрузки спектрума. Что я могу сказать про него? Вообще я раньше уже рассказывал о моем знакомстве с этим компьютером, возможно, вскользь. Впервые спектрум я увидел, когда попал в город К., перед этим я приехал из города В., и начал активно искать, где бы посидеть за компом. Когда я приехал в город К. в 1999 году, я поступил в 5-й класс, сначала в школу номер 2. Город был мне незнаком и мы несколько раз переезжали, прежде чем оформились в каком-то определенном месте в некоторой квартире. Переездов было довольно много, сначала возле детского сада и школы, потом поближе к школе, потом еще в одном доме на той же все улице. Мы ездили и ездили каждый месяц с места на место и никак не могли найти долговременное жилье, все потому, что у нас не было никаких денег — совсем не было ничего.
Еще одним промежуточным перевалом было месячное проживание в бараке у папиного друга. Странно он к нему относился почему-то. Оба алкаши. А ладно, не буду вспоминать. После барака мы переехали еще в один, еще худший вариант в совсем уж дурной дом. В то время как раз я нашел компьютерный кружок, который только-только открывался и у меня была наконец-то возможность найти свое занятие по душе — программировать. Преподавателем этого кружка был С.Ю., человек достаточно странный и интересный с какой-то стороны. Я уже не могу точно сказать ни как он выглядел, ни какой он был человек. Память постепенно стирается...
Когда я туда пришел, там было довольно много учеников, с некоторыми я даже подружился. Помню одного, с которым мы много чего обсуждали — его имя Макс Ч. И вот как раз в этом кружке узнал, что у него был спектрум, причем очень навороченный — 128k с AY-чипом и дисководом. Скорее всего это был Pentagon, судя по всему, или Scorpion, этого я сказать уже не могу, не помню. Помню только то, что этот компьютер меня заинтересовал тем, что на нем была очумительная музыка, диск и там шли графические демки. Они меня по-настоящему очаровали и заворожили. Мне потом все время хотелось нарисовать демки разные и работать с трехмерной графикой.
Помимо спектрума, я также сидел на УКНЦ — именно той, у которой тоже был дисковод и где можно было сохранять и загружать программы. Хотел для нее сделать Norton Commander для бейсика, но так и не смог, и потом уже было бесполезно этим заниматься. Программу я сохранил на будущее, и до сих пор ее держу и дорожу как зеницей ока.
В 2000 году мы переехали в другой дом, который я называю "желтый дом", потому что он был каменный и покрыт желтой краской. В этом доме мы прожили примерно с 2000 по 2007, вроде как, если не ошибаюсь. В то время это была самое длительное время, когда мы жили в каком-то одном месте — аж целых 7 лет! До этого мы постоянно куда-то переезжали, не имея своего жилья и не имея возможности его как-то купить.
И вот в 2000 году мне пришлось устроиться в другую школу, потому что до той школы стало очень и очень далеко ходить, я тратил примерно около часа, только чтобы дойти до той школы. Вроде как я смог закончить 5-й класс и поступить уже в 6-й класс в новой школе, где наконец-то смог доучиться до конца.
Очень интересный рассказ выходит — не о спектруме. Да, в 2000 году у меня этот спектрум как раз и появился на столе. Это был наш первый компьютер, но он был не совсем наш, а того самого Макса М. Появился он еще немного ранее, мне в конце 1999 года дали компьютер домой погонять, я сидел и в том страшном доме пытался что-то программировать. Плохо то, что компьютер этот был без дисковода и пришлось каждый раз программу набирать снова. И вот потом, когда уже мы переехали в желтый дом, там мне дали приличный спектрум, где я и набирал программы до посинения. Только вроде как сохранить так и не мог их, не знаю, почему. Наверное потому, что все равно их надо было сохранять на ленту, а пользоваться TRDOS-ом я не мог, не знал как это делается. Сейчас вроде как знаю, но все равно не пользовался. Так вот и пришлось постоянно набивать программы снова.
Совершенно не помню, что я там пытался делать, на этом спектруме. Я выучил ассемблер тогда на вполне приличном уровне, пытался декодировать ROM, писал на ассемблере и на Бейсике программы до появления 386 в моей жизни. Но то уже другая история, которую я, кстати говоря, уже рассказывал.
На этом, пожалуй, мои странные воспоминания можно завершать.
Теги: Истории

25 янв 2023 Ср Смог ли бы записать длинное видео

Все время думаю про то, смог бы создать что-то вроде очень длинного видео на несколько часов, где разрабатывал бы какой-то проект. Постоянно думаю, и в общем-то, понимаю, что нет, для этого надо конское терпение, ослиное упрямство и отвагу льва, которых нет. У меня ничего нет из вышеперечисленного. Так что хотел бы сделать? Самое интересное, мне уже ничего делать не хочется. Слишком большая усталость от всего и слишком огромный страх. Да и никто такое смотреть точно не будет, даже сам не буду смотреть.
Когда-то хотел сделать трехмерный ускоритель на верилоге, но какой в этом смысл, не понимаю. Есть видеокарты, работают в миллион раз быстрей, чем работало бы что-то на плис. Нет никакого смысла в том, чтобы все это делать, ведь делать придется просто колоссально много и еще для видеокарт требуется просто колоссального размера памяти, как на видеобуфер, так и на текстуры. Ничего из этого мне задействовать не хочется, потому что, если даже и создам такой код, он будет предназначен только для очень больших плис, что совершенно несовместимо. Короче, что-то делать на верилоге полностью бессмысленно, потому что повторяемость этого около-нулевая, вот так вот.
В последнее время, вообще не вижу ни в чем смысла. На верилоге уже не программировал почти месяц, потому что не знаю, что мне программировать на нём такое, что было бы интересно. Заметил, что чем больше микросхема и чем больше в ней логических элементов, тем меньше мне хочется ее программировать. Что за беда такая. Помню времена, когда у меня был только Марсоход2 и для него кодил день и ночь. Столько времени... все бессмысленно. Нет никакого толка в том, что делаю. facepalm
Сейчас изучаю лишь только некоторые алгоритмы. Вчера снова открыл по нейросетям материал и не понял опять его. Нейросети это очень сложная тема, но преодолимая, надо разобраться в том, как устроен этот математический аппарат, зафиксировать его на сайте, обязательно написать статью. Не знаю, насколько это позже, не знаю, смогу ли вообще что-то записать, ведь будущее туманно, не могу даже знать, что будет через день или два, не говоря о более длительном периоде.
Все бессмысленно, ничего не имеет значения, ничего не надо.

24 янв 2023 Вт Заинтересовался алгоритмами

Заметил, что в последнее время заинтересовался алгоритмами. Недавно писал статью по ханойским башням, а вчера полностью смог разобраться с алгоритмом пирамидальной сортировки. Как же удивительно то, каким образом у меня все так получается. Четко помню, как в 9-м классе мне пытались объяснить этот алгоритм и то, как его абсолютно не понял. И потом не понял, и спустя 10 лет не понял, и спустя 15 лет не понял, и вот понял только вчера, причем, как же это оказалось просто!
Как же так? Почему то, что ранее не мог разобраться в чем-то десятилетиями, дается так легко сейчас? Что изменилось? Говорят, с возрастом все только хуже становится, но похоже, это не всегда так. Лет 10 назад не мог разобраться ни в чем, а сейчас все даётся пока что довольно легко. Ушел ли у меня страх? Нет, он только добавился и с каждым разом добавляется все больше.
Опишу вкратце, в чем суть алгоритма сортировки пирамидой. Сначала надо построить пирамиду, чтобы самый верхний элемент был самым большим, и два дочерних элементах были либо меньше, либо равны верхнему. И так должно быть для каждого элемента. Для того, чтобы это сделать, первоначально надо привести пирамиду в такой вид. Как это сделать — я тут описывать не буду, но сделать это можно довольно просто.
Так вот, когда наверху самый большой элемент, это и хорошо. То есть, сверху пирамиды всегда будет самый большой элемент, абсолютно всегда, потому что мы это ранее сделали. Теперь же надо убрать этот большой элемент, записать в конец пирамиды снизу, а из конца же пирамиды вытащить другой элемент и поставить в корень. Количество элементов в пирамиде уменьшается на 1. Теперь элемент, который поставили в корень, опускаем вниз так, чтобы он был на своем месте. Это делается за log(n) шагов, то есть, за то количество шагов, какая высота у пирамиды. Если у пирамиды 128 элементов, например, то высота ее 7 слоев. Значит, чтобы привести в порядок пирамиду после перестановки, надо сделать 7 обменов (максимум).
После этого, в корне опять появится самый большой элемент из оставшихся данных. Снова относим в конец (в данном случае на предпоследний элемент бывшей пирамиды), и повторяем до тех пор, пока не остается 1 элемент — это корень. Алгоритм заканчивается.
Ясное дело, что на словах ничего неясно, но я буду статью писать про этот метод сортировки. Однако, это классно, что получилось в этом разобраться. Вообще-то, хотел этот метод сортировки применить для задачи трехмерного рендеринга на ПЛИС, но так не уверен, что дойду вообще до этой задачи. Она не такая сложная, просто надо очень много делать и мне ужасно лень.

23 янв 2023 Пн Мои дневники

Свои дневники я стал писать еще с очень давних времен, даже вот помню, первый свой сон записал где-то в возрасте 8-9 лет, это была красная ручка (писчая, а не от двери). На протяжении всей жизни пытался записать в дневники, не периодически конечно, все что со мной было, и я могу сказать, что это не зря все. Нет, я не говорю про "Эффект Бабочки", где человек попадал в свое прошлое и менял его, этот фильм мне вообще не нравится. Я говорю только о том, что мне нравится читать свои старые дневниковые записи и прикасаться к своему прошлому.
Вчера я открыл свои старые записи за 2017 год, да и даже за 2012, на самом деле, и могу сказать одно. Ныть и страдать я никогда не переставал, причем что сейчас, что 5 лет назад я занимаюсь все теми же вещами, что занимался, писал процессоры, причем те же самые — avr, 6502, z80, x86. У меня одинаковый ассортимент каждый день. Никакого нового процессора что-то делать мне не хочется. Да и вообще, пока что ничего не хочется делать на верилоге в данный момент, устал и лениво.
Так что, мне нравится вести дневники, чем я в данный момент вообще-то, и занимаюсь, я пишу дневник прямо сейчас и знаю, что через какое-то время буду с удовольствием читать эти записи и вспоминать свое прошлое, даже недавнее. Вот вчера, к примеру, написал статью по алгоритму решения ханойских башен, было весело и классно, поскольку задача то сложная, но легко решается с помощью очень простого рекурсивного алгоритма.
Думаю, что помимо всяких интересных вещей, сюда, в этот блог, я буду писать еще и просто свои дневниковые записи. Может быть, я даже сделаю отдельную секцию, посвященную именно дневнику. Почему бы и нет? У меня на сайте есть теги, теперь бы сделать так, чтобы добавлять картинки невозбранно, то есть, прямо отсюда, с редактора записей.
Могу сказать вот еще что. Каждый день мне дается с трудом, и это факт. Читая свои дневники, я мало вижу в них каких-то особенных достижений, ощущение такое, что делаю я все неохотно, с большим трудом и это очень меня расстраивает. Мне хочется достижений, еще вот заметил, что часто ловлю себя на мысли, что думаю о том, кто и как прочтет мой блог, что об этом подумает. Так не надо, надо всегда делать для себя в первую очередь, чтобы самому было интересно.
Еще хочется порассказывать различных истории. Пожалуй, я скопирую несколько истории из своего ЖЖ, который я ранее делал, ничего в этом не будет страшного, тем более на этом сайте еще сделал так, чтобы гугл не читал мой блог и не смог никто найти мои записи. Они же все равно не несут никакой ценности для других. Только для меня.
Теги: Дневник

22 янв 2023 Вс Вчера получил книгу FoxPro2

Наконец-то мне пришла книжка "Программирование в среде СУБД FoxPro 2.0" 1994-го года издания, автор А.А.Попов. Не столько сами книга интересна, как ее история, которую я уже ранее рассказывал и повторять не буду сейчас. Эта книга прямо один к одному выглядит как та книга, которая была. Это и есть та самая книга, утерянная в глубинах прошлого тысячелетия.
Я смог прочитать аж 4 страницы, на чем мое знакомство с книгой пока что и завершилось, потому что я не выдержал и поставил среду Fox Pro 2.0 себе на жесткий диск в эмуляторе PCem и это круто. Выбрал 286 компьютер, 8 мегагерц и погрузился в ностальгические воспоминания о забытом, но прекрасном прошлом.
foxpro.png
Меня удивило то, как выглядит эта среда. Там есть даже мини-игры. Самое интересное в том, что именно такую среду я и пытался всю свою жизнь сделать, и я думаю, что на подсознательном уровне я запомнил и сам фокс-про, и вообще, Фокс, ведь теперь я давно уже выбрал себе имя Лис, к которому привык. Это прямо удивительно, как все получается.
Наверное, я потихоньку буду изучать этот продукт, хотя он и безнадежно устарел и никуда не годится. Но все же, хочется прикоснуться к прошлому.
Теги: Новости

21 янв 2023 Сб Компьютер на транзисторах

Как много я говорил об этом уже и не перестану говорить, наверное, никогда — это про детство, о моих детских мечтах, желаниях, которые частично исполнились, но некоторые нет, и, наверное, никогда не сбудутся. Дело в том, что когда у меня не было компа, я мечтал о нем, пытался сделать каким-то образом. Помню, как делал что-то вроде электронной викторины, когда лампочка загоралась при нажатии на фольгу, как это доставляло мне радость, такая простейшая вещь, просто лампочка, батарейка и куча фольги и картона с клеем, кстати, именно лампочка, а не светодиод. Это вроде такой небольшой миниатюрной лампы из машины для подсветки.
Ранее я уже рассказывал о том, как кое-кто из моего прошлого сказал, что создал собственный процессор на транзисторах, как я десятилетия пытался разобраться в принципе работы транзисторов и как разобрался. Смогу ли я сделать процессор сейчас, понимая то, как работает транзистор?
Ответ: нет, это невозможно. Создать полноценный компьютер только лишь из одних транзисторов — дело реальное, но крайне затратное и бессмысленное. Такой процессор будет потреблять много тока, делать мало и занимать огромную площадь, при этом легко может и ломаться где-нибудь.
megaprocessor-panorama.jpg
Рис 1. Вот так выглядит уже созданный Megaprocessor
Но что, если не делать сложный компьютер? Что если ограничиться сотней транзисторов и на этом успокоиться? Ведь именно в детстве мне не нужен был сложный комп, мне нужен было именно свой, сделанный своими руками. То есть, на самом деле, мне достаточно одного лишь сумматора с несколькими триггерами. Сделать такой процессор не так и сложно на транзисторах. Проблема в том, что, помимо транзисторов, требуется еще и огромное количество резисторов, даже больше, чем самих транзисторов. Мало того, можно сделать еще и навесным монтажом, ведь в детстве у меня не было ничего, кроме папиного паяльника. Управляться с ним я не умел, но все же... для начала, можно сделать просто обычный полный сумматор. Для него потребуется 18 транзисторов (2 XOR + 1 NAND). Резисторов потребуется примерно столько же, я как-то не считал еще.
Можно пока что собрать на макетной плате такой сумматор, тоже, между прочим, один из вариантов. Только такая сборка будет не зафиксированной. У меня есть печатные макетные платы, туда можно как раз и сделать. Сделать хотя бы один сумматор. Это уже будет для меня достижение.

20 янв 2023 Пт Подключить Wifi к своему процессору

Давно я уже думал о таком. У меня очень много, на самом деле, wifi модулей, которые я никак не использовал еще, не изучал, и мне вчера пришла одна интересная мысль. Вот я сделал собственный процессор и компьютер, так. Но есть проблема — я не знаю, что делать на нем. Реально, не вижу цели, смысла развивать этот компьютер. Очень часто говорю о том, а зачем оно мне все надо, когда есть реально все то же самое, только лучше, на моем основном компе?
Мысль заключается в том, чтобы провести стрим со своего компьютера. Да, все так, именно со своего компьютера. Это было бы невероятно. Во-первых, чтобы это сделать, необходим доступ в интернет, а это реально через Wifi модуль. Еще для этого мне потребуется сделать на сайте такой код, который бы принимал данные от моего процессора и переводил бы их в экранное видео. Не знаю, можно ли подключить микрофон к собственному компьютеру, передача голоса была бы достаточно сложным делом в том смысле, что придется передавать огромный объем данных...
Как же было бы классно, если бы мне и правда удалось сделать самодостаточный компьютер, с которого можно было бы стримить. Да, на ютуб бы не удалось, ведь для этого надо передавать видеопоток, на что мой слабый процессор не был бы способен, да и к тому же, мне потребовалось бы как-то сжимать данные, а я и алгоритмов не знаю, и такое дело сложно скомпилить на ограниченном ресурсе. Ведь 128кб памяти не так и много.
Насчет wifi-модуля, я пытался как-то его понять, даже пытался сделать что-то на отладочной плате DE0, но дело особо не пошло у меня. Для этого мне нужно и время, и мотивация, которой у меня почти нет.
Еще вчера я смог доделать сжатие музыки и выгрузку в файл .wah, но это уже мелочи. Теперь бы распаковщик сделать.
Теги: Идея
<< Ранние записи | Поздние записи >>