blackstrip

blackstrip

Пикабушник
9254 рейтинг 28 подписчиков 13 подписок 9 постов 1 в горячем
Награды:
10 лет на Пикабу
4

Пиксель-арт редактор PaintCAD Mobile для Android/J2ME доработан под большие экраны современных смартфонов

Была когда-то давно (лет 10 назад) у меня в разработке такая программа для мобильных телефонов на яве и смартфонов на андроиде под названием PaintCAD Mobile (Паинткад Мобайл).

В ней можно было рисовать пиксель арт, GIF анимации, PCF растровые шрифты и писать ими на своих же рисунках. Причем управление было не пальцем по экрану, как во многих современных графических редакторах, а, в основном, курсором по рисунку. С помощью клавиатуры или виртуальной клавиатуры перемещался курсор, и с помощью него ставились точки нужного цвета в нужные места, проводились линии и эллипсы, вставлялся текст в нужное место. Эдакий MS Paint для телефонов с ручным клавиатурным управлением.

Но она разрабатывалась под мелкие экраны старых телефонов типа 132х176 или 240х320 пикселей. И когда сегодня смартфоны уже имеют экраны по 1000х2000 пикселей - она стала выглядеть так себе: мелкие линии в интерфейсе, мелкие значки, ничего не видно, ничего не понятно.

И вот год назад была начата разработка ее улучшенной версии, хотелось чтобы она сама масштабировалась на большие экраны современных смартфонов с большими экранами.

Каждое окошко по очереди масштабировалось, в нужные места и с нужными масштабами расставлялись значки и элементы интерфейса.

И вот спустя год, буквально вчера, эта версия была завершена и выпущена: PaintCAD Mobile версии 3.0.24.

Кто рисовал в ней на яве во времена господства ява-телефонов - может теперь потестить ее и на андроиде от версии 2.3 и новее. Да и для явы она еще выпускается, например, на Nokia C2-01, продающейся на каком-нибудь озоне за жалкую тыщу рублей она тоже работает в виде ява-мидлета.

На скриншотах видно как масштабировались некоторых из окошек старой версии 2.6.23 от 2017 года до новой современной версии 3.0.24.

Теперь она научилась, наконец-то, в андроиде фоткать, а также вытаскивать кадры из MP4/3GP/AVI-видеофайлов (хотя успешность вытаскивания кадров из видео зависит он версии андроид, были протестированы андроиды от 2.3 по современный 16 андроид, в каждой версии андроид одни из форматов читаются и кадры извлекаются, а другие - не извлекаются вовсе или извлекается зашумленная картинка).

Теперь она может открыть старые BMX анимации с запыленных сименсов и превратить их в аналогичные анимированные GIF. Их даже можно раскрасить и превратить из черно-белых в цветные.

Изменение размера рисунка (функция 'Размер растра') и поворот (функция 'Повернуть') теперь могут использовать три метода: Обычный (быстрый и простой), Умный (более точный расчет для пиксель-арта) и Сглаженный (масштабирование/поворот рисунков со сглаживанием линейной интерполяцией), как это раньше уже делалось в Windows-версии PaintCAD)

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

Весь интерфейс теперь рисуется в виртуальных пикселях. И их количество на экране примерно соответствует 100-200 точкам по ширине/высоте экрана (в зависимости от пропорций экрана).

Также были добавлены из Windows-версии редактора разнообразные палитры цветов (ZX Spectrum, DOS VGA и прочие). Если в окне палитры нажать '0', то можно выбрать другую палитру и даже 'Внедрить' ее в рисунок, перерисовав его цветами из палитры.

Там в меню настроек в "Чем рисуем..." теперь можно назначить любые физические клавиши любых ява/андроид-устройств, и на любом телефоне/смартфоне управлять паинткадом.

Потестить обновленную версию Паинткада можно здесь (программа без рекламы, как в старые добрые времена расцвета j2me программ для телефонов):

(сайт HTTP а ля Web1.0, поэтому с HTTPS-сайтов только правой кнопкой мыши по ссылке и "Сохранить как...")

Для Android 2.3 и новее:

APK: http://blackstrip.ru/PaintCAD.apk

Для Java2ME MIDP2.0 с Java-памятью 2 Мбайт и более:

JAR: http://blackstrip.ru/PaintCAD.jar

JAD: http://blackstrip.ru/PaintCAD.jad

Полный список изменений: http://blackstrip.ru/history.txt

Предыдущие версии: http://blackstrip.ru/pcmvers.htm

Основные изменения:

- весь интерфейс теперь автоматически масштабируется под большие экраны с мелкими пикселями и рисуется в "виртуальных пикселях", эмулируя экран телефона шириной/высотой около 100-200 точек (зависит от размера экрана)

- во всех окнах вставки, выделения, выбора цвета: по кнопке "*" можно включить область увеличения 11x11 пикселей в левом нижнем углу экрана и гигантскую крестовину вместо мелкого курсора для более точного прицеливания

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

- в окне выбора масштаба "Лупа" максимальный доступный масштаб увеличен до x100, и теперь дополнительно можно:

а) кнопками "ДжойВверх"/"ДжойВниз" выбирать масштаб в виртуальных пикселях,

б) кнопкой джойстика автоматически подобрать максимальный масштаб в реальных пикселях чтобы рисунок отображался без прокрутки,

в) зеленой кнопкой "Снять трубку" - такой максимальный масштаб в виртуальных пикселях без прокрутки,

г) кнопками "*"/"#" установить минимальный и максимальный масштаб в виртуальных пикселях

- функции "Размер растра" и "Повернуть" теперь работают как в PaintCAD 4Windows: Обычным (простой и быстрый), Умным (для пиксель-арта) и Сглаженным (со сглаживанием) методами, а еще "Повернуть" теперь поворачивает выделение на любой угол и может добавить закручивание углов

- палитру теперь можно сохранять в PAL файлы и загружать из PAL файлов (даже в 24-битном режиме), при загрузке можно сразу внедрить ее на рисунок, перерисовав его в цветах загруженной палитры

- в окне палитры можно нажать "0" и выбрать одну из стандартных палитр (ZX Spectrum, DOS VGA и др.), а также сразу внедрить ее на текущий рисунок, перерисовав его в цветах выбранной палитры (это тоже доступно и в 24-битном режиме тоже)

- функция "Мозаика" может раскладывать изображения не только рядами по сетке, но и раскидывать случайно

- новые эффекты "Цветная шерсть", "Цвета из буфера"

- эффект "Сканлайн" в меню эффектов заменен на "Расширитель" из PaintCAD 4Windows, внутри него 22 эффекта увеличения/обработки изображений включая бывший сканлайн

- новая функция "Области", позволяющая добавлять выделенную область в список и потом выделять эту область на других рисунках просто выбирая ее из списка сохраненных областей

- под андроидом заработали съемка фото с камеры и (с ограничениями, зависящими от версии андроида) съемка кадров из MP4/3GP/AVI видеофайлов, плеер для съемки кадров из видео доработан и теперь может снимать кадры как в файлы, так и сразу импортировать в паинткад

- BMX-анимации в 8-битном режиме можно превратить в анимированные GIF файлы прямо из "Плеера BMX", сам плеер BMX тоже доработан и стал похож на плеер для съемки кадров из видео

- пункт настроек "Чем рисуем...", а также долгое нажатие любой физической клавиши при запуске паинткада открывают настройку клавиш, где можно попытаться автоматически определить или вручную назначить любые физические клавиши любых экзотических java/android-устройств чтобы управлять паинткадом на любом из них

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

- в меню "Помощь" вместо проверки объема памяти добавлен пункт "Инфо о системе", показывающий информацию о платформе, на которой запущен паинткад, о параметрах экрана, о текущем количестве свободной оперативной памяти и о файловой системе

- окно "Обновление" теперь показывает последнюю релизную версию и бета-версию, а под андроидом можно даже их скачать сразу из окна обновлений

Показать полностью 2

Ввод русских символов при программировании для DOS и Windows через эмуляторы DosBox / Bochs/ LBochs

При разработке дос-оболочки на андроид-телефоне под DosBox-ом (история описана в Разработка оболочки-проводника для DOS в 2017 году ) весь русский текст приходилось вводить в Visual Basic for MS-DOS вслепую. Выглядело это так: переключаем русификатор на русский и на английской клавиатуре подбираем символы, вспоминая что "qwertyuiop[]" это "йцукенгшщзхъ". Но в той оболочке было лишь немного русского текста для русского варианта интерфейса, поэтому это было терпимо.

С появлением более мощного телефона, установкой на него Bochs, а затем LBochs-эмулятора и установкой Windows 98/XP, стало понятно, что теперь-то можно, например, спокойно поставить Delphi 7 и писать под Win32 что-нибудь, или поставить HTML Help Workshop и создавать CHM-файлы помощи для своих программ. Но и в LBochs встроенная клавиатура имеет только англоязычную раскладку и русский язык с нее можно вводить опять только наугад.


Стало ясно, что для удобства программирования и в DosBox, и в LBochs нужна клавиатура, которая будет вводить всегда английские символы (а заменять их на русские будет русификатор в DOS или языковые службы/языковая панель Windows). При этом русские символы должны отрисовываться на клавишах чтобы просто выбирать нужную клавишу глазами, а не вспоминать русскую раскладку. Тут есть два варианта:

- на каждой английской клавише такой клавиатуры также дополнительно будет нарисован соответствующий русский символ (как это сделано на любой физической клавиатуре PC);

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


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


Одно из упоминаний на одном из форумов от 2012 года: hacker's keyboard позволяет ввести англоязычный символ если переключиться на русскую раскладку, но при этом ДОЛГО жать клавишу с русскоязычным символом. Но у меня на последней версии этой клавиатуры это из коробки не заработало, да и каждый раз удерживать долго клавишу для ввода одного единственного символа - это тяжело.

Еще одно из упоминаний - клавиатура, встроенная в Magic DosBox (одно из ответвлений досбокса). Она показана в этом ролике от 2016 года:

Здесь на клавишах сразу и русские, и английские символы. И на LBochs эту клавиатуру не перетащишь, т.к. она встроена в Magic DosBox.


Пришлось изобретать велосипед писать свою клавиатуру. Т.к. однажды уже пришлось придумывать раскладку экранной клавиатуры, то решено было взять ее. В исходном программном продукте под названием "браузер Bro", встроенном в мультимедиа-редактор PaintCAD 4Windows, она выглядела вот так:

Попытка №1

Так сильно хотелось вводить русский текст в LBochs под Windows, что первая попытка была - просто скопипастить эту клавиатуру в отдельный Win32 проект. Получилась утилита под названием BroKB (клавиатура из браузера Bro), которая имеет на форме клавиатуру и текстовое поле. Жмем кнопки - и текст вводится в поле. Потом готовый текст копируем и вставляем в нужное место. Эдакая виртуальная недоклавиатура под Windows, работающая в любом Windows с Windows 95 и выше, умеющая вводить текст только в саму себя (но не в другие окна/поля):

Попытка №2

Елозить мышкиным курсором в LBochs на телефоне по клавишам быстро надоело, и поэтому для ускорения русскоязычного ввода текста была предпринята вторая попытка - настоящая android-клавиатура. Был взят гайд "как сделать клавиатуру под андроид", была взята за основу эта же раскладка клавиш браузера Bro, но добавлен ряд клавиш F1-F12, а также ряд с кнопкой Esc и кнопками перемещения курсора (с самого первого моего андроида 2.3.3 не понимал почему на дефолтной клавиатуре нет клавиш перемещения курсора, как будто пользователи не вводят текстом, а только проматывают текстовые поля и кликают толстым пальцем в нужное место, с трудом туда попадая). Обязательно хотелось полупрозрачности чтобы сквозь клавиатуру был виден эмулятор и это тоже было вписано в xml-стиле фона клавиатуры, а также в xml-стилях клавиш ненажатых и клавиш нажатых.

Получилось вот это - под названием BroKB Emulz (т.е. "BroKB для эмуляторов") - показано ниже в горизонтальном и вертикальном варианте (dosbox turbo, android 2.3.3, samsung galaxy ace с экраном 320x480). В случае с Кирандией вводить русские символы в название сейва мне игра не дала (хотя может она просто не пропускает переключение языка русификатора keyrus по F12), поэтому скрин дан для общего представления как выглядит клавиатура в портретном представлении. А еще меня осенило - вот для кого делали режим с грубым разрешением 320х200 точек и 256 цветами - для телефонов с досбоксом и с экраном 320х480, полэкрана у которых - это ровно разрешение картинки игры! На компе этот режим всегда казался очень крупноточечным, а вот на телефоне, когда всё идеально пиксель в пиксель - это красиво!

Второй ряд символьных клавиш asdfgh... пришлось сдвинуть в xml-файле параметром android:horizontalGap="3.25%", суммарное количество процентов ряда клавиш было подогнано под 100% = 3,25% + 6,5%*11 + 25,25% и ожидалось, что ряд клавиш займет ровно целый экран, но не тут то было! Android-ы разных версий по разному реагируют на android:horizontalGap, на каких-то андроидах кнопка Ввод вылезает вправо (процента на полтора-два от ширины экрана, т.е. меньше чем сдвиг ряда слева на 3,25%), а на каких-то заканчивается ровно с остальными рядами (тестировалось на 2.3.3, 5.0, 7.0, 10). Хотя может это я такой криворук (например, если еще какими-то параметрами указываются зазоры между клавишами, и тогда только сумма ширин клавиш равна 100%, а с суммой ширин зазоров получается общая ширина ряда больше 100% - из-за этого ряд клавиш вылезает вправо).

Заключение

Итого - получившаяся клавиатура вводит русские и английские буквы в DOS (DosBox) и в Windows XP (LBochs):

Файлы

Если кто искал подобный софт для ввода русского текста, то вот эта получившаяся клавиатура под android: https://play.google.com/store/apps/details?id=com.bss.brokb (или вот APK без гуглплея - http://blackstrip.ru/brokb.apk )

Также вот результаты первой попытки - виртуальная недоклавиатура под Windows, вводящая текст только в саму себя: http://blackstrip.ru/brokb.exe

Показать полностью 11 1
239

Разработка оболочки-проводника для DOS в 2017 году

Как показывает практика, комфорт существования динозавра человека при работе/игре под DOS складывается из всевозможных драйверов и утилит. Но даже когда мы подгрузим лишь такие необходимые драйвера как драйвер мышки, драйвер CDROM, драйвера звука/midi для звуковухи, русификатор, зайдем в старый добрый Norton Commander, доберемся до EXE/COM/BAT-файла любимой игры и запустим ее, то вместо игры можем увидеть, например, вот такую картину:

Я часто сталкивался с подобным. Из доступных 640 килобайт драйверами может быть забито 100 или даже 150-200 килобайт. Оболочка (norton, volkov и т.д.) после запуска игры тоже остается висеть в памяти и занимать драгоценное место. Да и игра может требовать не 530 килобайт, как King's Bounty выше, а 550 или даже все 600 килобайт.


"Надо что-то делать!" - подумал я. Понятное дело, надо чистить autoexec.bat и config.sys! Но и после чистки и ужимания объема запускаемых драйверов и резидентных прог, бывает, что всё равно не хватает каких-то там 10 килобайт для запуска игры.


Тогда надо выкинуть оболочку из памяти. Тот же Norton Commander занимаете около 10 килобайт лишней оперативы. Но без оболочки неудобно запускать игры. Ведь придется комбинацией команд cd и dir переходить по папкам и смотреть имя нужного EXE/COM/BAT-файла, которое потом вводить в консоль чтобы запустить игру.


И тогда пришла мысль: "Надо сделать такую оболочку, которая не будет занимать память вообще". Но такого не может быть. Разве что если завершить работу оболочки перед запуском игры. Но, к сожалению, функция DOS "запуск проги из другой проги" не дает возможности закрыть оболочку, а потом запустить EXE/COM/BAT-файл игры. Отсюда вытекает:


Необходимая фича оболочки №1

Запуск программы "из чистого DOS" без нахождения оболочки в памяти


Тогда остается один вариант запуска проги "из чистого DOS":

- выбрать папку с EXE/COM/BAT-файлом игры текущей папкой,

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


Пользователю останется только ввести с экрана это имя и нажать Enter - и получится, что он достаточно легко запустил прогу из чистого DOS.


Необходимая фича оболочки №2

Легкораспространяемый единственный EXE-файл малого размера и с коротким именем.


В идеале это должна быть прога в виде единственного EXE-шника без сопутствующих файлов. Ее путь пользователь добавляет в PATH в autoexec.bat. И затем, если вдруг надо быстро запустить любимые проги, то одним вводом короткого имени EXE-файла оболочки запускает ее и дергает из под нее нужную прогу.


Название было выбрано "BlackStrip Shell" (т.е. "Оболочка BlackStrip"), а имя EXE-файла "bss.exe". В любое время вводим в досе "bss" - и мы тут же внутри оболочки.


Вперед!


Языком программирования был выбран знакомый с детства (и заброшенный там же в детстве) Visual Basic 1.0 for DOS - у него оконная среда программирования в текстовом режиме, есть поддержка работы с прерываниями через библиотеку vbdos.qlb, т.е. можно организовать работу с мышиным драйвером по int 33h, работу со стандартными DOS-функциями из int 21h и прочими прерываниями.


Т.к. делаем оболочку для небыстрых старых компов, а заодно хотим охватить большую аудиторию, то не будем использовать SVGA-видеорежимы, а возьмем 640х480х16 цветов. А это режим экрана "SCREEN 12".

Хотелось сделать прогу с русским и английским интерфейсами, при это не зависеть от загруженного/незагруженного русификатора. Поэтому добавляем графический растровый шрифт, предварительно слитый с DOS системы (самый мелкий, моноширинный 8х8 пикселей). А т.к. кроме EXE никаких файлов быть у оболочки не должно, то суем шрифт прямо внутрь проги с помощью команд DATA (конечно не вручную, а с помощью отдельной написанной приблуды, перекодирующей побайтово любой файл в набор DATA команд). И будем грузить шрифт оттуда с помощью RESTORE.

Программировать на VBDOS можно как на компе, так и на телефоне из под DOSBOX. Поэтому бОльшая часть кода (99%) была написана на телефоне.


Первые пробы написания шрифтом разного размера и жирности на синем "рабочем столе" оболочки:

Затем надо было придумать оконный менеджер. Не мудрствуя лукаво была сделана система, подозрительно похожая на Windows 95 по объемности компонентов. Вот окошко:

Потом кнопки и текст а ля "label". В углу планировалось рисовать большой значок открытого окна. Но потом от этого пришлось отказаться, не выпендриваться и рисовать его рядом с текстом заголовка окна.

Кстати, размеры значков были выбраны 8х8 точек. В совокупности с мелким шрифтом 8х8 пикселей это давало иллюзию "большого экрана" при разрешении 640х480 точек.


Потом был добавлен компонент "поле ввода":

Для иллюзии большого экрана надо было уменьшить все. Поэтому наряду со шрифтом и значками нужно было уменьшить мышиный курсор. Дефолтный курсор от драйвера был спрятан и заменен на значок 8х8 пикселей с "горячей точкой". В систему были добавлены 5 курсоров на все случаи жизни (курсор-крест так и не был нигде использован пока что).

Окна, висящие в пустоте, смущали. Поэтому надо было добавить панель задач. Раз уж "blackstrip" это "черная полоса мужского пола", то оболочка-чернополос должна была иметь черную полосу. И панель задач была окрашена в черный. А в углу были добавлены электрические часы из пяти 7-сегментных индикаторов, средний из который никогда не использовался (сначала предполагалось выводить там что нибудь еще, но потом там стало выводиться только время).

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

И на экране все это отображалось при работе оболочки так:

Оконная система работала и надо было писать внутренности самой оболочки. Т.к. главной задачей стояла задача "запустить прогу, вырубив оболочку", то надо было сваять файловый менеджер, позволяющий лазить по папкам и файлам и имеющий кнопки "запустить выделенный EXE из оболочки" и "запустить выделенный EXE из под DOS".


Прототип файлового менеджера:

Ну а потом все завертелось, и были написаны:

- сам файловый менеджер "Файлы",

- окошко "Память" отображения количества DOS-памяти в самой BSS (чтобы можно было понять - рыпаться ли запускать игру из BSS, либо ей точно не хватит памяти и игру запускать только из под DOS),

- окошко "Клавиатура" показа кода клавиши (для отладки BSS, а заодно и для заезжих DOS-программистов, которые, сидя в досе, м.б. захотят узнать какая клавиша на клаве какой имеет код, простой 1-байтовый или расширенный 2-байтовый),

- и окошко "Экран" настройки экрана, позволяющее выбрать соотношение сторон экрана 4:3 или 16:9 (при этом в 16:9 весь экран отображался также на 640х480, но BSS "думала" что экран 853x480, это позволяет на широкоэкранных ноутах видеть оболочку не с растянутыми по горизонтали компонентами, а с нормальными), выбрать тему (выпуклая типа win95 или плоская типа win10), язык интерфейса, а также ускорение отрисовки окон при их перемещении (при включенном ускорении задняя часть экрана за окном не перерисовается при перемещении окна мышью).

На панели задач были добавлены кнопки "Выключение оболочки", "Сеанс DOS", окно "Файлы", окно "Клавиатура", окно "Память", окно "Экран", разделитель, кнопки "Свернуть все окна", "Развернуть окно на весь экран", "Свернуть полноэкранное окно обратно".


Основная часть оболочки - файловый менеджер "Файлы", эдакий common dialog, имела следующие органы управления:

- наверху подобие командной строки и кнопку перехода (для тех, кто не любит жать Enter). В нее можно ввести как путь (по которому оболочка переходит), так и еще и имя файла в конце пути (на которое перескочит курсор в списке файлов),

- поле с отображением реальной текущей папке (если ввели наверху бред, то текущая папка не изменится),

- список файлов со значками и именами,

- маска-фильтр списка файлов, например, "*.exe" покажет только exe файлы в текущей папке, а также кнопка сброса фильтра в "*.*",

- кнопка "Обновить" позволяет обновить список файлов (если есть подозрения, что какой нибудь резидентный софт что нибудь меняет),

- кнопка "Папка выше" (как и кнопка Влево на клаве) позволяет выйти из текущей папки на один уровень вверх,

- кнопки "Запуск из BSS" (с возвратом обратно в BSS по окончании запущенной проги) и "Запуск из DOS" (та самая фича закрытия оболочки и оставления пользователя в чистом досе с подсказкой "что ввести чтобы запустить"),

- поле ввода аргументов командной строки "Аргументы КС", которые будут переданы программе при запуске из BSS/из DOS, а также кнопка очистки этого поля,

- опции сортировки и отображения списка файлов. Сортировка по имени, дате, размеру, типу файла, группировка файлов отдельно и папок отдельно, инверсия списка и отображения информации в соответствии с типом сортировки (т.е. отображение даты, размера, типа файла),

- показ количества файлов/папок в списке.


Потом была добавлена возможность смены диска (кнопка правее командной строки или на клавиатуре кнопка "Влево" из корневого каталога диска).

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


Меню запуска: ярлыки на DOS программы


Чтобы каждый раз не лезть к EXE хорошо бы было создать на него некоторое подобие ярлыка. Выбирать этот ярлык в меню и запускать по нему прогу (из оболочки или из доса). Так в оболочке родилось "меню запуска".


Для начала лезем в файловом менеджере к нужному EXE/COM/BAT-файлу, ставим на него курсор в списке файлов и жмем волшебную кнопку с ракетой, которая расположилась справа от командной строки в файловом менеджере рядом с кнопками перехода и смены диска.

После этого открывается окно меню запуска, где уже будут введены:

- название проги (по имени исполняемого файла),

- путь и имя исполняемого файла,

- номер значка для ярлыка,

Можно поменять имя на любое (включая русскоязычное), добавить аргументы для командной строки, изменить значок на любой значок оболочки, а потом либо добавить ярлык в список, либо заменить выбранный в списке ярлык на ярлык с введенными параметрами.


По списку можно лазить кнопками "Вверх"-"Вниз" на клавиатуре или в окне справа. При нажатии на пункт списка он загружается в верхние поля. Таким образом, можно нажать на пункт списка, загрузить его параметры в верхние поля, исправить их, нажать кнопку "Заменить" и сохранить измененный ярлык поверх первоначального загруженного.


Также можно:

- удалить выделенный ярлык кнопкой "Удалить",

- сортировать ярлыки по имени в алфавитном порядке,

- сдвинуть текущий ярлык в списке вверх или вниз на одну позицию,

- запустить программу/игру по ярлыку из BSS или из DOS.


Но и этого было мало. Иногда хочется посмотреть на файлы, окружающие программу или игру. Почитать "ридми" там или посмотреть текстовые ресурсы проги.


Hex-редактор


Было добавлено еще одно окошко, позволяющее побайтово просматривать и редактировать файлы. Ставим в файловом менеджере курсор на файл и жмем справа от командной строки волшебную кнопку с колбой или просто пытаемся открыть по Enter неисполняемый файл. Открывается окно редактора:

В этом окне можно:

- изменить имя файла и загрузить его (например, если имя файла известно и без файлового менеджера или имена нескольких файлов отличаются номером типа file1.txt, file2.txt),

- включить "режим правки" (редактирования файла вместо только чтения) и режим "Далее по ENTER" перехода к следующему байту по нажатию Enter в поле кода/символа текущего байта,

- выбрать кодировку файла для просмотра и редактирования (DOS 866 или кириллическую Windows 1251),

- выбрать символ переноса для просмотра файла в текстовом виде (0D(13) или 0A(10)),

- посмотреть на "таблице из трех двойных кнопок" файл побайтово, изменяя текущее смещение на 1 по кнопкам "Вверх" и "Вниз" с клавиатуры или кликом по "таблице из кнопок",

- изменить смещение вручную или обнулить/увеличить/уменьшить текущее смещение на определенное количество байт в области "Переход",

- посмотреть и изменить код текущего байта или символ текущего байта (в соответствии с выбранной кодировкой),

- посмотреть кнопками "Текст" и "Коды" в поле предпросмотра файл с текущего смещения в виде текста или hex-кодов,

- посмотреть таблицу символов в соответствии с выбранной кодировкой и ввести символ в "Код:"/"Символ:" по клику на ячейку этой таблицы,

- перейти кнопкой "Ниже" к следующей странице при просмотре файла в виде текста или hex-кодов.

Конец


Получилась вот такая DOS-оболочка:

Кнопки на панели задач аналогичны клавишам F1-F12. Поэтому, добавив в переменные среды path оболочку bss, и добавив единожды ярлыки на проги/игры в меню запуска, вызов любимой проги/игры из любой папки в DOS-е выглядит так:

1) bss [enter]

2) [F5] (вызов окна "Меню запуска")

3) Выбор проги в "Меню запуска" по [вверх][вниз]

4) [enter] для запуска из BSS либо [shift+enter] для запуска из под DOS (аналогичные сочетания работают и в окне файлового менеджера).


Скачать оболочку можно по адресу: http://blackstrip.ru/bss.exe (118 килобайт).


Запакована UPX-ом, при запуске разворачивается в память и занимает 270 килобайт.


Под досбоксом на андроиде работает хорошо, под досбоксом под виндой работает не очень (по Ctrl+F12 повысьте циклы до 20-30 тысяч), на настоящем досовском ноутбуке "Bliss 3070" 2000 года выпуска работает отлично.


Всем веселых игр под DOS.

Показать полностью 22

Так мы живем в симуляции или нет?

Представьте себе СуперМозг (далее СМ) - сверхмощнейший разум, обладающий собственным Я. И у этого мозга есть массив переменных типа "простейший элемент". У каждого элемента массива есть параметры x,y,z - его координаты в нашем трехмерном пространстве. Еще у элемента массива есть некоторые параметры текущего состояния (типа скорости, направления движения, энергии и т.д.). И этих элементов в массиве очень очень много. СМ однажды с некоторой целью положил их в одну точку с очень близкими координатами x,y,z и начал просчитывать (симулировать) их взаимодействия и последствия этих взаимодействий. Так появилась вселенная - тьма квантов с определенными законами существования и взаимодействия, просчитываемой СМ-ом.

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


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


Жизнь - сама по себе нелогичная вещь среди кусков мертвого вещества.


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


И вот бегают по Земле куча тварей, плодятся, едят друг друга, развиваются.


И тут СМ-а осенило "Чёрт, я же забыл про свою основную задачу! Возьмем вот этих расплодившихся обезьян, чуть подправим до более развитого состояния и закинем в Африку, но не просто так...Добавим им в мозг метку, по которой я смогу отыскать их в моем массиве элементов и управлять ими."


И начал СМ при рождении каждой новой глупой усовершенствованной обезьяны под названием "человек" ответвлять от себя нить мыслительного процесса, подсоединять напрямую к этой обезьянке и управлять ею. Не из какой-то точки x,y,z "вселенной", а просто извне массива, ведь он хозяин массива, что хочет, то и делает.

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


Чтобы не слишком перенапрягаться СМ когда создавал массив, то установил границы симуляции. Например, сами простейшие элементы массива, ниже которых спускаться некуда. Также квантование энергии по крохотным частям чтобы было легче считать ее передачу. Также замедление времени

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


Отсюда выводы:


1) все вещество - неживое. Весь контент вселенной - мертв. Это тупой сэндбокс с кучей законов существования и взаимодействия элементов массива.


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


3) все люди - такие же боты, закинутые искусственно, но с некоторой связью с мыслительной нитью СМа. Собственное Я человека - не имеет отношения к телу человека (живое тело - это просто бот). Сейчас, когда вы читаете этот пост - на самом деле это мыслительная нить СМа читает этот пост глазами тела вашего человека, закидывает в передающую часть (метку) мозга тела человека и ретранслирует в СМ по себе самой (по мыслительной нити). Также она поступает когда "вы" трогаете что-нибудь в сэндбоксе (взаимодействуете с этим чем-нибудь), обжигаете руку, режете палец и т.д.


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


4) отсюда образовываются понятия о добре и зле. Убил другого человека (отсоединил одну из мыслительных нитей СМа) - это плохо, т.к. навредил великой задаче СМа и затормозил ее выполнение. Помог другому человеку, объединился с другими людьми, подружился, работаешь вместе с ними - это хорошо, нитям работать вместе лучше и выполнять задачи, поставленные СМом, удобнее. Получается, все люди - братья, т.к. все мыслительные нити подсоединены к одному родителю - СМу.


5) звери отдельно, люди отдельно, промежуточного звена эволюции нет.


6) инопланетян нет. Их просто не завезли в этот массив x,y,z (,t).


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


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


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


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

Показать полностью 4
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества