Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 
Показаны сообщения с ярлыком школа. Показать все сообщения
Показаны сообщения с ярлыком школа. Показать все сообщения

среда, 25 января 2023 г.

Моя версия эмулятора ЛИКа - или почему инженеры делают то, что делают

Мой герой - инженер. Именно ботаны двигают этот мир вперед. 88й год, бытовой самодельный компьютер "Специалист". Небыло не то что "войти в IT" небыло вообще никаких "интернетов" (разработка той самой Всемирной Паутины Веб, или сокращенно WWW, началось годом спустя в 89м). Небыло никакой какой-либо комерческой выгоды. Но у уважающего себя инженера дома был бытовой компьютер (БК), собранный собственноручно по схемам из журналов Радио. Потому что мог. Спасибо Папе, что привил мне любовь к этому делу. (на видео не мой Папа, но мой был таким же чудным).

Поделюсь своей историей, которую хочется продолжать. Если я уйду когда-нибудь из IT, то из кодинга оставлю себе мой ЛИК и все, что с ним связано. Сейчас я пишу эмулятор, делаю реверс инжиниринг реального компа, который совсем недавно попал мне в руки. Делаю это все со скоростью улитки, смакуя каждый момент. Как та вкусняшка, которую хочется есть самой маленькой ложечкой, растирая языком по небу каждый новый кусочек. Конечно на любой проект нужно время, а его как всегда мало. Но даже если бы его было в избытке, мой первый компьютер - штука особенная. Это то, что возвращает магию.

Первым компьютером у меня был Синклер. И конечно же Синклер этот использовался для игр. Их было очень много. Даже в эпоху Дэнди у меня (и всех до кого я мог дотянуться) небыло столько картриджей. Ко мне домой приходли мои одноклассники. Мы все первоклашки. Какая домашка? Мы играли каждый день после уроков. Я был крут. У меня дома было что-то, что ни у кого небыло. Напомню, это были 90е. 1992 год, кажется. И конечно же я успешно забил на учебу. Оценки упали. А Синклер был продан. Травмирующий опыт. Была игрушка и ее забрали. Не делайте так родители, никогда.

Вторым моим компьютером был ЛИК. Производства Черновицкого завода Электронмаш. Чернобелый. С маленьким пузатым экраном. Тоже с записью на магнитофон (чуть позже покажу как звучала эта музыка байтов). И конечно же первым делом этот бытовой (как его называли) компьютер использовался мной для игр. Папа по выходным осваивал встроенный Бейсик. Первая его программа - нарисованный герб Украины. А я игрался. Игрался, пока качество кассетной записи не худшилось настолько, что воспроизвести игры больше не получалось. Это было всеобщее горе.

Но ничего не поделать - компьютер есть, потребность ковырять его никуда не делась. Мы с Папой стали изучать Бейсик вместе. Очень скоро я превзошел Папу и пошел дальше. Началось все из того, что мне захотелось собрать коллекцию всех runtime-ошибок существующих в Бейсике. Но не все из них было понятно как достать. Только краткое описание в руководстве по эксплуатации давали хоть какие-то зацепки.


Как говорится: нифига не понятно, но очень интересно. Одни ошибки попадались чаще всего - 02, например. Другие все никак не поддавались. Так я изучил почти все функции языка и многие corner-кейзы их использования.

Оставалось всего несколько команд в бейсике, которые по моему были самые магические и непостижимые. Просматривая исходные коды игр на бейсике (а это был мой любимый квест, ведь столько всего можно узнать в чужом исходном коде работающей игры) я часто натыкался на эти команды и понимал, что за ними кроется все самое интересное - звук, красивая растровая графика, более удобный ввод/вывод. Они мне открылись не сразу. Все что я мог - менять циферки аргументов и смотреть как компу отшибает мозги, либо что-то происходит необычное. Использовать это повторно нельзя было. Magic одним словом. Но очень любопытно. 

Потом поломался и Бейсик. Он был записан в ПЗУ. И что-то там видимо перетерлось, т.к. контрольные суммы стали выдавать другое значение - что говорило мне о том, что ПЗУ накрылась. Где накрылась не понятно. Что с этим делать так же не понятно. Больно.

Ковырять чесалось. А потому мое внимание привлек раздел руководства по экплуатации, которое про встроенный ассемблер. Я понимал, что Бейсик - это интерпретатор языка более высокого уровня в машинный код. Я понимал, что процессор выполняет инструкции, которые записаны байтами в оперативной или постоянной памяти. Часть этих байт - инструкции, часть собственно данные. Время пришло.

В  понимании мне помогла директива дизассемблирования. Она магическое шестнадцатеричное число приводила в чуть более осмысленный код. Но по прежнему этот код ни о чем не говорящий. Создать их каталог была моя задача. С этого начинается любое исследование. Там же я заметил первые закономерности. Старший байт, младший байт. Регистры. Запись/чтение в память. Руководство давало не очень подробное, но все же какое-то объяснение.
Если ты когда-то смотрел/а фильм Прибытие. Все было именно так. Встреча с пришельцами инопланетянами говорящими на непонятном языке. Они пришли что-то мне дать. Что именно - я должен разгадать. Каждый день я просыпался и все, что хотел - еще немного поговорить с ними. Я делал это весь день и пол ночи. Отвлекаясь только на еду и сон. Это был 5й класс школы на секунду.

Фильм кстати очень рекомендую для многократного пересмотра. 

Разбирая команду за командой, вскоре не осталось ни одной команды, которую я бы не понимал. Ассемблер оказался куда проще и грандиознее, чем бейсик. Я писал свои программы. Отлаживал их. Писал инструменты для написания программ и их отлаживания. Отлаживал эти инструменты. Обрастал кодом. Как положено.

А потом случился инсайт. Я заметил, что иногда, подкручивая магнитную головку кассетного магнитофона звук становился чуточку лучше и некоторые программы все же удавалось считать с кассеты. А что если взять этот звук с магнитофона и не подавать его на вход компьютера как обычно, а пропустить через усилитель (я на нем слушал музыку) там повысить уровень (максимально зашкалив его) и снять с линейного выхода уже усилителя сигнал, направив его к компу. Пяльник к тому времени я уже освоил хорошо. Спаял еще один провод и запустил опытную установку. 

Первая игра конечно же Клад. И она считалась. Вторая игра. Считалась. Третья. Считалась. Все, что я не пробовал - все считалось. И работало. С любой из 20 кассет, в любом месте что ни брал - все считывалось без ошибков. Напомню, к этому времени на кассетах почти ничего не читалось, т.к. их качество оказалось ужасное и мы с Папой пропустили момент когда надо было переписать на новые. Конечно же я не мог дождаться возвращения Папы с работы. Он плакал. То ли от гордости за меня, то ли за вторую жизнь всем нашим наработкам. Он так и не сказал, но где-то тут я четко понимал, что уже взрослый я, а ребенок он. Мы всю ночь переписывали все игры на новые кассеты. Все восстановили. С тех пор я знаю. Как бы безнадежным не казалось дело - пока есть с чем работать, информацию можно восстановить.  

Так как у меня появились новые-старые игры. Я начал их изучать. Это было не просто. Но постепенно они открывали свои шестнадцатеричные секреты. Подпрограммы Загрузчика. Подпрограммы Монитора. Разные полезные штуки вычлененные из игр. Самая моя большая гордость - это додебажиться до той процедуры, которая отвечает за звучание кринжового голоса говорящего "BUDY" во время заставки одноименной игры. Удаление всего лишнего, так что остается всего 25-30 байт кода. И реализация на основе этого кода диктофона. Мой комп превратился в диктофон, где секунд 5-7 звука записывалось из микрофона в 48 килобайт оперативной памяти. А потом это все RAW воспроизводилось на динамик. И затем снова перезаписывалось с микрофона. Качество конечно было неахти, но все было слышно. После этого я понял - что могу все. Вот прям все.

Затем мой комп поломался вовсе. И я остался с паяльником. Погрузился в мир логических элементов и строил разные примитивные схемки. Читал про моделирование компьютера подобного моему в книге. Паял много. Запах канифоли в носу как сейчас. Светил светодиодами. Обжигал пальцы. Пока не увлекся Химией в 9м классе. 

Конечно я хотел вернуться в эти воспоминания. Я долго искал возможности приобрести компьютер ЛИК. А тем временем я пытался по фоткам плат, доступным схемам сделать свою реплику. Об этом кстати писал в блоге тоже.

Только в позапрошлом году мне удалось на форуме таких же инженеров ценителей ретро компов как и я купить один. 7 лет я за ним охотился. И наконец-то он у меня. Я смотрю на него, он смотрит на меня. Паяльник я уже купил. Скоро он откроет мне все свои тайны. Осцилограф только надо освоить. И купить перед тем.

Был период погружения в уже существуюшие эмуляторы один из которых позволил поиграть в мою любимую игру Клад.

А еще год назад я нашел вот тут эмулятор Специалиста (старший брат ЛИКа) написанного на джаве. Он был переделан из эмулятора Синклера, о чем и как Автор интересно пишет на страничках форума. И пару недель рефакторингов (о которых обязательно расскажу позже, т.к. есть и тут чем похвастать) и я пришел к своему очередному pet-проекту эмулятору ЛИКа

Первый запуск старого кода. Запуск на этом коде ПЗУшек ЛИКа. Исправление команд, т.к. изначально использовался Z80 (синклер) вместо i8080 (ЛИК). Успешный запуск Бейсика. Отладка команд на Экзорцисте. Запуск игры Клад. Оптимизация видео. Адаптация клавиатуры. И много много юнит и интеграционных тестов.

А вот всего неделю назад я достал тот самый бит информации из недр моего эмулятора ЛИКа и услышал звучание нескольких моих любимых игр. Я до сих пор помню эти мелодии. Я их столько раз слышал в детстве на магнитофоне. Каждый раз, когда ты хотел поиграть в любимую игру - надо было прослушать ее на магнитофоне. Иногда несколько раз, пока не загрузится без ошибок. Все помню. До мурашек. Послушай как звучит моя любимая игра Клад.

В туду еще много всего. Кому это нужно? Да никому. Может быть кто-то еще через 10 лет наткнется на мои наскальные рисунки и порадуется им так же как и я. 

Я точно знаю, что сделаю реплику. Я точно знаю, что дизассемблирую и разберусь в том, как устроена игра Клад. И напишу пару своих уровней. Я точно знаю, что разберусь со звуком (над ним сейчас работаю) и он не будет звучать кринжово. И много всего, что еще придет в голову в процессе.  Ведь самураю не нужна цель. Только путь.

Почему? Потому что могу.

вторник, 27 марта 2018 г.

Несколько смертельно важных рекомендаций для тех, кто слез с велика на мотоцикл

Сегодня коллега и друг написал и предложил поучиться вместе вождению на мотоцикле. Все  бы хорошо, но вопрос в том, кто оплатит ремонт? Какой ремонт? Ты упадешь. Ты наверняка упадешь. B падение на нем будет стоить мне нескольких месяцев ожидания запчастей, а сезон уже близок, а тебе несколько тысяч денег. Лучше пойти в школу и получить за те же деньги полноценный курс. Специально оборудованные байки, застрахованные от падений и инструктор, который покажет как можно было. Это то что надо новичку. 


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

1. Канал "В шлеме" проект "Разбор Полётов" Учись жить на смертельных ошибках других. 

2. Книга "Дорожная стратегия. Учебник по выживанию для мотоциклистов" автор Хафф Дэвид. Кладезь мест, на которых обычно с тобой случается беда.

3. Ты упадешь. И скорее всего тяжелый байк упадет на тебя. Это не велик. Будет очень больно. Потрать на экип половину стоимости байка. И сделай это еще до первого выезда из гаража. Первое падение и лечение будет намного дороже, чем вcя эта экипировка. Последствия травмы скорее всего останутся с тобой навсегда. Я не послушал совета. Катал без экипа. Хорошо, что в шлеме. Упал, повредил колено и голеностоп. Сильно больно и постельный лежим на 3 недели. Просто больно еще два месяца. Ноет до сих пор. Мотоцикл - это не велосипед.

4. Скорее всего тебя научат (или ты сам легко научишься) разгоняться и переключать передачи, плавно тормозить. Эти знания смертельно опасны. Если только они не подкреплены опытом контр-руления, экстренного торможения, посадки и других важных моментов, отработанных путем многочасовой практики на полигоне под присмотром инструктора. Сесть и поехать достаточно легко. Отреагировать так как надо в экстренной ситуации - этому учиться и не один сезон. И без школы тут никак.

5. На дороге тебя никто не видит. Из за этого каждая машина - потенциально, твой палач. Особенно всякого рода грузовики. 

6. Больше 60 км в час Ангелы-хранители не летают. Даже если сильно хочется - это может быть в последний раз. Если ехать как в последний раз, какой-то раз таки станет последним. 

7. А это только первый сезон. Я еще столько не знаю. 

вторник, 24 ноября 2015 г.

КАК-школа

Опаздывал на дейли, заказал такси. Водитель попался разговорчивый. Слушал его, слушал. А в момент, когда он сказал кейз, что есть люди - вот учились они за одной школьной партой, в одном институте работали, а потом пришли 90е и один разбогател и купил себе машину, а второй так и до их пор продает трусы. Видимо потому, что одному дано было свыше. 

Вот не согласился я! Хоть и лет мне раза в два меньше, чем водителю. Сказал, что не знаю как в 90х, но сейчас многое решает твое окружение - ты плюс минус находишься на уровне своего текущего окружения. Хочешь новых результатов в жизни - меняй окружение. Это один. А два - это почаще задавать вопрос КАК и направлять его в гугл. Не новости читать, и ютьюб приколы смотреть, а задавать вопрос КАК ко всему, что кажется пока невероятным. И искать ответы. 

Водитель спрашивал мою визитку, которой у меня не было. Но если бы он задал себе вопрос КАК, то вспомнил бы, что звонил мне 10 минут назад уточнял как найти мой дом, и мой номер у него УЖЕ был в телефоне. 


КАК? Это самый главный вопрос айтишника. И не важно кодер он, qa или рекрутер. КАК? Должно стать стилем жизни. Выбором. И самой главной мантрой на каждый день. 

Кстати через пару минут на мой давнешний вопрос "КАК ездить на такси бесплатно каждый день" пришел ответ - можно организовать КАК-школу-на-колесах. Дорога занимает 15-20-40 минут. Обычно в это время все молчат или водитель что-то рассказывает (что он и так уже знает). Почему бы не помогать друг другу. Кто кому больше помог - тот и платит за проезд :) 

Надо будет напечатать КАК-визитку и сделать пару КАК-ютьюбовских-роликов :) Вдохновить чтобы на первые эксперименты... Будут спрашивать КАК? Буду давать визитку с bit.ly линком на let me google for you направляющий на ютьюбовский ролик. А там главвный мессадж :) 

вторник, 28 августа 2012 г.

Как научить ребенка?

Сделать доступ к знаниям легким, а потом не мешать ему.

Меня сегодня сутра ткнули носом в эту статью.

Подписываюсь везде.

В школе во мне убили любовь к гуманитарным наукам, сейчас возрождаю это все. Не легко. В то время как по точным наукам я всегда делал на 80% быстрее все, что положено: контрольные всем 4-5 вариантам писал, конспект дома за полчасика готовил на пару уроков вперед, а на уроке троллил учительку указывая на ее ошибки, чтобы знала как это неприятно перед всем классом указывать на ошибки учеников, олимпиады и т.д. Для меня было нормально взять в библиотеке пособие для преподавателей и учить по нему, потому как там интеерснее было, чем в учебнике. Так что эта история тру.

Скажем так, то что написала Автор - это предпринимательство в образовании своих детей. И это в ногу со временем.

Пора готовиться к школе.


суббота, 21 января 2012 г.

Школа, какой она могла быть

Какими были бы школы, если бы оценки ставились учениками учителю и его теме (а не наоборот, как обычно):
2 - тема ученику оказалась не интересной
3 - проявлял интерес к теме, прилагал некоторые усилия
4 - было интересно, тему усвоил самостоятельно
5 - было так интересно, что помог усвоить тему коллеге, заинтересовав его



Тут "2" - было бы поводом для перевода ученика в другую группу/на другой урок/другому преподавателю. Он сам поставил двойку теме, он сам может сделать выбор в пользу более интересного предмета. А учителю бек - не заинтересовал темой.

Не нравится литература? Пойду на математику. Не нравится математика? Пойду на физкультуру. Целый день буду на физкультуре, если так. Меня там похвалят. А на математике буду сидеть зевать. Но чтобы получить желанную 5 мне надо будет заинтересовать уроком своего одноклассника. Вот Коля, почему он не носит форму? Пойду поговорю с ним... А Коля силен в математике, и ему тоже хочется 5 получить...



А все остальное как обычно - журналы, подсчет средней оценки ученика, оценка за четверть, за год :)

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


Мне не нравилась литература, но точные науки мне давались с особенной легкостью. У меня был полосатый аттестат. Точные - пять, гуманитарно-авторитарные - три, все остальные - четыре. На некоторых уроках с меня начинали, чтобы сразу поставить 2ку и освободить мое внимание от всего того, что дальше будет рассказываться. А потом еще одну двойку за дисциплину. Подумать только, что будет делать ученик сам, когда ему поставили две двойки и выгнали за двери? Изучать мир, и пробовать его на прочность, но уже не под присмотром учителя и не в компании коллег одноклассников...



Мне нравилось выбирать в каком кружке участвовать - там не было оценок, там я инвестировал свое личное время и делал выбор, а любой результат был классным и выставлялся на выставке. Я вышивал крестиком просто потому, что это было прикольно и мне за это ничего не было.Хоть я ничего и не вышил сверхъестественного, зато теперь я могу зашить куртку так, что шва видно не будет.


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



Я прочитал десятки других книг - технических. Библиотекарь удивлялась, когда я тащил пособие по органической химии для преподавателей вузов просто потому, что мне любопытно. Я был увлечен химией, математикой, геометрией, физикой и решал на контрольных работах все 4 варианта. Хотел, чтобы все имели оценку 3 и больше, потому что этого требовали. Тут мне учитель был не нужен.

Но он мне нужен был к тех темах, в которых я не видел смысла, в которых не был заинтересован. Он мне очень был нужен, чтобы показать, что писать сочинения - это не нудотень, а еще один способ самовыражения. Кто знал, что мне нравится писать сочинения? Узнал я это только после того, как завел свой личный блог. Быть может и книг по литературе читал бы больше, если бы мне помог учитель. А он ставил "двойку за поведение" и выгонял из класса... А история?.. Интересная штука,как оказалось - почему у дискавери получилось сделать то, что не получалось у моих учителей истории - захватить мое внимание на 2 часа?

Если про поведение, то бывало, что писал в конспект дома на 10 тем вперед, а на уроке внимательно слушал учителя глядя прямо в глаза. И за это получал еще одну "2 за поведение". А почему нельзя? Разве не лучше было бы отпустить меня в библиотеку или в класс, более старший? Или дать мне возможность провести урок, коль уж я готов. Быть может тогда я бы понял, что тренинги это мое...


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

А что, если у одного учителя стоит 5ка а у другого по той же теме 2ка? Что (или кто) оценивается в этом случае? А если учителю приложить усилий и заинтересовать? А если заинтересуют одноклассники?

И самое главное. Там, где я сейчас работаю ценится сотрудничество, отсутствие страха перед экспериментами а значит и ошибками и самое главное - умение и желание учиться дальше. Это ценится куда больше, чем знания накопленные до сегодняшнего момента - знания сейчас очень быстро устаревают.

Ничего из тех страшилок, которые мне говорили учителя, ставившие двойки, не реализовалось: ты не найдешь работу, ты не поступишь в вуз, ты не будешь ..., ты не сможешь .... Все это был стимулирующий бред, который, кстати, не особо работал - преподаватель ставящий "2" никогда не будет авторитетом в глазах у ученика, двойку получившего.

Подумай в следующий раз, когда будешь ругать своего отпрыска за очередное "2 за поведение"...


Может спросить у него, что тебе, сына, интереснее?
А может школу поменять?
Источник проблемы может быть и глубже...