QBasic ( программирование )
Помогите правильно записать, в компиляторе выдаёт ошибку , не определяет SIN!
Помогите правильно записать, в компиляторе выдаёт ошибку , не определяет SIN!
Эта небольшая история о том, как навыки языка программирования Бэйсик пригодились во втором десятке XXI века.
Сразу скажу вам, все проекты которые тут представлены делались в течении 2х-3х недель и не более.
Всё началось с простого, с моргания лампочками, к сожалению в те годы не всегда обладал аппаратурой видео съемки:
Однажды друг попросил придумать ему рекламу ремонта сотовых телефонов и в то время уже начал тренироваться программировать микроконтроллеры. Увидев его "плюс" на вывеске, я ему предложил закрыть его орг.стеклом и внутри приклеить старые сотовые телефоны...ох и старые, там даже была модель и фильма "Матрица" как у Нэо.
Изучая микроконтроллеры, я столкнулся с запасом экранчиков от Nokia 1110, это породило чае-кофе-наливалку. Шурупы из мобильных телефонов из соседней мастерской, наждак и фен из соседней лавочки ремонта обуви породили это (три части по мере прогресса):
Всё это написано на Бэйсике.... но из игрушек я плавно переходил в большие игрушки. Как-то на 9 мая мне захотелось удивить жителей маленького города и за пару недель сварил и создал такую конструкцию:
А ещё через год на 9 мая создал вот такую конструкцию, установив на автомобиль:
Понимаю, скажете вы, всё это это игрушки и любой сможет сделать такое..... но это-же для души!!!
Устроился как-то в одну добрую организацию, там многие станки работали на перфоленте. Однажды зашел в цех и вижу как два электромеханика пытаются кормить старые токарные ЧПУ станки Schaublin измятой перфолентой, выглядело это примерно так (видео с кнопочного телефона):
Само собой это был тупик развития цивилизации, кое как оцифровал этот перфолес, прочитав тонны литературы, износявкав гугл переводчик, я создал вот это:
Так-же был на заводе ещё одно страшное чудо:
Воткнул туда Atmega128 и графический дисплей. Разработка проекта была около месяца и то по большей части шкурить-красить-медь сдавать.
Я эти микроконтроллеры пихал куда только можно. Многие старые узлы на производстве мозги канифолили, по этому приходилось самому всё переделывать. То создам модуль управления тремя коробками передачи и запуском шпинделя, то моторчик заставлю линейно работать с обратной связью для движения осей фрезерного станка:
Даже в квадратурный лес залез:
Всё это не только на Basic в Bascom Avr, но и на Basic в PureBasic. Если кто и дочитал до конца, то вот так вот оказал техническую помощь друзьям, они собрали сушилку леса, но с печкой не все контроллеры могли работать, дорого стоили, родной контроллер сломался и вообще исчез в неизвестном направлении, я на скорую руку полуавтомат собрал:
Всё на великом Бэйсике и результат не через месяц-два.
Конечно да, очень тесно в архитектуре AVR, я даже сделал попытки войти в эру VGA и хоть и писал на Бэйсике, даже DMA вкурил, всё-же производительность AVR контроллера, его память и т.п. не позволяла развернуться так как хотелось:
Я не показал все устройства и всё что собирал, это всё поверхностно.
Не ругайте Basic, он способен ещё на многое и в короткие сроки. Это не Arduino и рядом не стоит, тут не смотря на лёгкий синтаксис всё равно устройство и особенности микроконтроллера изучать приходится. Ну и да, я обладатель лицензионного BascomAVR.
Хочу выразить благодарность информатике в 97-98 годах за уроки в Qbasic и особая благодарность родителям за Delta-C в начале 90х. Всё началось с Basic-48k.
P:S: Одно из первых видео где я осваивал силовое управление нагрузкой и программным ШИМ:
Приношу извинения за орфографические ошибки, в школе на тройках еле вылазил, да и в 90е качественное образование было недоступным и кто был без денег, особенно многодетные семьи, те сидели в последних буквах класса на самых последних партах и даже с плохим зрением.
Как показывает практика, комфорт существования динозавра человека при работе/игре под 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.
Велик шанс, что мобильным интернетом вы пользуетесь прямо сейчас, читая этот текст. Без него трудно представить нашу жизнь — но знаете ли вы, как именно он работает? Что означает G в 4G и почему связь называется сотовой? Сейчас вместе с МегаФоном все объясним. Да так просто, что поймет даже ребенок!
Сотовая вышка — это большая рация с огромной антенной, наши телефоны — рации поменьше. Между собой они связываются с помощью невидимых глазу волн. Вышка напрямую подключена к интернету с помощью толстого подземного кабеля. Так что она работает, как огромный роутер, а паролями от «Wi-Fi» служат сим-карты.
А еще у каждой вышки есть область действия. И если посмотреть на город, в котором вы живете, с высоты птичьего полета и представить, что нам видно эти области, они будут похожи на пчелиные соты. Вот почему связь называется сотовой.
Наши телефоны постоянно ищут радиосигнал, подключаясь к самому мощному. Чем ближе его источник, тем он сильнее. Когда телефон находится в зоне доступа радиовышки, он постоянно «разговаривает» с ней, обмениваясь информацией. Та получает от вас буквы и цифры, а присылает картинки, видео и музыку. А при разговоре передает ваш голос в виде единиц и нулей на телефон мамы или приятеля, где динамик превращает все это обратно в звук.
Компания, которая устанавливает вышки, и следит за тем, чтобы они исправно работали, называется оператором. Сегодня лидер по покрытию и скорости мобильного интернета в России — МегаФон*. Все благодаря тому, что компания постоянно внедряет самые современные технологии, обеспечивающие быстрый и стабильный доступ в сеть.
G — это первая буква английского слова generation, поколение. То есть 1G — связь первого поколения, а 4G — четвертого. Чем новее поколение — тем лучше. Друг от друга все эти G отличаются количеством информации, которую может передать сотовая вышка. В эпоху 1G по телефону можно было только звонить, а звучание голоса собеседников было очень плохим. В 2G звонки стали лучше, а еще появилась СМС — сегодня уже полузабытая технология пересылки коротких сообщений. Тогда у сообщений был лимит на количество знаков, а за отправку каждого операторы брали деньги. Поэтому люди ставили точки вместо пробелов и писали русские слова латинскими буквами — так умещалось больше символов.
3G — это уже мобильный интернет: можно и сайт открыть, и эмодзи отправить, но вот видео в хорошем качестве все еще не посмотришь.
А 4G — это уже современный стандарт: классный, быстрый, надежный.
Правда, и это не предел. У МегаФона есть pre-5G — это как 4G, только круче: работает даже если вы в огромной толпе, а скорость почти как по проводу. Все благодаря умной программе на станциях оператора, которая определяет самые загруженные участки и расширяет радиоканал для тех, у кого подключена опция pre-5G в тарифном плане.
А как же LTE? Это просто название стандарта беспроводной передачи данных, входящего в четвертое поколение 4G. Если 4G — это игровая приставка, LTE в таком контексте — PlayStation или Xbox.
Представьте, что вы направили луч фонарика в окно, чтобы осветить комнату за ним. Если перед лучом будут преграды (дерево или, скажем, ваш любопытный друг, которому интересно, что это вы такое делаете), часть света «потеряется» и освещение получится тусклым. Конечно, можно купить более мощный фонарик, но полностью проблему это не решит: препятствия ведь все так же будут блокировать лучи.
А что если поставить, скажем, два фонарика, причем так, чтобы их лучи не накладывались друг на друга, а еще взять и прорубить в стене дополнительное окно? Именно так и работает технология MIMO. Один сигнал (то есть поток из данных) одновременно отправляется вам на телефон сразу двумя антеннами. А ваш телефон принимает их своими двумя антеннами. В итоге скорость мобильного интернета увеличивается.
В сетях МегаФона используется технология Massive MIMO: «фонариков» в них не два, а гораздо, гораздо больше. Вот почему интернет оператора такой быстрый и работает там, где не получается у других.
Сравните две картинки:
Картинка справа вся в квадратиках из-за низкого разрешения. Выглядит ужасно, но есть и плюс: она гораздо меньше весит, а значит, быстро загрузить ее может даже самый слабый интернет. А для того, чтобы быстро показать вам красоту слева, нужна очень хорошая скорость.
Когда вы разговариваете по обычному телефону (то есть не через WhatsApp или Telegram), вы делаете это по 2G. Так что ваш голос, как и голос вашего собеседника, транслируется не в максимально возможном качестве. Кроме того, вы не можете пользоваться интернетом, пока говорите. Одни неудобства.
Вот для чего нужна VoLTE: эта технология позволяет в реальном времени транслировать речь через 4G. А это значит — идеальное звучание и минимальная задержка сигнала.
Представьте, что вы — капитан парусного корабля. Но есть загвоздка: у вас нет команды, и все-все-все приходится делать самому. Крутить штурвал, выбирая направление, карабкаться на мачту, чтобы осматривать горизонт, разворачивать паруса и даже латать пробоины. Та еще задачка!
Раньше всей работой сотовых вышек в ручном режиме управляли специалисты. Им приходилось самостоятельно балансировать нагрузку на станциях, выбирать углы наклона антенн и делать еще кучу всего, чтобы у абонентов была стабильная и надежная связь.
Поэтому МегаФон внедрил у себя систему автоматической оптимизации SON. Это умная программа, которая постоянно, 24 часа в сутки и семь дней в неделю, анализирует работу станций и вышек и сама вносит нужные корректировки. Плюс она умеет устранять ошибки и сбои даже быстрее, чем человек.
В итоге специалисты МегаФона могут сосредоточиться на внедрении новых технологий и расширении возможностей сети.
Абонентам МегаФона доступны самые современные технологии мобильной связи: от быстрейшего в России LTE и pre5G до VoLTE. А еще это оператор с самым большим покрытием в стране. Подключайте тарифы МегаФона и наслаждайтесь действительно качественной связью.
* МегаФон — мобильный оператор №1 по скорости и покрытию. Основано на анализе скорости мобильного интернета и данных о покрытии сети компании Ookla ® («Оокла») в 2017–2023 годах. Карта покрытия и другие подробности — на megafon.ru.
Реклама ПАО «МегаФон», ИНН: 7812014560