Турбо Бейсик на современном компьютере

  Уважаемые читатели, статья написана в 2015-м году. Тогда я интенсивно и успешно работал на Турбо Бейсике. Сейчас перешёл на Визуал Бейсие 6, что и вам советую сделать. Программы на Турбо Бейсике теперь идут с трудом, кириллица в них не поддерживается, и только прямая запись в видео память, как это не удивительно, всё ещё работает и позволяет писать тексты. Видимо, эмулятор какой-то подключается. Но думаю, что и это отомрёт. Так что, увы.
______________________

  Использование программ, создаваемых в среде "Турбо Бейсик", которую все помнят по DOS-овским временам, до сих пор оказывается не менее, а иногда и более эффективным, чем использование современных специализированных профессиональных программ. И прежде всего потому, что у такой программы есть собственный хозяин, который лучше других знает, как устроить так, чтобы с ней было удобно работать.
  Не я один убеждён в непревзойдённых возможностях Бейсика, вот относительно свежая ссылка -
http://www.computerra.ru/84253/basic/
  Имеются и относительно более современные Бейсики, например VB6, в котором работал и я. Действительно, работает он раз в 8 быстрее, но вот создать эргономику той программы расчёта оптических систем, о которой упоминается чуть ниже, он не в состоянии. Это и понятно - более современные Бейсики используют эргономику системы и легко вписываются в неё, но в прикладных задачах эргономика системы не всегда удобна. Более примитивные языки меньше связаны с системой.
  Интересно, что в Турбо Бейсике имеется оператор Sound, создающий звук в фоновом режиме и с равномерно слышимой громкостью по частотам. В более продвинутых Бейсиках такой оператор отсутствует, остался только примитивный Beep, звучание которого прервать невозможно. Кто скажет, почему бы это?
  Выскажу своё мнение о том, что разработчики сделали это намерено, чтобы лишить пользователей возможности работать со звуком самостоятельно. Загляните в интернет - там полно вопросов о том, как сделать приличный звук разного тона. И не говорите, что зато можно проигрывать WAV файлы - кто будет возиться со множеством WAV файлов? Только профессионалы. Они же за это и деньги получать будут.
  Позиция по-житейски понятная, мы за Вас всё разжёвывать будем, Вы только деньги платите...

  НЕМНОГО О ЯЗЫКЕ Python

  1. Python имеет совершенно негодный для прикладного программирования синтаксис - отступы от начала строки в этом языке несут содержательное значение. Это жутко неудобно, поскольку не позволяет сделать большой текст компактным, с тем, чтобы обозревать его сразу. Турбо Бейсик и Визуал Бейсик 6 такого недостатка не имеют.
  2. Python для организации интерфейса или использования графических примитивов требует специальных библиотек. В Визуал Бейсике 6 специального знания библиотек на требуется.
Поэтому в настоящее время я использую Визуал Бейсик, и делаю это успешно -http://www.youtube.com/channel/UCxmwXkCiEIs7Stw7tlADyYw


   ОПЫТ ИСПОЛЬЗОВАНИЯ ТУРБО БЕЙСИКА

  По своему опыту. Хочу сообщить, что расчёт достаточно сложной оптической системы с вращающимся барабаном зеркал для лазерного отжига трансформаторной стали на заводе в городе Липецке я успешно провёл с помощью собственной программы. Тогда как профессиональная программа с этой задачей не справилась.
  Не хочу хулить профессиональную программу. Такие вещи, как компактные объективы она считает хорошо. Но лазерные системы, да ещё и с подвижными элементами имеют свою специфику. Эргономика программы, сделанной на Турбо бейсике оказалась лучше.
Об этой программе подробно здесь - http://www.proza.ru/2015/05/19/1630

  Другой пример успешного использования среды "Турбо Бейсик" вы можете видеть на этой страничке. Пианино на клавишах компьютера. Синтез музыкального звука и озвучивание мелодий интересны даже не сами по себе, а как исследование, проникающее в самые тайны рождения звука и особенности его восприятия. Именно операторная гибкость языка программирования Бейсик позволяет удобно делать это.
  Бейсик позволяет создавать звуковые файлы и наполнять их звуками различных музыкальных инструментов - фортепьяно, аккордеона, гитары и колоколов, скрипки и альта. Не верите? Прослушайте небольшой фрагмент, созданный исключительно средствами Турбо Бейсика, оцените благородный и красивый тембр -
http://yadi.sk/d/yzMLzaFZrDQbs
  Хотите услышать многоголосие? Бейсик и к этому способен - http://yadi.sk/d/1g2qF95ogtHyT
  Вот другой образец - http://yadi.sk/d/GBSM_LmXxgnAq
в нём никакой музыкальной записи не использовалось, весь звук вычислен.
Как это сделано? Подробности здесь - http://www.proza.ru/2016/10/21/985
  Другие записи классических музыкальных произведений можно прослушать тут - http://yadi.sk/d/poMxlrBuxendv
  Вы наверное знаете, что везде для таких вещей используется МИДИ формат. То, что сделал я на Турбо Бейсике, значительно проще, а качество звучания, пожалуй, получше. Вы, уважаемый читатель, если интересуетесь программированием и склонность к музыке у Вас есть, тоже сумеете овладеть этим делом.

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

  Мы с вами рассмотрим простой пример - программу перекодировки русского текста из кодировки, принятой в Windos, в старую кодировку  DOS времён, и обратно. На этом примере посмотрим, как может быть организован удобный диалог с пользователем в программе, написанной на Турбо бейсике.


   ОБЩАЯ ОРГАНИЗАЦИЯ РАБОТЫ

   Прежде всего об общей организации работы. Виндос 7,8 не позволяют использовать Турбо бейсик просто так. На компьютер нужно установить DOS ящик (скачать отсюда -  www.dosbox.com). На поле DOS ящика перетаскиваете те ЕХЕ файлы DOS-овских времён, которые будете исполнять. Прежде всего Турбо Бейсики.
    Почему я говорю о Турбо бейсиках во множественном числе? Не думаю, что вы будете работать в бейсике над одним кругом задач. У вас может быть несколько папок с файлами расширения BAS. Скопируйте в каждую папку по Турбо бейсику и переименуйте программы - TB, TB1, TB2 - в каждой папке свой. Перетащите их иконки на поле DOS ящика. Теперь вызывая из поля ящика один из бейсиков, вы будете работать с кругом тех BAS файлов, которые находятся в его родном каталоге. Очень удобно, файлы не будут путаться друг с другом.

    DOS ящик имеет смысл использовать и в Виндос ХР - хотя в ХР Турбо бейсик работает и без ящика, но в ящике звук идёт через колонки, и клавиша "Принт скрин" работает. Чтобы запустить в Виндос ХР Дос-программу через ящик, нужно затащить мышью иконку программы на иконку Дос-ящика. Вместе с тем в ящике Турбо Бейсик работает медленнее, чем без ящика.
    Насколько медленнее? Да порядочно - в 2000 раз, и не только при выводе чего-то на экран, но и во всех математических вычислениях тоже. )) Самое смешное было понять, для чего это сделано. А сделано это для того, чтобы человечки из старых DOS-овских игр бегали по экрану не слишком быстро при нынешних скоростях работы процессора. *
    Потому, если вы используете Турбо Бейсик, и вам нужны не игры, а быстродействие, то наплюйте на новые системы и работайте в Виндос ХР.
 
    Перейдём конкретно к нашей программе. Диалоговое окно вы можете видеть на рисунке над заголовком статьи. Текст программы см. ниже.
_____
* впрочем, Вы можете настроить ящик, и снизить число 2000 до числа 6, но это предел. Чтобы ускорить работу в ящике, откройте файл DOSBox Options, и в разделе [cpu] укажите cycles=max

   ВНЕШНИЙ ВИД ОКНА И ОРГАНИЗАЦИЯ ДИАЛОГА

   Диалог организует специальная функция FND, находящаяся в подключаемом блоке FNDr.BAS. Функция поддерживает текстовый режим, но у меня имеется и аналогичная функция для работы в графическом режиме.
   Старый Бейсик хорош для инженерных расчётов, он прост для специалистов, в современном программировании не очень разбирающихся. И если к средствам старого Бейсика добавить возможность работать в окнах - возможность, к которой мы так привыкли в среде Виндос, то тогда и в современных условиях он вполне может быть изящным и удобным.
   Функция FND (подробно она описана тут - http://www.proza.ru/2015/06/05/670), создаёт эти удобства. Мы с вами сейчас рассматриваем пример её использования.
   Для работы мышь не нужна. Мы ходим по полям окна в рамочке, нажимая на клавиши со стрелочками.
   В левом верхнем поле мы указываем recod.bas - старый файл, надписи которые мы хотим расшифровать - на русском языке (они ясны, если вы вызвали этот файл из Бейсика, но вот скопировать их оттуда в понятном виде вы не можете).
   В правом поле указываем файл recod.txt - файл, в котором мы хотим видеть все надписи на русском языке и читать их без стеснения в обычном Блокнотике, размещать в интернете без проблем с кодировкой, и проч.
   Между этими двумя полями нажимаем Enter на стрелочке. Стрелочка при каждом нажатии перенаправляется в противоположную сторону. Таким образом мы выбираем направление перекодировки.
   Можно указать символ, который будет заменять непонятные при перекодировке символы (все имеющие код больший 127, но не входящие в число русских букв, а также буквы ё и Ё) Сейчас в качестве такого символа указан знак вопроса, но мы можем указать там, например, пробел.

   Конфигурацию - все значения полей мы можем запомнить, нажав Enter на соответствующем поле. Тогда в следующий раз нам не придётся заполнять поля заново. Посмотрите по тексту программы (текст приведён ниже), как это организовано:
 
 CASE 4 : A=FND("F1 CONFIG.REC") - обращение к функции FND с опцией F1 сохраняет конфигурацию в файле CONFIG.REC - обычный текстовый файл, посмотрите на него из Блокнотика. Простая мелочь, но удобно, и ничего специально программировать не нужно.

  Посмотрите, как этот файл считывается:
ERR0=0
   OPEN "CONFIG.REC" FOR INPUT AS #1
   IF ERR0=1 THEN
     A=FND("R1")
             ELSE
     CLOSE #1 : A=FND("I1 CONFIG.REC")
   END IF
если он существует, то конфигурация будет установлена обращением
FND("I1 CONFIG.REC") , переменная  "A" конкретно здесь никакой роли не играет, просто мне удобнее организовывать подпрограмму функцию DEF, чем процедуру SUB с обращением CALL ( и обращение к функции покороче, и возвращать можно некую значащую величину, например флаг того, что операция прошла успешно).
  Посмотрите на строку  DKEY$=CHR$(18)+CHR$(19) - на ней задаётся список "горячих клавиш". После обращения к функции
10 A=FND("V1,D1"), где V1 визуализирует поля, а D1 отправляет программу к диалогу - после этого обращения, если в ходе диалога будут нажаты клавиши
Alt/E  или Alt/R, то "A" приобретёт значение 1 или 2 и программа остановится, или отправится на счёт.
  Не только эти клавиши могут вызывать активные действия. Нажатие Enter на некоторых полях, установив "A" в ноль, зададут значение переменной DMARK, которое затем будет проанализировано.

  Как будут действовать нажатия стрелочек, и весь вид полей с надписями возле них задаётся в массиве DATA после метки M1. Массив считывается обращением 
A=FND("R1")
  Вы видите, что "Турбо Бейсик" способен к достаточно удобному диалогу в окнах. Правда без мыши, к которой теперь все так привыкли.
  Успешному созданию диалога способствует развитый в Турбо бейсике набор функций, работающих с символьными строками. Посмотрите на строку "31,1N3R3L1P5M1F&==>" из массива DATA в программе, приведённой ниже. Как она обрабатывается?

  Поместим её в переменную S$="31,1N3R3L1P5M1F&==>" , тогда
VAL(S$) укажет на позицию поля в окне по горизонтали
VAL(MID$(S$,INSTR(S$,",")+1)) укажет на позицию поля по вертикали
MID$(S$,INSTR(S$,"&")+1) покажет содержимое поля, то есть "==>" см. рисунок к статье
  аналогичным образом выявляются действия при нажатии на этом поле клавиш:
Tab - переход на следующее поле, N3 указывает, что это поле третье
стрелки Вправо, Влево, Вниз - по указаниям R3, L1, P5
F - указывает на то, что поле фиксировано и выполняет роль кнопочки
M1 - указывает на действия при нажатии "кнопочки" (нажатие Enter на этом поле).

  Такая мнемоническая запись разной информации в одной строке компактна и, вместе с тем, удобно читаема при программировании. Строки легко запоминаются в обычных текстовых файлах txt, где они также легко могут быть проанализированы. Работа со строками широко применяется в Бейсике.

  И всё же Турбо Бейсик устаревает. Устаревает не потому, что он не хорош, а потому, что он не поддерживается в современных операционных системах. Пожалуй, Виндос-ХР последняя система, которая не ограничивает его работу.
  Для более продвинутых систем существуют "ящики", эмуляторы, сопрягающие старый Бейсик с новой системой. Программа с эмулятором идёт раз в 6 медленнее. Если Вас быстродействие устраивает, то пожалуйста. Освоив Турбо Бейсик, Вы можете перейти на Визуал Бейсик. Так сделал и я, практически за месяц перелицевав и значительно дополнив программы своего музыкального проекта.
  Об этих программах Вы можете прочесть в разделе "Синтез музыкального звука в Визуал Бейсике" на этой страничке.


   ТЕКСТ ПРОГРАММЫ RECOD.BAS

  В первой строке подключается блок, организующий диалог в окнах. Далее идёт массив DATA, который определяет вид, размер и содержание окна (замечу, что параллельно может быть открыто и другое окно, несколько другого вида, с перемещающимися вверх вниз строками), за описанием окна идёт собственно программа.
  Захотите сделать другую программу с другим окном - много переделывать не надо, возьмите это окно за основу и добавьте в него недостающие элементы. И всё та же функция FND вам новое окно создаст.

$INCLUDE "FNDr.BAS"
COLOR 7,1 : CLS
 ON ERROR GOTO ERMARK
 GOTO 2
M1:
   DATA "W02026702$ Text_recod - Alt/Exit /Run "
   DATA "18,1N2R2P4#ASC_text_file : &            "
   DATA "31,1N3R3L1P5M1F&==>"
   DATA "55,1N4L2P7#Windows_text_file : &            "
   DATA "20,2N5R5U1#Not_text_symbol : & "
   DATA "31,2N6R6L4U2M2F&RUN"
   DATA    DATA ",,"

ERMARK: ' Работа над ошибками
   A=ERR  : ERR0=1
   SELECT CASE A
     CASE 53
       LOCATE 5,3 : COLOR 4,7
       PRINT " Файл не найден "; : BEEP
       LOCATE 5,3 : COLOR 7,0
       DELAY 2 : PRINT "                ";
       RESUME NEXT
     CASE 62 : RESUME NEXT
   END SELECT
   COLOR 7,4 : LOCATE 1,1
   PRINT " ошибка";A;" ";
   DELAY 2 : STOP

2  DKEY$=CHR$(18)+CHR$(19) : ERR0=0
   OPEN "CONFIG.REC" FOR INPUT AS #1
   IF ERR0=1 THEN
     A=FND("R1")
             ELSE
     CLOSE #1 : A=FND("I1 CONFIG.REC")
   END IF
   A=FND("W1")
10 A=FND("V1,D1")
   IF A=1 THEN STOP
   IF A=2 THEN 100 'RUN
   SELECT CASE DMARK
     CASE 1
IF D1$(2)="==>" THEN D1$(2)="<==" ELSE D1$(2)="==>"
     CASE 2 : GOTO 100 'RUN
     CASE 3 : STOP
     CASE 4 : A=FND("F1 CONFIG.REC")
   END SELECT
   GOTO 10
'' p.2
100 P=1 : IF D1$(2)="<==" THEN P=2
   F1$=D1$(1) : F2$=D1$(3)
   IF P=2 THEN F1$=F2$ : F2$=D1$(1)
   NTS$=D1$(4) : S$=""
   FOR I=1 TO 126
     S$=S$+CHR$(I)
   NEXT I : S$=S$+NTS$
   SELECT CASE P
     CASE 1
       FOR I=192 TO 239 : S$=S$+CHR$(I) : NEXT I
       FOR I=176 TO 223 : S$=S$+NTS$ : NEXT I
       FOR I=240 TO 255 : S$=S$+CHR$(I) : NEXT I
       FOR I=240 TO 255 : S$=S$+NTS$ : NEXT I
     CASE 2
       FOR I=128 TO 191 : S$=S$+NTS$ : NEXT I
       FOR I=128 TO 175 : S$=S$+CHR$(I) : NEXT I
       FOR I=224 TO 239 : S$=S$+CHR$(I) : NEXT I
   END SELECT
   NS=0 : ERR0=0 : OPEN F1$ FOR INPUT AS #1
   IF ERR0=1 THEN 10
   OPEN F2$ FOR OUTPUT AS #2
110   B$="" : ERR0=0 : LINE INPUT #1,A$
   IF ERR0=1 THEN CLOSE #1 : CLOSE #2 : GOTO 10
   IF A$="" THEN PRINT #2, : NS=NS+1 : GOTO 110
   FOR I=1 TO LEN(A$)
     K=ASC(MID$(A$,I,1))
     IF K=0 THEN C$=CHR$(0) ELSE C$=MID$(S$,K,1)
     B$=B$+C$
   NEXT I
   PRINT #2,B$ : M$=INKEY$
   IF M$=CHR$(27) THEN CLOSE #1,#2 : GOTO 10
   NS=NS+1 : COLOR 7,0 : LOCATE 5,3 : PRINT NS
   GOTO 110
''
------
Эту же программу можно запустить в графическом режиме, подключив модуль FNDr_G.BAS. В этом случае на свободной части экрана можно делать какие-нибудь графические построения. Для подключения графического модуля первую строку программы следует заменить на строки:
$INCLUDE "FNDr_G.BAS"
SCREEN 9

Если кто-нибудь заинтересовался, обращайтесь на эл.почту


Рецензии
Хочется надеяться, что Ваша работа окажется востребованной.
Успехов!

Игорь Кулага   13.07.2018 22:27     Заявить о нарушении
Может быть. Хотя Турбо Бейсик на современных компьютерах идёт с трудом. Особенные неприятности доставляет кириллица - в Турбо Бейсике она шифруется по другому.
Новые программы я делаю теперь в Визуал Бейсике. Но он - для людей более продвинутых в программировании. Жаль, что простые языки уходят. Сложные программы делаются профессиональными программистами, а они отнюдь не знатоки прикладных задач. Сделанное ими, оказывается не всегда удобным. А креативные пользователи оказываются не у дел.

Дмитрий Маштаков   15.07.2018 09:15   Заявить о нарушении
На это произведение написаны 2 рецензии, здесь отображается последняя, остальные - в полном списке.