Семья Толедо (пригород Мехико) и разнообразная техника их кустарного производства, в том числе компьютер, 1980 год

Оскар Толедо — пятикратный победитель программистского конкурса IOCCC, (Международный конкурс обфусцированного кода на С). Он интересен не только сам по себе, но ещё в контексте своей семьи. Это уникальные люди, которые скромно живут в пригороде Мехико и вообще не стремятся к известности. 25 лет назад они написали свою ОС, браузер и кучу софта для него.

Оскар Толедо — просто продолжатель семейного дела, которое началось примерно в 70-е годы прошлого века.

Оскар родился в 1978 году, программирует с пяти лет, а ассемблер выучил в девять. Потом освоил Pascal, C, C++, Java, Javascript, HTML, CSS и PHP, но ассемблер остаётся его основным языком. Пишет лаконичные и концептуальные программы, в этой лаконичности он чем-то напоминает Фабриса Беллара, хотя с этим титаном программирования мало кто может сравниться.

Живёт с семьёй в Мексике, пишет софт и книги о нём, продаёт ретротехнику и картриджи. Ну и участвует в бизнесе семьи, наверное (о нём ниже).

Пожалуй, самая интересная его разработка — операционная система BootOS, опубликованная на Github в 2019 году.

▍ BootOS


BootOS — операционная система в 512 байтах машинного кода x86, выполненная как монолитное ядро. Она помещается в загрузочный сектор, отсюда и название. Подходит для любых дискет от 180 КБ и изначально писалась для компьютеров 8088. Вероятно, она была написана ещё два десятилетия назад, а только четыре года назад опубликована. Или другой вариант, что Толедо или его клиенты используют такие компьютеры до сих пор. Есть такие любители ретротехники (именно для постоянного использования, чтобы реально играть на ней).

BootOS умеет загружать, исполнять и сохранять программы в файловой системе. Используются дорожки от 0 до 32, сторона 0, сектор 1. Каталог записан на дорожке 0, сторона 0, сектор 2. Каждая запись в каталоге имеет размер 16 байт и содержит ASCII-имя файла, заканчивающееся нулевым байтом. Поскольку размер сектора 512 байт, в каталог можно записать только 32 файла. То есть на дискете можно хранить только такое количество. Удаление файла сводится к обнулению всей записи.

Уместить полноценный CLI и минималистичную файловую систему в 512-байтный загрузочный сектор дискеты — не такое малое достижение.

BootOS собирается с помощью Netwide Assembler (nasm), этот ассемблер для x86 работает практически на любой современной платформе, поэтому он и называется netwide.

▍ Другие проекты


Вот некоторые программы Толедо. Далеко не все, потому что он ещё написал множество игр для разных консолей (Intellivision, Atari 2600 и др.), в том числе «бутсекторные игры», которые хранятся в загрузочном секторе, как вышеупомянутая BootOS.

  • Эмулятор Intel 8080 (2000 символов).
  • bootBASIC — язык BASIC в 512 байтах кода.
  • Tinyasm — небольшой ассемблер для программ на 8086/8088, может работать на реальной машине PC XT. Для работы требуется не менее 128 КБ памяти. Оскар написал его для нескольких человек, которые играют в его бут-игры и хотят собрать их на реальной машине PC XT, однако упомянутый выше ассемблер nasm не работает на процессорах 8086/8088. Поэтому ничего не оставалось, как выделить три дня времени и написать свой ассемблер.
  • TTRIS, первый тетрис для TRS-80 model 1.
  • Nanochess (1255 символов) — самые маленькие шахматы на C. Это первая из программ Толедо, победивших на конкурсах IOCCС.

    Исходный код на С
    B,i,y,u,b,I[411],*G=I,x=10,z=15,M=1e4;X(w,c,h,e,S,s){int t,o,L,E,d,O=e,N=-M*M,K
    =78-h<<x,p,*g,n,*m,A,q,r,C,J,a=y?-x:x;y^=8;G++;d=w||s&&s>=h&&v 0,0)>M;do{_ o=I[
    p=O]){q=o&z^y _ q<7){A=q--&2?8:4;C=o-9&z?q["& .$  "]:42;do{r=I[p+=C[l]-64]_!w|p
    ==w){g=q|p+a-S?0:I+S _!r&(q|A<3||g)||(r+1&z^y)>9&&q|A>2){_ m=!(r-2&7))P G[1]=O,
    K;J=n=o&z;E=I[p-a]&z;t=q|E-7?n:(n+=2,6^y);Z n<=t){L=r?l[r&7]*9-189-h-q:0 _ s)L
    +=(1-q?l[p/x+5]-l[O/x+5]+l[p%x+6]*-~!q-l[O%x+6]+o/16*8:!!m*9)+(q?0:!(I[p-1]^n)+
    !(I[p+1]^n)+l[n&7]*9-386+!!g*99+(A<2))+!(E^y^9)_ s>h||1<s&s==h&&L>z|d){p[I]=n,O
    [I]=m?*g=*m,*m=0:g?*g=0:0;L-=X(s>h|d?0:p,L-N,h+1,G[1],J=q|A>1?0:p,s)_!(h||s-1|B
    -O|i-n|p-b|L<-M))P y^=8,u=J;J=q-1|A<7||m||!s|d|r|o<z||v 0,0)>M;O[I]=o;p[I]=r;m?
    *m=*g,*g=0:g?*g=9^y:0;}_ L>N){*G=O _ s>1){_ h&&c-L<0)P L _!h)i=n,B=O,b=p;}N=L;}
    n+=J||(g=I+p,m=p<O?g-3:g+2,*m<z|m[O-p]||I[p+=p-O]);}}}}Z!r&q>2||(p=O,q|A>2|o>z&
    !r&&++C*--A));}}}Z++O>98?O=20:e-O);P N+M*M&&N>-K+1924|d?N:0;}main(){Z++B<121)*G
    ++=B/x%x<2|B%x<2?7:B/x&4?0:*l++&31;Z B=19){Z B++<99)putchar(B%x?l[B[I]|16]:x)_
    x-(B=F)){i=I[B+=(x-F)*x]&z;b=F;b+=(x-F)*x;Z x-(*G=F))i=*G^8^y;}else v u,5);v u,
    1);}}

    Это полноценный шахматный движок, с которыми можно поиграть, причём он может у вас выиграть (шутка, наверняка он знает только правила и выбирает ходы без просчёта позиции на несколько ходов вперёд, то есть почти случайно — просто умеет двигать все фигуры и делать рокировку, вряд ли в него зашиты хотя бы правильные дебюты).

    Шахматы в 1 КБ JS — аналогичная разработка, только на JavaScript, заняла второе место на конкурсе JS1K.

    Исходный код JS
    for(B=i=y=u=b=i=5-5,x=10,I=[],l=[];B++<304;I[B-1]=B%x?B/x%x<2|B%x<2?7:
    B/x&4?0:l[i++]="ECDFBDCEAAAAAAAAIIIIIIIIMKLNJLKM@G@TSb~?A6J57IKJT576,+
    -48HLSUmgukgg OJNMLK  IDHGFE".charCodeAt(y++)-64:7);function X(c,h,e,s
    ){c^=8;for(var o,S,C,A,R,T,G,d=e&&X(c,0)>1e4,n,N=-1e8,O=20,K=78-h<<9;+
    +O<99;)if((o=I[T=O])&&(G=o^c)<7){A=G--&2?8:4;C=o-9?l[61+G]:49;do if(!(
    R=I[T+=l[C]])&&!!G|A<3||(R+1^c)>9&&G|A>2){if(!(R-2&7))return K;n=G|(c?
    T>29:T<91)?o:6^c;S=(R&&l[R&7|32]*2-h-G)+(n-o?110:!G&&(A<2)+1);if(e>h||
    1<e&e==h&&S>2|d){I[T]=n;I[O]=0;S-=X(c,h+1,e,S-N);if(!(h||e-1|B-O|T-b|S
    <-1e4))return W(),c&&setTimeout("X(8,0,2),X(8,0,1)",75);I[O]=o;I[T]=R}
    if(S>N||!h&S==N&&Math.random()<.5)if(N=S,e>1)if(h?s-S<0:(B=O,b=T,0))
    break}while(!R&G>2||(T=O,(G||A>2|(c?O>78:O<41)&!R)&&++C*--A))}return-K
    +768<N|d&&N}function W(){i="<table>";for(u=18;u<99;document.body.innerHTML=
    i+=++u%x-9?"<th width=60 height=60 onclick='I[b="+u+"]>8?W():X(0,0,1)'
    style='font-size:50px'bgcolor=#"+(u-B?u*.9&1||9:"d")+"0f0e0>"+(I[u]?98
    08+l[67+I[u]]:160):u++&&"<tr>")B=b}W()

Ещё он написал книжку, где опубликован исходный код Nanochess с комментариями (версии на C и JS). 182 страницы (то есть код JS или C требует объяснения примерно на 90 страниц, и в это даже верится). Есть у него ещё книжки по играм и BootOS.

Выпускать необфусцированный код своих программ Оскар не планирует, потому что это «лишит многих людей острых ощущений и обучения в ходе самостоятельной разфусцировки». Что касается ретроигр, там код не опубликован, чтобы не мешать продаже картриджей. Вот когда все картриджи продадут, тогда можно, говорит он.

▍ Семья Толедо


А теперь самое интересное — кто такой Оскар Толедо. Дело в том, что это не обычный человек, как мы с вами, а представитель мексиканской династии Толедо, которая c 1950-х годов проектирует и собирает собственные компьютеры и другие приборы под заказ. Например, металлоискатели, ионизаторы для очистки воды и воздуха, детекторы радиоизлучения (для обнаружения мобильных телефонов), электрокардиографы, учебный компьютер, различные одноплатники с оригинальной ОС и своим ассемблером:


Учебный компьютер:


Детектор электромагнитного поля (датчик на основе эффекта Холла):


На первый взгляд все эти приборы похожи на какие-то шарлатанские лженаучные подделки, вроде фильтров Петрика.

Это ещё не всё. Кроме проектирования и сборки всех этих изделий, семья Толедо пишет собственные операционные системы, браузеры и другой софт. Они десятилетиями делали это втайне от всех, не выкладывая результаты своей работы в открытый доступ. В каком-то смысле эта организация похожа на тайное общество типа масонов или иезуитов, которые скрывали результаты своих научных и инженерных открытий, передавая их только «посвящённым».

Оскар Толедо и его выдающиеся родственники живут на окраине Мехико и до последнего времени не пользовались интернетом, поэтому информация об их работе распространялась только как слухи и легенды, в которые мало кто верил. Статьи о них писали разве что в жёлтой мексиканской прессе. Они и сами не стремились к публичности — и так никогда не опубликовали исходный код своей операционной системы Fenix, браузера Navegador Biyubi и других разработок.

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

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

Исходный код отсутствует для всех программ семьи. Есть только скриншоты с их сайта, и остаётся верить им на слово (они никогда не стремились к публичности, это часть семейного кодекса и, честно говоря, нет особого смысла им подделывать кучу картинок).


Браузер Biyubi в операционной системе Felix образца 1990-х

Название браузера произносится как «би-ю-би», что по-сапотекски означает «Ищи, пока не найдёшь».


Цивилизация сапотеков существовала с 700 года до н. э. по 1521 год, то есть 2200 лет

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

На следующих скриншотах показано различное прикладное ПО в операционной системе Fenix. А оно включает криптографический пакет, графический редактор, мультимедиа-плеер, IDE для разработчиков и многое другое: в общей сложности 41 программа плюс десяток игр. Сложно поверить, что всё это написано с нуля. Наверное, адаптирован какой-то опенсорсный софт под Linux (возможно, даже в нарушение лицензии, что объясняет факт сокрытия исходников Fenix и ПО).


Различный нативный софт для операционной системы Felix (естественно, тоже написанный ими)

В общем, это или какая-то семья волшебников, или чрезвычайно изощрённая афера, которая включает обучение программированию ребёнка с пяти лет.


Узнавайте о новых акциях и промокодах первыми из нашего Telegram-канала ????

Комментарии (8)


  1. Nedder
    09.10.2023 09:10
    +7

    шутка, наверняка он знает только правила и выбирает ходы без просчёта позиции на несколько ходов вперёд, то есть почти случайно — просто умеет двигать все фигуры и делать рокировку, вряд ли в него зашиты хотя бы правильные дебюты)

    Я попробовал - ходит явно не случайно, минимум 3 разряд имеет.


  1. Laurens
    09.10.2023 09:10
    +1

    А сейчас начнут активно из Сети брать инфу, смогут еще что-то необычное придумать.


  1. NutsUnderline
    09.10.2023 09:10
    +5

    Сложно поверить, что всё это написано с нуля. Наверное, адаптирован какой-то опенсорсный софт под Linux

    Если долго мучиться - что нибуть получиться. Энтузиасты еще на спекртумах писали мощные пакеты программ, чуть ли не в одиночку. Без интернетов, замедте. Сам лично перепарировал штук пять таких наколенных разработок, сделанных чисто для себя. сам такое писал. А тут целая семья годами ваяла.

    Много широко известных в узких кругах гениев вообще до ужаса производительные и разнообразные. Геохотц, автор QUEM... много таких.. Вот только что ошибок нет... это вот далеко не фааакт.


  1. Chupakabra303
    09.10.2023 09:10

    конкурс обфусцированного кода на С

    Конкурс извращенцев? Какая-то очень вещь в себе. Демосцена обучает крутому программированию и математике. А тут что, это же не интерпретируемый язык. В чем художественная ценность?


    1. NutsUnderline
      09.10.2023 09:10
      +1

      Демосцена еще и компактному коду обучает а это довольно близко к конкурсу обфусцированного кода на С


  1. F376
    09.10.2023 09:10
    +2

    Сори что с некоторой пессимизацией.
    Я как старый писец на асме под DOS изучил код BootOS и ничего интересного не нашел. Вся "магия" (которая даже не магия) заключается в том чтобы назвать примитивный загрузчик "Операционной системой".
    На молоденьких ребят при прочтении без разбирательства это окажет вау-эффект, потому что им известно что операционная система это что-то типа Windows или Linux. И поэтому "операционная система" в 512 байт это вау! Но дело в том что назвать это "операционной системой" можно лишь условно. Обычно это никому не приходило в голову.
    В противном случае на ZX Spectrum часто за день писали "операционные системы" (спойлер - нет, называть "операционной системой" никто не называл, это называлось как и должно - загрузчик, лоадер, который мог самостоятельно загружать и сохранять "файлы", уровни игр и демок и даже другие загрузчики в виде секторов с диска не обращаясь к базовой ОС. Иногда "каталог" был размечен по-своему, в виде примитивного списка name:трек:сектор).
    Вдобавок, молодые ребята могут не знать, что изрядная функциональность находится в BIOS любого PC компьютера и её достаточно "позвать" короткими int - вызовами.
    При этом Толедо конечно все равно большой молодчина но по другим причинам.


    1. NutsUnderline
      09.10.2023 09:10

      и называли и писали. И не простой boot. у меня было сделано обширное api с кучей всего, механизм распределения страниц памяти под разные приложения, можно было переключатся между ними. Но и не только у меня, много было разных разработок, IsDos тот же..

      у Толедо пусть будет простой boot но он че то ведь грузит и явно не .elf

      мнение "молодых ребят" - тут есть


  1. Bella00
    09.10.2023 09:10

    Круто. Удивительно, что такие гении мало кому известны и сами живут скромно и тихо