Tiny BASIC

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Tiny BASIC

Post by Lavr »

Я тут давал уже ссылку на материалы по TinyBASIC, и поскольку там очень
хорошие исходники, я решил посмотреть, как это заработает под Proteus... :wink:
TBAS.gif
Оригинальный исходник TinyBASIC я немного подправил, чтобы он компилировался
без макросов, благо макрос там был всего один.
И теперь он без проблем компилируется ассемблером ASM8080, который я использую
в пакете Proteusэтот ассемблер здесь выкладывал).

Ну и пришлось ещё подправить подпрограммы работы с терминалом, поскольку
в оригинальной схеме используется USART i8251, а в моей версии Proteus её
нет, но есть UART i8250.

 ОРИГИНАЛЬНАЯ СХЕМА CPUville Z80 kit
S-board-schematic.gif

Схему свою я на скорую руку переделал из тестовой для нашей модели процессора,
благо там уже практически всё было и пришлось лишь "подпилить" карту памяти,
чтобы она соответствовала ПЗУ 2716 для TinyBASIC и всё выше - ОЗУ.

В архиве 2 мануала по TinyBASIC и несколько программ на самом BASIC, а также
Тест для UART i8250.
Программы предполагалось заносить в окно Терминала методом "копи-паст", но,
к сожалению на большой длине программы случаются сбои при таком вводе.
Возможно, на более быстрых компьютерах сбоев не будет (я - на старом Пень-II)))

В Proteus новых версий модель USART i8251 есть - можно переделать схему под
эту модель, в архиве оригинальный исходник под неё имеется.
TinyBASIC.zip
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Tiny BASIC

Post by Lavr »

Lavr wrote:Программы предполагалось заносить в окно Терминала методом "копи-паст", но,
к сожалению на большой длине программы случаются сбои при таком вводе.
Оказывается, для этого есть хитрость, которую я сразу не понял, хотя и видел в коде... :roll:
The Control-O key on the input device can he used to turn the output
device ON and OFF. This is useful when you want to read in a program
punched on paper tape. To produce such a paper tape, type "LIST"
without CR. Turn on the paper tape punch and type a few Control-
Shift-P's and then a CR. When listing is finished, type more Control-
Shift-P's and turn off the punch.
Нажатие Control-O подавляет вывод на экран терминала. Это я проверил - так и есть.
Но смысл в том, что это сейчас "экран", а придумано всё было во времена телетайпа с бумагой. :wink:
То что для нас "копи-паст", тогда было вводом с ленты, ввод этот быстрый, и печать за ним,
вполне понятно, не успевала.
Поэтому Control-O - подавить эхопечать, Control-O снова - включить эхопечать,
режим триггера.

А вывод программы делался хитро: LIST без [Enter], включается "дырокол" телетайпа и уже
после этого - [Enter]: листинг идёт на бумажную ленту. :lol:

Меня, честно говоря, сбило с толку, что в стандартных управляющих кодах терминалов:
0F = ^O: SHIFT IN (locking-shift zero) режим обычного ASCII.
В КОИ-7 включает латинский режим. На некоторых принтерах включает режим узких символов.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Tiny BASIC

Post by Lavr »

Да, кстати, BASIC-программы в архиве я набрал из разных источников по Tiny BASIC.
Просто, чтобы не сочинять их самому...
Не факт, что они на этом варианте Tiny BASIC будут без ошибок работать. :lol:

Я вот себе тут голову сломал:

Code: Select all

130 IF L>0 THEN GOTO 200 

не работает, хоть вешайся! :o

Оказывается, нет в этой версии Tiny BASIC слова THEN ! Прямо как в Си! :ebiggrin:
if.gif
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Tiny BASIC

Post by Lavr »

Ввел контроль RTS/CTS при работе i8250. Ввод через "копи-паст" стал гораздо чётче.
RTS_CTS.gif
Подавлять вывод на экран через Control-O теперь не надо. Наоборот по терминалу теперь хорошо
видно, где произошел сбой. Жмём Control-С и продолжаем ввод через "копи-паст"
со сбойной строки.
Причесал более-менее одну программу на Tiny BASIC под его особенности...
TinyBASIC1.zip
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Tiny BASIC

Post by Lavr »

Еще одна "засада" обнаружилась из-за древних привычек Tiny BASIС работать с терминалом... :-?

При редактировании строки я по привычке пользуюсь клавишей [BackSpace], но заметил я, что она
удаляет последний символ на экране "терминала", а вот Tiny BASIС - её не понимает! :roll:

Читаю инструкцию:
RuO.gif
Ага! Кнопка [RUB-OUT]! :wink: Это мы уже проходили вот здесь: KIM-1 & Teletype ASR-33
Это заодно и кнопка [DEL], если по-современному - код 7Fh.
Dbu-ON.jpg
А вот Alt-mode key я при всём усердии ни на каком терминале не нашел! :o
Спросить бы у DonnStewart-а, а с каким терминалом он запускает свой CPUville Z80 computer? :esurprised:

Короче говоря, код этой секретной Alt-mode key = 7Dh.
На современных клавиатурах это - [ } ], и она, действительно, удаляет строку при
нажатии, причем именно так неуклюже, как написано в Хелп.
"Неуклюже" потому как виртуальный "терминал" не понимает код "стрелка вверх". :-?

Но вот секретная клавиша терминала - Alt-mode key - осталась для меня зогаткой! :o

Image
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Tiny BASIC

Post by Lavr »

Чёрт побери все эти древние странности и мутности!... 8)
А ведь похоже, что эта Alt-mode key ни что иное, как (ESC)! :esurprised:
https://en.m.wikipedia.org/wiki/Escape_characters
The Escape key is usually found on standard PC keyboards. However it is commonly absent from keyboards for PDAs and other devices not designed primarily for ASCII communications. The DEC VT220 series was one of the few popular keyboards that did not have a dedicated Esc key, instead using one of the keys above the main keypad. In user interfaces of the 1970s–1980s it was not uncommon to use this key as an escape character, but in modern desktop computers such use is dropped. Sometimes the key was identified with AltMode (for alternative mode).
...
The Point-to-Point Protocol uses the 0x7D octet (\175, or ASCII: } ) as an escape character.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Tiny BASIC

Post by Lavr »

Lavr wrote:Ага! Кнопка [RUB-OUT]! :wink: Это мы уже проходили
Это заодно и кнопка [DEL], если по-современному - код 7Fh.
Тут опять некоторая путаница с этими клавишам и современностью... :-?

На более современных терминалах, типа VT-100, клавишу [RUB-OUT] заменили на более
благозвучную, видимо, [DEL] или [DELETE].
DEL_VT100_terminal.jpg
Эта клавиша [DEL] или [DELETE], собственно, и выдаёт код 7Fh.

А клавиша [DEL] на наших современных клавиатурах выдаёт совершенно иной код :exclaim:

С современной клавиатуры послать код 7Fh можно комбинацией клавиш:
[Ctrl]+[Backspace]. (CTRL+BACKSPACE inserts invisible 0x7F (DEL) character)

Пишут также, что клавиша [F16] выдаёт код 7Fh, но я это проверить не могу. :lol:
А сама по себе клавиша [Backspace] выдаёт код 08h, и он Tiny BASIC-у пофигу...
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Tiny BASIC

Post by Lavr »

Чтобы избавиться от всех этих древних несуразностей, исправил код Tiny BASIC:
TinyBASICm.zip
[Backspace] (код 08h) теперь, как и положено, стирает корректно последний символ.
[Ctrl]+[Backspace] (код 7Fh) теперь, уничтожает всю строку в памяти.
На экране терминала строка помечается квадратиком как стёртая, и курсор переходит
на новую строку, где можно заново строку набрать.
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Tiny BASIC

Post by Lavr »

Lavr wrote:В архиве 2 мануала по TinyBASIC ...
В текстовом мануле - там больше общие сведения о Tiny BASIC-ах, под этот конкретный
экземпляр соответствует не всё...

В *.PDF мануле - много лишнего и длинный листинг самого Tiny BASIC, пользоваться неудобно.

Вырезал из него только Хелп по самому языку в формате *.rtf.
Tiny_Basic_Manual.zip
Хотел скомпилировать CHM-Хелп-файл, но призадумался... может 6 страниц перевести на русский...
и оставил пока как есть... :wink:
You do not have the required permissions to view the files attached to this post.
iLavr