nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 17:02



Reply to topic  [ 9 posts ] 
Tiny BASIC 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Я тут давал уже ссылку на материалы по TinyBASIC, и поскольку там очень
хорошие исходники, я решил посмотреть, как это заработает под Proteus... :wink:
Attachment:
TBAS.gif
TBAS.gif [ 27.04 KiB | Viewed 4996 times ]

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

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

 ОРИГИНАЛЬНАЯ СХЕМА CPUville Z80 kit
Attachment:
S-board-schematic.gif
S-board-schematic.gif [ 302.79 KiB | Viewed 4996 times ]

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

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

В Proteus новых версий модель USART i8251 есть - можно переделать схему под
эту модель, в архиве оригинальный исходник под неё имеется.
Attachment:
TinyBASIC.zip [1.05 MiB]
Downloaded 360 times

_________________
iLavr


10 Dec 2019 20:26
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Программы предполагалось заносить в окно Терминала методом "копи-паст", но,
к сожалению на большой длине программы случаются сбои при таком вводе.

Оказывается, для этого есть хитрость, которую я сразу не понял, хотя и видел в коде... :roll:
Quote:
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:

Меня, честно говоря, сбило с толку, что в стандартных управляющих кодах терминалов:
Quote:
0F = ^O: SHIFT IN (locking-shift zero) режим обычного ASCII.
В КОИ-7 включает латинский режим. На некоторых принтерах включает режим узких символов.

_________________
iLavr


11 Dec 2019 09:03
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Да, кстати, BASIC-программы в архиве я набрал из разных источников по Tiny BASIC.
Просто, чтобы не сочинять их самому...
Не факт, что они на этом варианте Tiny BASIC будут без ошибок работать. :lol:

Я вот себе тут голову сломал:
Code:
130 IF L>0 THEN GOTO 200

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

Оказывается, нет в этой версии Tiny BASIC слова THEN ! Прямо как в Си! :ebiggrin:
Attachment:
if.gif
if.gif [ 10.3 KiB | Viewed 4962 times ]

_________________
iLavr


11 Dec 2019 15:11
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Ввел контроль RTS/CTS при работе i8250. Ввод через "копи-паст" стал гораздо чётче.
Attachment:
RTS_CTS.gif
RTS_CTS.gif [ 29.2 KiB | Viewed 4958 times ]

Подавлять вывод на экран через Control-O теперь не надо. Наоборот по терминалу теперь хорошо
видно, где произошел сбой. Жмём Control-С и продолжаем ввод через "копи-паст"
со сбойной строки.
Причесал более-менее одну программу на Tiny BASIC под его особенности...
Attachment:
TinyBASIC1.zip [42.12 KiB]
Downloaded 334 times

_________________
iLavr


11 Dec 2019 16:51
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Еще одна "засада" обнаружилась из-за древних привычек Tiny BASIС работать с терминалом... :-?

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

Читаю инструкцию:
Attachment:
RuO.gif
RuO.gif [ 7.37 KiB | Viewed 4934 times ]

Ага! Кнопка [RUB-OUT]! :wink: Это мы уже проходили вот здесь: KIM-1 & Teletype ASR-33
Это заодно и кнопка [DEL], если по-современному - код 7Fh.
Attachment:
Dbu-ON.jpg
Dbu-ON.jpg [ 48.86 KiB | Viewed 4934 times ]

А вот Alt-mode key я при всём усердии ни на каком терминале не нашел! :o
Спросить бы у DonnStewart-а, а с каким терминалом он запускает свой CPUville Z80 computer? :esurprised:

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

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

Image

_________________
iLavr


12 Dec 2019 07:28
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Чёрт побери все эти древние странности и мутности!... 8)
А ведь похоже, что эта Alt-mode key ни что иное, как (ESC)! :esurprised:
https://en.m.wikipedia.org/wiki/Escape_characters
Quote:
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


12 Dec 2019 08:27
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Ага! Кнопка [RUB-OUT]! :wink: Это мы уже проходили
Это заодно и кнопка [DEL], если по-современному - код 7Fh.
Тут опять некоторая путаница с этими клавишам и современностью... :-?

На более современных терминалах, типа VT-100, клавишу [RUB-OUT] заменили на более
благозвучную, видимо, [DEL] или [DELETE].
Attachment:
DEL_VT100_terminal.jpg
DEL_VT100_terminal.jpg [ 19.41 KiB | Viewed 4911 times ]

Эта клавиша [DEL] или [DELETE], собственно, и выдаёт код 7Fh.

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

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

Пишут также, что клавиша [F16] выдаёт код 7Fh, но я это проверить не могу. :lol:
А сама по себе клавиша [Backspace] выдаёт код 08h, и он Tiny BASIC-у пофигу...

_________________
iLavr


12 Dec 2019 16:05
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Чтобы избавиться от всех этих древних несуразностей, исправил код Tiny BASIC:
Attachment:
TinyBASICm.zip [21.21 KiB]
Downloaded 334 times

[Backspace] (код 08h) теперь, как и положено, стирает корректно последний символ.
[Ctrl]+[Backspace] (код 7Fh) теперь, уничтожает всю строку в памяти.
На экране терминала строка помечается квадратиком как стёртая, и курсор переходит
на новую строку, где можно заново строку набрать.

_________________
iLavr


13 Dec 2019 17:11
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
В архиве 2 мануала по TinyBASIC ...

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

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

Вырезал из него только Хелп по самому языку в формате *.rtf.
Attachment:
Tiny_Basic_Manual.zip [6.81 KiB]
Downloaded 329 times

Хотел скомпилировать CHM-Хелп-файл, но призадумался... может 6 страниц перевести на русский...
и оставил пока как есть... :wink:

_________________
iLavr


14 Dec 2019 06:21
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 9 posts ] 

Who is online

Users browsing this forum: No registered users and 20 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.