SplView
SplView

Добро пожаловать в SplView - программу для просмотра любого файла так, как если бы он состоял из букв (хотя на самом деле любой файл состоит только из чисел).
SplView каждое число в файле понимает как порядковый номер буквы в алфавите и изображает на экране вместо числа - букву, стоящую в алфавите под этим номером.
Получившийся из букв текст можно пролистывать колесиком мыши, стрелочными клавишами, клавишами Page Up, Page Down, Home и End.
Выйти из программы можно правой кнопкой мыши или клавишей Esc.
Выбрать файл для просмотра можно левой кнопкой мыши или клавишей F3.
Примечание 1: алфавит используется вот этот, в нём ровно 256 букв.
Примечание 2: этот алфавит можно сменить на другой (а потом обратно) с помощью клавиши F8.

Вот такой файл. Я сделал еще ДО инсульта!

Конечно это asm! "Программы для Windows я пишу на языке Flat Assembler. Выбор именно этой среды разработки совсем необычен, но так уж сложилось."

Наиболее интересное вот это:

proc ThrProcV, paramx
align 16
splagain:
invoke WaitForSingleObject,[chndl],-1
xor ecx,ecx
mov [tete],ecx
mov ebx,[diwi] ;сколько букв в строке на экране
again: ;цикл прорисовки одной буковки на экране
mov esi,splt ;адрес начала текста - массива с кодами букв
mov eax,[tete] ;переменная, содержащая номер буквы по порядку в тексте
add esi,eax ;уже адрес конкретной буквы в тексте
div bl ;номер буквы делим на длину строки в буквах
mov ecx,[dihe] ;число строк на экране
dec ecx ;последняя (верхняя) строка (нумерация с нуля)
sub cl,al ;вычитаем, получаем номер строки, где рисовать букву
shr ax,8 ;теперь в ax номер столбца, где рисовать букву
mov dx,6 ;ширина изображения буквы в байтах
mul dx ;умножаем на ширину, получаем смещение в байтах от левого края
xchg ecx,eax ;теперь в cx находится байтов от левого края, а в al - номер строки
mul ebx ;номер строки умножаем на число букв в строке
shl eax,5 ;и потом еще на 32 - высоту изображения буквы в байтах
mov edx,6 ;ширина изображения буквы в байтах
mul edx ;и еще умножаем на ширину
mov edi,[tut] ;адрес начала картинки в памяти
add edi,eax ;прибавить байтов в полных строках
add edi,ecx ;прибавить байтов от левого края, получили место для рисования
xor eax,eax ;пишем в аккумулятор НОЛЬ
lodsb ;читаем код буквы
mov ecx,eax ;пока что сохраняем код сюда
and al,0Fh ;остаток от деления на 16 - номер колонки в массиве картинок букв
mov dl,6 ;ширина буквы в байтах
mul dl ;умножаем, получаем байтов от левого края
xchg ecx,eax ;теперь в ecx байтов слева, а в eax код буквы
shr al,4 ;частное от деления на 16 букв в строке - номер строки
mov ah,15 ;15 - последняя (верхняя) строка (нумерация с нуля)
sub ah,al ;вычитаем, получаем номер строки, где рисунок буквы
xor al,al ;очищаем младший байт
shl eax,1 ;умножили на 16 букв в строке и на 32 байта высоту буквы
mov edx,6 ;ширина изображения буквы в байтах
mul edx ;и еще умножаем на ширину
mov esi,[buu] ;адрес начала массива картинок букв в памяти
add esi,eax ;прибавить байтов в полных строках
add esi,ecx ;прибавить байтов от левого края, получили адрес картинки буквы
mov ecx,32 ;32 байта высота буквы
onebu: ;цикл рисования одной буквы
movsd ;4 байта перенести
movsw ;и еще 2 байта перенести
add esi,90 ;в массиве картинок букв пропускаем 15 x 6 байт
add edi,[dopa] ;в массиве готовой картинки пропускаем ((букв в строке) - 1) x 6 байт
loop onebu ;следующую строчку буквы
inc [tete] ;увеличить номер буквы в тексте
mov eax,[tete]
cmp eax,[proi] ;сравнить с последней
jb again ;если меньше, то рисовать еще одну букву
invoke SendMessage,[hspl2],STM_SETIMAGE,IMAGE_BITMAP,[IBitmap]
jmp splagain
endp


Полный файл SplView.asm здесь:
https://disk.yandex.ru/d/3hehNgLSMddjfA
А download flat assembler тут:
https://flatassembler.net/download.php
Нужно только один файл FASM.EXE и нужно еще:
ANSI.bmp
https://disk.yandex.ru/i/nJQCfNAEher6aA
OEM.bmp
https://disk.yandex.ru/i/MU6q7uro4UJfrA

ANSI
ANSI
OEM
OEM

Пример программы вот:

Пример
Пример

Или вот:

Пример
Пример

Файл SplView очень маленький и очень быстрый. Позволяет любые файлы как из букв.

Потом случился инсульт. Это очень плохо. В начале я не говорил и не ходил! Прошло два с половиной года. Я говорю и хожу. С палочкой конечно и медленно но хожу. Многое забылось! Но что-то знаю...

https://vk.com/wall1435532_15730
Здесь больше. Обо мне. Маленький город Молодечно. Город в Минской области Беларуси. "Одна из причин почему мы с семьей и группой ездим регулярно в Беларусь" - это рассказывает Александр Старостин, основатель Theodor Bastard.

И вот что...
Мне вот интересная штука...
Смерть.
Когда человек умер. Я умер.
Но потом рождается другой. Другой я. Не тот. У вас есть яйцеклетка? Обычное дело...
Затем очень маленький ребенок! И растет... Пять лет... Шестнадцать лет...
А вот что интересно. ГДЕ? Где этот человек есть? Ты же конкретный человек!
Я - Фирюлин Артур. В Молодечно. Растил русский человек... А где потом??? Он тоже конкретный но кто???
И вот что я подумал... Ну вот может быть Африка, где 25 лет и все. Он может даже плохой. Нигер или Буркина-Фасо! Но это не имеет значение!
И ведь не только Земля! Бесчисленное планет с большими мозгами! Просто очень, очень далеко. Но рождается там. Это не проблема!
Мы считали минуты для рождения. А есть зептосекунда. Это одна триллионная миллиардной доли секунды. А можно и меньше. Просто где?
А тут просто - как умер так И ТУТ ЖЕ родился. А где - может и не Земля а очень далеко в миллиардов лет. Будет четыре ноги. Или восемь. Или глаз - не знаю сколько.
"Можно представить, что не "летит" куда-то со скоростью света, а проявляется в новой точке мгновенно, подобно тому как безотносительно расстояния" - а это сказало ИИ.
Но узнать, кто рождается - нельзя. Может ты Илон Маск, а может бездомный в трущобах. Может Тереза а может криминал. Может на Земле а может в миллиардов лет. Может в прекрасный город а может каменные инструменты. Может из двух ногах а может из четырех.

Извините я не от темы.

Если кто-то хочет деньги прислать, то 41001887222876 - это кошелек ЮMoney. Или карточка Беларусбанка 9112380113153706. У меня это есть и иногда маленькие деньги для кушать. Потому что у меня маленькая пенсия первой группы инвалидности. В Беларуси. 460 белорусских рублей в месяц. Это совсем не много. 100 рублей в месяц - свет интернет и коммунальное. Друг хорошей приносит продукты две большие сумки бесплатно два раза в месяц. Вот так.

А еще я купил плазменный шар Тесла! Я очень хотел! И вот наконец совершилось.

https://www.wildberries.by/catalog/112971265/detail.aspx
Вот его характеристики. И я купил. Отличная вещь!

Midjourney
https://www.midjourney.com/explore?tab=top
это чем я занимаюсь.
Я еще не умер!!!

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


  1. Zarinov
    10.11.2025 05:35

    Автору, конечно, здоровья, но кажется он хабр с япом перепутал...