|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
|
Page 1 of 1
|
[ 9 posts ] |
|
Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я тут давал уже ссылку на материалы по TinyBASIC, и поскольку там очень хорошие исходники, я решил посмотреть, как это заработает под Proteus... Оригинальный исходник TinyBASIC я немного подправил, чтобы он компилировался без макросов, благо макрос там был всего один. И теперь он без проблем компилируется ассемблером ASM8080, который я использую в пакете Proteus (я этот ассемблер здесь выкладывал). Ну и пришлось ещё подправить подпрограммы работы с терминалом, поскольку в оригинальной схеме используется USART i8251, а в моей версии Proteus её нет, но есть UART i8250. ОРИГИНАЛЬНАЯ СХЕМА CPUville Z80 kit Схему свою я на скорую руку переделал из тестовой для нашей модели процессора, благо там уже практически всё было и пришлось лишь "подпилить" карту памяти, чтобы она соответствовала ПЗУ 2716 для TinyBASIC и всё выше - ОЗУ. В архиве 2 мануала по TinyBASIC и несколько программ на самом BASIC, а также Тест для UART i8250. Программы предполагалось заносить в окно Терминала методом "копи-паст", но, к сожалению на большой длине программы случаются сбои при таком вводе. Возможно, на более быстрых компьютерах сбоев не будет (я - на старом Пень-II))) В Proteus новых версий модель USART i8251 есть - можно переделать схему под эту модель, в архиве оригинальный исходник под неё имеется.
_________________ iLavr
|
10 Dec 2019 20:26 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Оказывается, для этого есть хитрость, которую я сразу не понял, хотя и видел в коде... Нажатие Control-O подавляет вывод на экран терминала. Это я проверил - так и есть. Но смысл в том, что это сейчас "экран", а придумано всё было во времена телетайпа с бумагой. То что для нас "копи-паст", тогда было вводом с ленты, ввод этот быстрый, и печать за ним, вполне понятно, не успевала. Поэтому Control-O - подавить эхопечать, Control-O снова - включить эхопечать, режим триггера. А вывод программы делался хитро: LIST без [Enter], включается "дырокол" телетайпа и уже после этого - [Enter]: листинг идёт на бумажную ленту. Меня, честно говоря, сбило с толку, что в стандартных управляющих кодах терминалов:
_________________ iLavr
|
11 Dec 2019 09:03 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Да, кстати, BASIC-программы в архиве я набрал из разных источников по Tiny BASIC. Просто, чтобы не сочинять их самому... Не факт, что они на этом варианте Tiny BASIC будут без ошибок работать. Я вот себе тут голову сломал: не работает, хоть вешайся! Оказывается, нет в этой версии Tiny BASIC слова THEN ! Прямо как в Си!
_________________ iLavr
|
11 Dec 2019 15:11 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ввел контроль RTS/CTS при работе i8250. Ввод через "копи-паст" стал гораздо чётче. Подавлять вывод на экран через Control-O теперь не надо. Наоборот по терминалу теперь хорошо видно, где произошел сбой. Жмём Control-С и продолжаем ввод через "копи-паст" со сбойной строки. Причесал более-менее одну программу на Tiny BASIC под его особенности...
_________________ iLavr
|
11 Dec 2019 16:51 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Еще одна "засада" обнаружилась из-за древних привычек Tiny BASIС работать с терминалом... При редактировании строки я по привычке пользуюсь клавишей [BackSpace], но заметил я, что она удаляет последний символ на экране "терминала", а вот Tiny BASIС - её не понимает! Читаю инструкцию: Ага! Кнопка [RUB-OUT]! Это мы уже проходили вот здесь: KIM-1 & Teletype ASR-33Это заодно и кнопка [DEL], если по-современному - код 7Fh. А вот Alt-mode key я при всём усердии ни на каком терминале не нашел! Спросить бы у Donn-а Stewart-а, а с каким терминалом он запускает свой CPUville Z80 computer? Короче говоря, код этой секретной Alt-mode key = 7Dh. На современных клавиатурах это - [ } ], и она, действительно, удаляет строку при нажатии, причем именно так неуклюже, как написано в Хелп. "Неуклюже" потому как виртуальный "терминал" не понимает код "стрелка вверх". Но вот секретная клавиша терминала - Alt-mode key - осталась для меня зогаткой!
_________________ iLavr
|
12 Dec 2019 07:28 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Чёрт побери все эти древние странности и мутности!... А ведь похоже, что эта Alt-mode key ни что иное, как (ESC)! https://en.m.wikipedia.org/wiki/Escape_characters
_________________ iLavr
|
12 Dec 2019 08:27 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
| | | | Lavr wrote: Ага! Кнопка [RUB-OUT]! Это мы уже проходили Это заодно и кнопка [DEL], если по-современному - код 7Fh. | | | | |
Тут опять некоторая путаница с этими клавишам и современностью... На более современных терминалах, типа VT-100, клавишу [RUB-OUT] заменили на более благозвучную, видимо, [DEL] или [DELETE]. Эта клавиша [DEL] или [DELETE], собственно, и выдаёт код 7Fh. А клавиша [DEL] на наших современных клавиатурах выдаёт совершенно иной код С современной клавиатуры послать код 7Fh можно комбинацией клавиш: [Ctrl]+[Backspace]. (CTRL+BACKSPACE inserts invisible 0x7F (DEL) character)Пишут также, что клавиша [F16] выдаёт код 7Fh, но я это проверить не могу. А сама по себе клавиша [Backspace] выдаёт код 08h, и он Tiny BASIC-у пофигу...
_________________ iLavr
|
12 Dec 2019 16:05 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Чтобы избавиться от всех этих древних несуразностей, исправил код Tiny BASIC: [Backspace] (код 08h) теперь, как и положено, стирает корректно последний символ. [Ctrl]+[Backspace] (код 7Fh) теперь, уничтожает всю строку в памяти. На экране терминала строка помечается квадратиком как стёртая, и курсор переходит на новую строку, где можно заново строку набрать.
_________________ iLavr
|
13 Dec 2019 17:11 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
В текстовом мануле - там больше общие сведения о Tiny BASIC-ах, под этот конкретный экземпляр соответствует не всё... В *.PDF мануле - много лишнего и длинный листинг самого Tiny BASIC, пользоваться неудобно. Вырезал из него только Хелп по самому языку в формате *.rtf. Хотел скомпилировать CHM-Хелп-файл, но призадумался... может 6 страниц перевести на русский... и оставил пока как есть...
_________________ iLavr
|
14 Dec 2019 06:21 |
|
|
|
Page 1 of 1
|
[ 9 posts ] |
|
Who is online |
Users browsing this forum: No registered users and 50 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
|
|