blackstrip

blackstrip

Пикабушник
поставил 114 плюсов и 295 минусов
отредактировал 0 постов
проголосовал за 0 редактирований
Награды:
5 лет на Пикабу
9255 рейтинг 28 подписчиков 13 подписок 8 постов 1 в горячем

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

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

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

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


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

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

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


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


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

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

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

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


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

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

Попытка №1

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

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

Попытка №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, полэкрана у которых - это ровно разрешение картинки игры! На компе этот режим всегда казался очень крупноточечным, а вот на телефоне, когда всё идеально пиксель в пиксель - это красиво!

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

Второй ряд символьных клавиш 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):

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

Файлы

Если кто искал подобный софт для ввода русского текста, то вот эта получившаяся клавиатура под 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

Новый World of Warcraft Classic - первые скриншоты

Было

Новый World of Warcraft Classic - первые скриншоты Blizzard, World of Warcraft, Классика, Pixel Art

Стало

Новый World of Warcraft Classic - первые скриншоты Blizzard, World of Warcraft, Классика, Pixel Art
Показать полностью 1

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

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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

Я часто сталкивался с подобным. Из доступных 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 в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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


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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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


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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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


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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

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

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

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

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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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


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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

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

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

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

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

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

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

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

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

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


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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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


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


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


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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

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

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

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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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


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


Также можно:

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

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

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

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


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


Hex-редактор


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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

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

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

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

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

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

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

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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост
Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

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

Конец


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

Разработка оболочки-проводника для DOS в 2017 году DOS, Оболочка, Shell, Visual basic, Qbasic, Длиннопост

Кнопки на панели задач аналогичны клавишам 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

Почему гугл такой добрый?

Почему гугл такой добрый?

Беспощадный пионер

Беспощадный пионер Павлик Морозов, Родители и дети, Юный ленинец, Вырезки из газет и журналов
Показать полностью 1

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

Так мы живем в симуляции или нет? Жизнь, Симуляция, Матрица, Смысл жизни, Длиннопост

Представьте себе СуперМозг (далее СМ) - сверхмощнейший разум, обладающий собственным Я. И у этого мозга есть массив переменных типа "простейший элемент". У каждого элемента массива есть параметры 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

Огур-что?

Огур-что? Огурцы, Граммар-наци, Ашан, Смаката

Московская область, Подольск, Ашан в Капитолии, сегодня вечером.


Или это белорусское слово такое необычное затерялось на русифицированной этикетке?

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

Пиксель арт для игр путем катания курсора

Жил-был один человек в 1998 году, у которого при рисовании пиксель арта в MS Paint под Windows 98 дрожали руки, а мышка с шариком каталась тяжело и кнопки на ней прожимались с трудом. Поставить точку в нужное место мышкой было трудно на рисунке, а уж линией две точки соединить - вообще тяжело, это надо два раза кликнуть, и оба раза точно в нужные пиксели. Тяжелые были времена.


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


Сел он за кубейсик 4.5, модный в те времена язык программирования, взмахнул пальцами над клавиатурой и появился код.

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

И сделал он редактор, в котором можно было курсор с клавиатуры катать стрелками, а пробелом ставить точки. Он еще не знал, что ранее, например, в Windows 3.11, была уже такая возможность в редакторе Paint Brush, а потом ее вырезали, т.к. пришло время мыши. Дитё Windows 9x, что с него взять...

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост
Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост
Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

Но т.к. был он всего лишь 13-летний школьник, то не знал он ни работы с файлами кроме элементарной, ни обработки изображений. И заглохло дело его. И лежало оно до 2004 года, когда вдруг стали выпускать телефоны с Java. У них как раз были кнопки. Он возьми да и сделай редактор кнопочный, такой что катай себе курсор да точки рисуй.

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

Время шло, уж 2006 год шёл, а он все делал редактор, фичи ему приматывал, баги правил, интерфейс разрисовывал.

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

И вот в 2010 году он силы в себе почувствовал вернуться в 1998 год и сделать таки редактор курсорокатательный для компьютера. Запряг он Delphi 7 и полез на нём в гору.

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

Скоро сказка сказывается, да нескоро дело делается. Сидел он пять лет, сначала переписывал возможности мобильного редактора: рисование пиксельное в 8-битном (256-цветном) режиме с палитрой индексированной, да в 24-битном режиме RGB-полноцветном, сборку GIF-ов анимированных да со шрифтами PCF растровыми работу.

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

Затем сборку и разборку AVI видеофайлов из кадров отдельных.

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

Затем работу с тайлами для создания карт двухмерных для игр простых.

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

Затем работу с 3D изображениями (JPS, MPO), работу с альфа-каналом для PNG, работу со скриптами на языке Java Script и программирование с их помощью рисования рисунков и анимаций.

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

А потом и звуковой редактор добавил для создания озвучки AVI файлов, а также для создания звуков и музыки для игр, с возможностью программирования мелодий командами, использования SF2/DLS звуковых банков и создания собственных инструментов, записи мелодий в скрипт с клавиатуры подобно клавиатуре фортепиано, записи мелодий по игре в определенных стилях на фортепиано, шестиструнной гитаре и сетке барабанов.

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост
Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост
Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост
Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

Ну и полученные в звуковом редакторе WAV мелодии можно стало конечно же прикрепить к созданным ранее AVI видеофайлам.

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

И получились у него графический пиксель арт редактор, звуковой редактор и видео редактор в одном флаконе в EXE-файле весом 3 Мегабайта и c CHM-файлом помощи в комплекте весом около 10 мегабайт, которые работали в любом Windows начиная с Windows 95 и заканчивая Windows 10:

http://blackstrip.ru/pcw.zip


И стал он пиксель арт для своих будущих игр учиться рисовать и добра наживать.

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

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

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

А когда у него рядом не было ноутбука, то он рисовал на той самой мобильной программе из 2004-2010 года, но сконвертированной под андроид через microemu с особенной виртуальной мобильной клавиатурой как у телефона.

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

Эта программа конечно умела меньше чем компьютерная версия - всего лишь рисовать картинки в 8-битном режиме с индексированной палитрой и в 24-битном полноцветном RGB режиме, а также собирать GIF анимации, работать с растровыми PCF шрифтами и рисовать полупрозрачные PNG с альфа-каналом:

https://play.google.com/store/apps/details?id=org.microemu.a...


А самые лучшие работы на этой программе от пиксель-артистов со всего света он собирал в галерею, в которую каждый желающий мог отослать свою работу на модерирование и вывешивание:

https://play.google.com/store/apps/details?id=com.bss.paintc...

Пиксель арт для игр путем катания курсора Графический редактор, Звуковой редактор, Видеоредактор, Бесплатно, Не фотошоп, Длиннопост

А потом одним осенним вечером 2016 года он написал на Пикабу этот пост =)

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