RUЭВМ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Январь 2021
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031

Календарь Календарь

Последние темы
» МКБ-8601: Технический проект процессора-эмулятора.
автор Viktor2312 Вчера в 23:32

» Микро-БЭСМ (МКБ-8601).
автор Viktor2312 Вчера в 23:04

» Серия: Массовая радио библиотека. МРБ
автор Viktor2312 Вчера в 21:54

» Разное
автор Viktor2312 Вчера в 12:57

» Полезные книги
автор barsik Пт Янв 22 2021, 21:52

» Модулярная арифметика.
автор Viktor2312 Ср Янв 20 2021, 19:38

» Флейм только по теме "Радио-86РК".
автор ведущий_специалист Вт Янв 19 2021, 17:14

» Разработка игр для радио86 РК
автор ведущий_специалист Пн Янв 18 2021, 17:45

» Тема, пока без названия.
автор Viktor2312 Пн Янв 18 2021, 12:58

» "Радио-86РК". Статьи, заметки, очерки, разное...
автор Viktor2312 Пн Янв 18 2021, 11:53

» ДР Vita Удачи!
автор Viktor2312 Вс Янв 17 2021, 13:25

» Изучаем язык программирования С. Вариант-3.
автор Viktor2312 Вс Янв 17 2021, 01:42

» Улучшение видео возможностей РК86
автор ведущий_специалист Сб Янв 16 2021, 21:28

» ЭВМ "М-10".
автор Viktor2312 Пт Янв 15 2021, 17:44

» Документация (IBM 360).
автор Viktor2312 Ср Янв 13 2021, 22:28

» ЦПУ 8085
автор barsik Ср Янв 13 2021, 21:01

» Микропроцессорная лаборатория "Микролаб К580ИК80", УМК-80, УМПК-80 и др.
автор san010101 Вт Янв 12 2021, 11:54

» Стандартная библиотека языка Си.
автор Viktor2312 Пн Янв 11 2021, 13:26

» Для начинающих.
автор barsik Пт Янв 08 2021, 00:40

» Настройки ПДП КР580ВГ75
автор ведущий_специалист Ср Янв 06 2021, 16:10

» Микропроцессор КР580ВМ80А (i8080)
автор barsik Вт Янв 05 2021, 23:05

» МИКРО - 80. Статьи, заметки, очерки, разное...
автор barsik Пн Янв 04 2021, 17:28

» Новости форума
автор Viktor2312 Ср Дек 30 2020, 17:21

» Другой микропроцессор в ИРИШЕ
автор barsik Вт Дек 29 2020, 15:02

» Компиляторы Си для программирования РК86
автор barsik Пн Дек 28 2020, 22:11

Самые активные пользователи за месяц
Viktor2312
Бейсик интерпретатор ИРИШИ Vote_l10Бейсик интерпретатор ИРИШИ Voting10Бейсик интерпретатор ИРИШИ Vote_r10 
barsik
Бейсик интерпретатор ИРИШИ Vote_l10Бейсик интерпретатор ИРИШИ Voting10Бейсик интерпретатор ИРИШИ Vote_r10 
ведущий_специалист
Бейсик интерпретатор ИРИШИ Vote_l10Бейсик интерпретатор ИРИШИ Voting10Бейсик интерпретатор ИРИШИ Vote_r10 
Atari1974
Бейсик интерпретатор ИРИШИ Vote_l10Бейсик интерпретатор ИРИШИ Voting10Бейсик интерпретатор ИРИШИ Vote_r10 
san010101
Бейсик интерпретатор ИРИШИ Vote_l10Бейсик интерпретатор ИРИШИ Voting10Бейсик интерпретатор ИРИШИ Vote_r10 
Artur
Бейсик интерпретатор ИРИШИ Vote_l10Бейсик интерпретатор ИРИШИ Voting10Бейсик интерпретатор ИРИШИ Vote_r10 

Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск


Бейсик интерпретатор ИРИШИ

Перейти вниз

Бейсик интерпретатор ИРИШИ Empty Бейсик интерпретатор ИРИШИ

Сообщение  barsik в Пт Ноя 06 2020, 12:12

1
Как известно из многих источников на бумажных носителях, для ИРИШИ существовал бейсик интерпретатор. Этот факт следует не только из сохранившихся документов на бумаге, но есть и свидетельства ещё живых очевидцев, которые сами своими глазами видели этот бейсик в работе на ИРИШЕ. Бейсик продавался кооперативом по ИРИШЕ при МГУ (он был в каталогах предлагаемых программ), он также якобы присутствует в списках файлов на каких-то утерянных дискетах, но главное доказательство его существования в том, что бейсик размером в 28 Кб упоминается в красной книге, что отметает последние сомнения в существовании этого бейсика.

Бейсик интерпретатор ИРИШИ Izstranicy82.1604647992

Несмотря на популярность и вероятно широкую распространённость среди пользователей ИРИШИ 80-тых годов этого бейсика, к сожалению, его до сих пор так и не удалось обнаружить ни на иришиных дискетах, ни на МГ-кассетах.

Спойлер:

Кстати, МГ-формат ИРИШИ оказался неустойчивым к течению времени. Двухфазный формат РК86 прекрасно грузится с кассет спустя более 30 лет с момента записи, а формат ИРИШИ почему сдох на нескольких качественных МГ-кассетах уже спустя 10 лет после записи. Это подтверждается тем, что этот же формат в 1988 заимствованый для монитора Специалиста от кооператива SP-580 - точно также неустойчив. Записи Специалиста в том же формате не читаются, хотя на тех же кассетах записи в стандартной специалистовской двухфазке читаются идеально.


Сейчас много владельцев ИРИШИ (под влиянием статей в ж.Радио 80-тых годов про полезность бейсика) захотевших освоить программирование на оригинальной технике эпохи, сильно огорчено отсутствием среди многочисленных программ ИРИШИ этого полезного инструмента для изучения программирования (и пригодного даже для разработки [пусть и не самых] динамичных игровых программ, что вполне возможно при наличии компилятора). Учитывая это обстоятельство, остро актуальной стала проблема откуда можно заиметь на ИРИШЕ хоть какой-то бейсик.

Нет сомнения, что бейсик ИРИШИ был получен добавлением в 24-х килобайтовый Microsoft MBASIC для CP/M графики работающей на граф.адаптер ИРИШИ. Кстати, точно также возник и бейсик Корвета и у других продвинутых отечественных 8-ми разрядок. Эту адаптацию фирменного бейсика MBASIC для ИРИШИ выполняли профессиональные программисты, а сейчас мало у кого из любителей ИРИШИ хватит квалификации повторить столь высококвалифицированную работу.

Но адаптировать сам си-пи-эмовский Microsoft MBASIC без добавки в него иришиной графики теоретически вполне возможно. В общем-то это делается за 3 минуты и доступно любому, кто уже сумел запомнить работу всех команд процессора КР580 и немножко знает про устройство CP/M. Но увы, не всё так просто с этим CP/M-бейсиком 24 Кб от Билла Гейтса.

MBASIC, адаптированный для работы без дисковода и CP/M, - прекрасно запускается. И в нём даже без проблем можно набирать и потом запускать бейсик программы. Но ни загрузить потом, ни выгрузить на МГ-ленту набранную программу не получится. Этот бейсик по старту выполняет инициализацию, т.е прогоняет директиву NEW, после которой буфер текста программы оказывается девственно чист. Т.о даже, если зная адрес этого буфера, перед запуском MBASIC-а вручную (т.е иришиным монитором-отладчиком) поместить туда бейсик программу, то ничего не выйдет. К тому же программа в буфере хранится в бейсиковых токенах, а вовсе не в виде ASCII-текста. Ну а, чтобы программу записать или считать с диска, ясно, что надо иметь на ИРИШЕ CP/M (хотя бы с приводом в виде эл.диска из ОЗУ).

Кстати, если в ИРИШУ добавлено доп.ОЗУ 64...256 Кб (по предложенной мной схеме обхода ограниченности поддержки иришиным диспетчером памяти доп.ОЗУ лишь до 64 Кб), то нет препятствий использовать CP/M, что я когда-то ранее уже странслировал для ИРИШИ с доп.ОЗУ. А вот для владельца базовой ИРИШИ имеющего лишь 64 Кб ОЗУ, с тем, чтобы поиметь CP/M необходимую для работы бейсика - большие проблемы.

Таким образом сам бейсик занимает 24 Кб, экран отнимает 16 Кб, CP/M отнимает 8 Кб, и как тут поделить оставшиеся жалкие 16 Кб между программой на бейсике, точнее ОЗУ оставленным под буфер бейсика и переменных и ОЗУ отданного под RAM-диск из ОЗУ. В принципе для маленьких программ я могу странслировать следующую конфигурацию CP/M с микро-TPA и микро RAM-диском специально предназначенной для юных владельцев ИРИШИ увлечённых бейсиком. Сама идея этого не моя, - так в ГДР-овскам радиолюбительском компьютере AC1 представляли пользователям этой машины CP/M (в качестве первого знакомства), т.е тоже из основного ОЗУ 64 Кб компьютера выделяли 10...24 Кб под эл.диск, что позволяло прогонять небольшие CP/M-программки нетребовательные к уровню TPA.

С целью выиграть 8 Кб ОЗУ в этой микро-CP/M будем использовать видео режим 1 (это монохром, 320*200) в котором экран занимает всего 8 Кб в вершине памяти (E000...FFFF). Выигрыш 8-ми Кб оплачивается тем, что формат текстового экрана будет 40*25. Эх, тут бы даже всего 32 Кб доп.ОЗУ, если не спасли бы, но точно сильно помогли бы отцу русской демократии. Из остающихся 24 Кб выделяем 12 Кб под VDISK, что оставляет 44 кб FREE-RAM под нужды CP/M.

44 Кб это солидный размер ОЗУ... если судить по меркам 1974 года (тогда CP/M 1.0 якобы могла работать на машине с всего 20 Кб ОЗУ). А VDISK при этом позволит сохранять файлы с суммарным размером в 11 Кб (т.к 1 Кб отожрёт каталог диска).

Т.о, если сам бейсик вместе с кодом CP/M отжирают 32 Кб от доступных 44 Кб FREE RAM, то на Microsoft бейсике можно будет писать программы в 11 Кб (от TPA остаётся 12 Кб, но программа тратит ещё ОЗУ на стек и переменные программы) и к тому же ёмкости VDISK-а достаточно лишь для файла в 11 Кб. 11 Кб для программы на бейсике это без преувеличения довольно большой размер. Т.к программа хранится в токенах и считая, что средняя (однооператорная) строка бейсика занимает 10...16 байт (где 2 байта отнимает адрес следующей строки), то оказывается, что на базовой ИРИШЕ можно написать программу в ~1000 операторов бейсика.

В таком варианте бейсика всего 40 символов в строке это печально, что мог бы исправить драйвер шрифта 6*8, который в экране 320*200 дал бы аж 53 символа в строке. Но такой драйвер в ОЗУ (который ещё надо написать) отожрёт, как минимум, 4 Кб от свободного ОЗУ, что сделает сам такой вариант CP/M бессмысленным. Хотя есть вариант выкинуть из иришиного ПЗУ никому ненужный графический язык, что освободит место в ПЗУ достаточное для драйвера шрифта 6*8. Такой шрифт в нетурбированной ИРИШЕ будет конечно дико тормозным, но символов в строке даст побольше.

Если бы имелся исходник MBASIC-а (или другого приличного бейсика), то можно было бы его доработать, переделав в нём директивы LOAD/SAVE под магнитофон. Или хотя-бы сделать так, чтобы при старте MBASIC спрашивал NEW? и при нажатии на клавишу <N> не выполнял очистку буфера. В принципе, исходник MBASIC ещё можно поискать в Интернете или кто-то достаточно умелый и желающий потрахаться десяток часов может сделать исходник с помощью дизассемблера.

Возможно, когда через некоторое врямя я вспомню об ИРИШЕ и займусь ей, то адаптирую для ИРИШИ бейсик 1A20 от РК86 (это первый бейсик для РК86, он без сервиса и др.фишек). Это позволит использовать программы на бейсике для РК86. Вообще в связи с отсутствием слишком большого изобилия программ для ИРИШИ, кому-нибудь стоило бы заняться конверсией хотя бы основных системных программ РК86 для ИРИШИ. В первую очередь владельцы ИРИШИ изголодались по бездисководному редактору-ассемблеру. Сам я в 90-тые использовал ИРИШУ с ОС RAMDOS работающей на эл.диск через ROM-BIOS Специалиста. Потому я использовал дисковый редактор-ассемблер для RAMDOS (т.к с магнитофоном работать несеръёзно). Сейчас для ИРИШИ не проблема и CP/M в любом соусе.

Потому актуально и не сложно поиметь даже для самой базовой ИРИШИ текстовый редактора-ассемблер, причём даже не с примитивным ассемблером Барчукова-Фадеева из 1987, а с макро-ассемблером от Микроши из 1989. Удачно, что в ИРИШЕ ОЗУ вдвое больше, чем в РК86 или Микроше и макроассемблер не слишком фатально сократит буфер текста. Бейсик интерпретатор плюс ассемблер - это уже инструмент вполне пригодный для написания на бездисководной ИРИШЕ динамичных игр.

А ещё у РК86 есть бездисководные компиляторы СИ, Паскаля и даже Фортрана. В отличие от РК86, на ИРИШЕ они будут более пригодными инструментами, т.к на РК в первую очередь им не хватало объёма ОЗУ (отчего на ЯВУ можно было писать лишь крошечные программы).

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


Последний раз редактировалось: barsik (Сб Ноя 07 2020, 13:44), всего редактировалось 5 раз(а) (Обоснование : убирал полкило опечаток)
barsik
barsik
Ветеран

Сообщения : 1035
Дата регистрации : 2016-11-10
Откуда : С-Петербург

Вернуться к началу Перейти вниз

Бейсик интерпретатор ИРИШИ Empty .

Сообщение  Viktor2312 в Пт Ноя 06 2020, 12:40

2
Просто выложу тут, так для сохранности.

Скачать


Бейсик интерпретатор ИРИШИ Dsc05210

_________________
"ЛП & ТИ"
Viktor2312
Viktor2312
Гуру+

Сообщения : 13098
Дата регистрации : 2012-08-10
Возраст : 42
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Бейсик интерпретатор ИРИШИ Empty .

Сообщение  barsik в Пт Ноя 06 2020, 21:25

3
Большое спасибо... Казалось бы я должен благодарить Вас, Виктор, за выкладу мерзкого скана описания IBASIC-а для ИРИШИ, но нет. Благодарности не ощущается.

Во-первых, в этой теме это неуместно - сама программа давно безвозвратно погибла и не существует в этом мире, зачем же здесь нужно это вырвиглазное описание? Тем более, что за исключением 25-ти строк (где описаны добавленные графические операторы), оно является копией документации к MBASIC. Когда и если будет найден IBASIC, то это понадобится, но здесь и сейчас это ни к чему. Этому скану место в другом месте, там же где хранятся такие же слепые доки по КНГМД для ИРИШИ. Во-вторых, это помешало мне исправлять грамм.ошибки, которых я делаю очень много, а также теперь я не могу продолжить свой пост.

Т.к на этом форуме никто кроме меня не интересуется ПО ИРИШИ и обсуждать его не с кем, то мои технические посты преращаются в блог и последовательно дополняются после "Добавлено". Этому мешает, когда кто-то влезает, особенно с нетехническими комментами (обычно перерастающими в бесмысленный и никому не интересный флейм), с незаспойлеренными картинками и т.п. Доброжелательные и уместные технические уточнения или помощь наоборот приветствуются.

имеются две кассеты.
1-я кассета от авторов, на ней (если конечно удастся каким-то образом прочитать):
- Текстовый редактор IRITEXT
- FORTH INTERV (разработка авторов Ириши)
- игра STAKAN
- IBASIC
- RTV
- SMON
2-я кассета от знакомого (очевидно у него тоже была Ириша), на ней:
- Ассемблер "Ириша" (знакомый сам его написал с его слов).
Судя по этой цитате с ZX-PK.ru, IBASIC был на кассете, что означает наличие бездисководной версии бейсика. Также IBASIC был перечислен в списке дискетных программ для CP/M, что означает наличие дискетной CP/M-версии IBASIC.

Т.о вероятнее всего существовали две версии (менее вероятна одна универсальная). Кстати, из цитаты видно, что владельцы ИРИШ вынуждены были сами писать ассемблер, что ещё раз доказывает очевидное, - что было глупо привести в дампах красной книги бесполезный (без принтера) огромный текстов редактор, а не простой редактор с ассемблером (что сделали для РК86), что практически лишило пользователей возможности писать программы (за исключением тех, кому хватило квалификации написать свой ассемблер или адаптировать чужеродный).

Также в списке программ для CP/M встречается ещё один бейсик в виде следующей строки:

Бэйсик FS-III. Бэйсик = MBas + GRAFIC.
Из которой следует, FS-III бейсик получен добавкой к MBASIC-у графических операторов. Но ведь и IBASIC получен точно так же. Возможно у этих бейсиков разные авторы конверсии и графика разная.

В Бейсике 1A20 уже переделал ввод/вывод на работу через ПЗУ ИРИШИ. Уже запускается, но есть глюки и надо дорабатывать, а также удалять привязанные к эркашному железу операторы (типа PLOT, CLOAD, CSAVE и т.п). Пока очень неудобно загружать и выгружать бейсик программу вручную. Если сумею достаточно сильно напрячь мозг, то возможно удастся хотя бы кое-как сделать CLOAD и CSAVE. Т.к ИРИША не может загружать (и выгружать) блоки с магнитофона ниже 4000 (т.к при Tape IN/OUT ниже 4000 стоит ПЗУ), то это возможно сделать так.

В стартовом варианте по CLOAD программа ранее загруженная на 4000 монитором будет перегружаться в буфер бейсика, а по CSAVE программа бейсика из буфера будет пересылаться на адрес 4000. Естественно загрузку и сохранение на кассете блока с программой на бейсике придётся делать отдельной директивой монитора-отладчика вручную.

Позднее можно попробовать сделать и более совершенный вариант, когда по CLOAD будет вызываться подпрограмма загрузки блока на 4000. После загрузки считанный блок будет пересылаться в буфер бейсика (на 2000). А при вызове CSAVE бейсик программа будет пересылаться на 4000, затем блок с адреса 4000 выводится на ленту, после чего программа с адреса 4000 пересылается назад в буфер бейсика.

А совсем идеально было бы сделать загрузку/выгрузку не в токенах, а в ASCII-формате. Это позволит небирать тексты программ без бейсика, т.е в нормальном редакторе (не важно на самой ИРИШЕ или на IBM PC), а не в неудобном и построчном, что встроен в бейсик.
barsik
barsik
Ветеран

Сообщения : 1035
Дата регистрации : 2016-11-10
Откуда : С-Петербург

Вернуться к началу Перейти вниз

Бейсик интерпретатор ИРИШИ Empty .

Сообщение  Viktor2312 в Пт Ноя 06 2020, 22:20

4
Пост ваш хороший, есть над чем подумать, поэтому +.

Много текста, очень много текста, вам не угодишь, ладно, остальное видать, ...
Буду думать над. МВК ИРИША-М2, это интереснее, напишите хоть что нибудь, а там будет видно...

Хотя... Зачем писать что-то для Ириши, она итак самодостаточна. Остальное напишут реальные фанаты.

_________________
"ЛП & ТИ"
Viktor2312
Viktor2312
Гуру+

Сообщения : 13098
Дата регистрации : 2012-08-10
Возраст : 42
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Бейсик интерпретатор ИРИШИ Empty Tiny Basic

Сообщение  barsik в Вт Ноя 10 2020, 18:57

5
Начинать освоение бейсика лучше  всего с тини-бейсика, т.к полноценный бейсик слишком сложен для неокрепшего ума не знакомого ранее с какими-либо ЯВУ. Я начинал изучение бейсика вот с этого тини-бейсика из немецкого журнала за 1984 год. Естественно сначала я мало, что понял. А 10 лет спустя сам написал свой Tiny Basic. Но, естественно так компактно у меня не вышло. Мой бейсик имел размер в 5 Кб, а этот бейсик имеет размер всего 2 Кб.

А были тини-бейсики для КР580 с размером всего в 1800 байт, а бейсик для гораздо более прогрессивного процессора 6800 имеет потрясающий размер всего в 680 байт !!! Это конечно благодаря двухбайтовым командам переходов и более прогрессивной системе команд процессора 6800.

Тини-бейсик, описание которого ниже, исходно для Z80, но я на Гитхабе видел исходник этого бейсика (не скачал пока, т.к ненавижу гитхаб, там приходится считывать по одному файлу, теряя кучу времени). Так что чуть позже конвертирую этот бейсик под КР580 (т.к этот бейсик приятнее, чем тини-бейсик 8080 от Ли-Чен-Ванга, тем более, что для него нет описания). Естественно, переводить описание на русский язык смысла нет, т.к на данном языке и без того приятно читать.

Спойлер:

Erläuterung zum Mini-BASIC-Interpreter

Kommandos:

LIST
Auflisten des im Speicher stehenden BASIC-Programms auf dem Bildschirm, beispielsweise zu Kontrollzwecken.
> LIST cr    gesamtes BASIC-Programm
> LIST 110 BASIC-Programm ab Zeile 110
Durch das Drücken einer beliebigen Taste kann das Listen bis zum Loslassen dieser ausgeführt werden, CONTROL C bricht das Listen ab.

RUN
Startet ein BASIC-Programm, wobei die Abarbeitung bei der niedrigsten Zeilennummer beginnt. Ist die letzte Zeile abgearbeitet oder der STOP-Befehl erreicht, kehrt der Interpreter in die Eingabeschleife zurück. Wird während der Programmabarbeitung CONTROL-C eingegeben, führt das zum Programmabbruch und zur Rückkehr in die Eingabeschleife.

NEW
Ein im Speicher vorhandenes BASIC-Programm wird vollständig gelöscht.

BYE
Beendet die Arbeit mit dem BASIC-Interpreter und kehrt zum Monitorprogramm zurück. Das zuletzt eingegebene BASIC-Programm befindet sich weiterhin im Speicher. Wenn an dessen Inhalt nichts geändert wird, kann mit J 803 wieder zum BASIC-Interpreter zurückgesprungen werden (Warmstart). Es erscheint dann nur READY ohne Überschrift auf dem Bildschirm. Die Arbeit mit dem BASIC-Interpreter kann nun fortgesetzt werden.

END
Dieser Befehl wird nicht, wie in BASIC sonst üblich, zur Kennzeichnung des Programmendes genutzt, sondern zum Vergrößem des Programmspeichers. Mit END kann das Programmspeicherende neu gesetzt werden. Lassen die aktuellen Möglichkeiten des Amateurcomputers diesen Speicherbedarf nicht zu, weil er real nicht existiert, wird die Fehlermeldung "SORRY" ausgegeben. Beispiel:
> END HEX(1FFF)

Programmierbare Befehle (Anweisungen):

LET
Definiert den Anfang einer Ergibtanweisung, muß aber nicht mit vorangestellt werden. Es dient eigentlich nur der besseren Verständlichkeit.
> 100 LET A=1
> 110 A=50;B=30
> 120 A=B=C+3
> 130 X=3*A+(B-3)/C
> 140 LET@(3)=24

IF
Mit Hilfe von IF lassen sich Bedingungen für das Ausführen von Anweisungen formulieren, also auch Verzweigungen aufbauen.
>100 B=B-1;IF B=0 GOTO 150
>105 IF C=0 PRINT"FERTIG"

GOTO
Unbedingter Sprung zu der Zeile, die entweder direkt angegeben ist, oder sich aus dem angegebenen Ausdruck berechnet. GOTO als Direktbefehl startet das Programm ab der angegebenen Zeilennummer. In Verbindung mit IF wird GOTO zur Konstruktion bedingter Sprünge benutzt.
> 100 GOTO 180
> 104 GOTO 180 + X
> 108 GOTO A
> 110 IF A>0 GOTO 50

GOSUB ... RETURN
Aufruf eines in BASIC geschriebenen Unterprogramms, das mit RETURN beendet werden muß. Nach RETURN wird mit dem dem Unter-Programmaufruf folgenden Befehl im BASIC-Programm fortgesetzt. Unterprogramme sind vor allem da sinnvoll, wo gleiche Teilprogramme an verschiedenen Stellen benötigt werden, da dann Speicherplatz gespart werden kann.
> 100 C=20;GOSUB 200;PRINT"ZEIT",
> 105 C=50;GOSUB 200;PRINT"SCHLEIFE"
:
> 200 REM ZEITSCHLEIFE
> 210 C=C-1;IF C#0 GOTO 210
> 220 RETURN

REM
Damit ist es möglich, in ein BASIC-Programm Kommentare zur besseren Dokumentation zu setzen. Diese Kommentare werden bei der Abarbeitung durch den Interpreter überlesen, sie belegen aber entsprechend ihrer Länge Speicherplatz.
> 100 REM LET A=1234
(Diese Zeile wird nicht verarbeitet!)
> 110 REM + + + TEILPROGRAMM 1 + + +

INPUT
Ermöglicht die Eingabe von numerischen Werten, die einer Variablen zugeordnet werden. Alle eingegebenen Zeichen werden auf dem Schirm als Echo ausgegeben, mit der Backspace-Taste kann korrigiert werden. Die Eingabe ist mit cr abzuschließen. Nach der INPUT-Anweisung kann in Hochkomma oder mit Anführungszeichen geschriebener Text folgen, der dann bei der Ausführung der INPUT-Anweisung auf dem Schirm mit ausgegeben wird. Es können mehrere Eingaben mit einer INPUT-Anweisung erledigt werden. Bei der eigentlichen Eingabe kann anstatt einer Zahl auch ein Ausdruck angegeben werden.
> 100 INPUT A
> 105 INPUT"BEISPIEL"B,C
> 110 INPUT"WERT",D
> RUN

A:
BEISPIEL:
C:
WERT D:

PRINT
Ermöglicht die Ausgabe von numerischen Werten und von Texten auf dem Bildschirm. Texte sind dabei in Hochkomma oder Anführungszeichen zu setzen. Innerhalb einer Anweisung können mehrere Ausdrücke stehen, die dann durch Komma voneinander zu trennen sind. Wenn nicht anders angewiesen, werden Zahlen sechsstellig mit unterdrückten Vornullen rechtsbündig ausgegeben. Wird in die PRINT-Anweisung ein Doppelkreuz, gefolgt von einer Zahl, gebracht, so läßt sich damit diese Formatierung ändern. Die Änderung bleibt bis zur nächsten PRINT-Anweisung bestehen. Ist die PRINT-Anweisung mit einem Komma beendet, wird crlf (Wagenrücklauf/Zeilenvorschub) unterdrückt, d.h., die nächste Ausgabe setzt in der gleichen Zeile fort.
> 100 A=2;B=10;C=123
> 110 PRINT"ZAHL A=",A
> 120 PRINT"ZAHL A=",#1,A
> 130 PRINT A,B,
> 140 PRINT C
>RUN
ZAHL A=   2
ZAHL A=2
    2    10   123

STOP
Beendet die Abarbeitung des BASIC-Programms und kehrt in die Eingabeschleife des Interpreters zurück.
> 100 A=1
> 110 STOP
> 120 A=2
> RUN
READY
> PRINT A
    1

CALL
Damit ist es möglich, in Maschinenkode geschriebene Unterprogramme in BASIC aufzurufen. Die Adresse des anzuspringenden Unterprogramms ergibt sich aus dem Ausdruck, der dem CALL folgt. Soll der Interpreter danach mit der nächsten BASIC-Anweisung fortsetzen, so muß das Unterprogramm mit einem RETURN-Befehl (z.B. 0C9H) enden. Während der Abarbeitung des Unterprogramms ist kein Abbruch des Interpreters mit CONTROL-C möglich.

> 100 CALL HEX(4000)
.
.
.
4000H LD A,(4020H)
INC A
LD (4020H),A
RET

Durch die CALL-Anweisung in Zeile 100 wird der Inhalt der Speicherzelle 4020H um Eins erhöht. Auf diese Zelle könnte dann z.B. mit PEEK zurückgegriffen werden.

OUTCHAR Das dem nachfolgendem Ausdruck entsprechende ASCII-Zeichen wird auf dem Schirm ausgegeben.
> 100 OUTCHAR 65
> 110 B=66
> 120 OUTCHAR B
> 130 C='C'
> 140 OUTCHAR C
> 150 PRINT C
> RUN
ABC
67

INCHAR
Ermöglicht die Eingabe eines einzelnen Zeichens, ohne Echo und ohne cr. Der Wert des eingegebenen ASCII-Zeichens wird der angegebenen Variablen zugewiesen.
> 100 Z=INCHAR

POKE
Mit POKE läßt sich eine Speicherzelle beschreiben. Der erste Ausdruck bestimmt die Adresse, der zweite den Wert. Der Datenwert wird modulo 256 berechnet und auf die entsprechende Adresse geschrieben.
> 100 POKE 7167,10
Der dezimale Wert 10 wird unter der Adresse 7167 (=1BFFH) gespeichert.

TAB
TAB dient der Ausgabe von Leerzeichen, deren Anzahl sich aus dem nachfolgenden Ausdruck ergibt.
> 100 PRINT"TEST"
> 110 TAB(10)
> 120 PRINT"TAB"
>RUN
TEST          TAB

BYTE
BYTE gibt den Wert des nachfolgenden Ausdrucks als Hexadezimalzahl auf dem Schirm aus. Dabei werden nur dezimale Werte bis 255 in Form zweier hexadezimaler Stellen ausgegeben.
> BYTE(17)
11

WORD
WORD funktioniert analog BYTE, nur werden hier vier Stellen ausgegeben.
> 100 N=2000
> 110 WORD(N)
> RUN
07D0

OUT
Gibt den angegebenen Wert an die zugewiesene E/A-Adresse des U-880-Systems aus.
> 10 OUT(HEX(0F)=5
Das Bitmuster für 5 wird an die Systemadresse 0FH ausgegeben.


RND
RND erzeugt eine Zufallszahl, die zwischen 1 und dem Wert des nachfolgenden Ausdrucks liegt.
> 100 A=RND(10)
Weist der Variablen eine Zahl zwischen 1 und 10 zu.
> PRINT RND(1000)
  723

ABS
Der absolute Betrag des nachfolgenden Ausdrucks wird gebildet.
> 100 A=ABS(-245)

SIZE
Mit diesem Befehl wird der aktuelle, für ein BASIC-Programm noch freie Speicherplatz bestimmt und SIZE zugewiesen, so daß diese Information weiterverwendet werden kann.
> 100 PRINT SIZE,"BYTES FREE"
> RUN
  590 BYTES FREE

PEEK
Hiermit ist der direkte Speicherzugriff möglich. PEEK erhält als Parameter eine Adresse, von welcher ein Byte gelesen und als Wert übergeben wird.
> 100 A=PEEK(7167)

HEX
HEX ermöglicht eine Hexadezimal/Dezimal-Konvertierung.
> 100 A=HEX(4AF2)
> 110 PRINT A
> RUN
  19186

' ' (QUOTE)
Der durch ' ' dargestellte Befehl QUOTE gestattet die Zuweisung der Dezimalzahl, der das jeweilige angegebene ASCII-Zeichen entspricht.
>100 X='A'
>110 PRINT X
> RUN
  65

TOP
Beim Aufruf wird der gerade aktuelle erste freie Speicherplatz hinter dem eingegebenen BASIC-Programm berechnet.
> PRINT TOP
  6481

IN
Damit können Variablenwerte von einer E/A-Adresse des U-880-Systems zugewiesen werden.
> 10 A=IN(HEX(0F))
Der Variablen A wird der Wert, der dem Bitmuster, das an der Systemadresse 0FH anliegt, zugewiesen.

Beispiele

Abspeichern eines BASIC-Programms:

>WORD(TOP)
1AF9
>BYE
#S 18C0 1AF9 803 TEST.B

Beim Abspeichern von BASIC-Programmen haben das erste und das dritte Argument immer die hier angegebenen Werte. Nur das zweite Argument muß mit Hilfe von TOP immer neu bestimmt werden, entsprechend der jeweiligen Programmlänge. Ein so abgespeichertes Programm wird dann einfach mit L cr geladen, und mit J: angesprungen.

Bildschirmlöschen:

100 OUTCHAR 12

Parabel zeichnen:

100 N=-6
110 PRINT N, "I",
120 TAB (N*N)
130 PRINT "*"
140 N=N+1; IF N<7 GOTO 110
(150 STOP)

Ersatz der Anweisung FOR..TO..STEP:

100 REM FOR I=xx TO yy STEP zz
110 I=xx; REM Anfangswert xx
120 REM Anweisungen der Schleife
130 I=I + zz; IF I < xx + 1 GOTO 120

Symbolumwandlung:

10 PRINT "SYMBOL:",
20 Z=INCHAR
30 OUTCHAR(Z)
40 PRINT" DEZIMAL:", #2,Z," HEXADEZIMAL:",
50 BYTE(Z)
60 PRINT
70 GOTO 10

Zeichengenerator-Testprogramm:

10 REM ZEICHENGENERATORTEST
20 OUTCHAR 12
30 PRINT
40 TAB(20)
50 PRINT"TESTPROGRAMM"
60 PRINT
70 A=' '; REM LEERZEICHEN
80 OUTCHAR A; A=A+1
90 IF A#HEX(60) GOTO 80
100 GOTO 70; REM Zeile fertig

Hexdump mit ASCII-Interpretation:

200 INPUT "ANFANGSADRESSE" A, "ENDADRESSE" E
210 I=A
220 WORD(I); PRINT" ",
230 J=0
240 BYTE(PEEK(I+J)); PRINT" ",
250 J=J+l; IF J < 8 GOTO 240
260 PRINT"*",; K=0
270 S=PEEK(I+K)
280 IF S<32 GOTO 300
290 IF S<127 GOTO 310
300 S='.'
310 OUTCHAR (S); K=K+l; IF K < 8 GOTO 270
320 PRINT"*"
330 I=I+8; IF I < E+l GOTO 220
340 PRINT; GOTO 200


Руководство по пользованию данной версией тини-бейсика (из журнальной статьи о нём).

Спойлер:

Der Mini-BASIC-Interpreter

Viele Problemstellungen lassen sich außer mit in Assembler- bzw. Maschinensprache geschriebenen Programmen auch mit solchen Programmen lösen, die in einer höheren Programmiersprache geschrieben sind. Solche Programme sind allgemein einfacher und schneller zu erstellen und für Einsteiger übersichtlicher, da komplexe Zusammenhänge mit nur einem Befehl beschrieben werden können. Man muß sozusagen nicht jedes Bit bzw. Byte zusammenstellen. Bei Computern für Heim- und Hobbyanwendungen bedient man sich dabei meist der Programmiersprache BASIC (Beginners Allpurpose Symbolic Instruction Code). Solche BASIC-Interpreter benötigen je nach dem realisierten Sprachumfang etwa 8 bis 12 KByte (teilweise auch noch mehr) Speicherplatz für das Interpreterprogramm. Dann natürlich noch entsprechenden Speicherplatz zum Ablegen der Anwenderprogramme.

Das übersteigt natürlich die Möglichkeiten des Grundmodells des Amateurcomputers „AC1“ und bleibt einer späteren Speichererweiterung vorbehalten. Um aber erste Erfahrungen im Umgang mit dieser Programmiersprache zu sammeln, bot sich der Einsatz des in [11] veröffentlichten Tiny-Basic-Interpreters an, dessen Befehlsumfang eine Untermenge der Sprache BASIC darstellt. Dabei fehlen die Gleitkomma-Arithmetik und die Zeichenkettenverarbeitung. Durch eine Optimierung dieses Interpreters sowie das Weglassen der Schleifen- und der stark vereinfachten Zeichenkettenverarbeitung, die durch andere Befehle substituierbar sind, konnte der Speicherbedarf für den Mini-BASIC-Interpreter von 2,75 KByte auf knapp 2 KByte reduziert werden. Dieses Programm, aufgrund des verringerten Sprachumfangs und Speicherbedarfs als Mini-BASIC bezeichnet, findet in dem restlichen 2 KByte-EPROM-Speicher des Grundmodells des „AC1“ Platz.

Dieser Mini-BASIC-Interpreter ist besonders für das Sammeln erster Erfahrungen und Fertigkeiten in BASIC gedacht und ermöglicht das Lösen einfacher Anwendungsbeispiele. Im Vergleich zum Programmieren in Maschinensprache sind z.B. Fehler leichter zu finden und ziehen auch kaum ernsthafte Folgen nach sich. Natürlich haben diese und andere Vorteile auch den Nachteil, daß solche Programme mehr Speicherplatz und längere Verarbeitungszeiten gegenüber gleichen Problemlösungen in Maschinensprache erfordern. Im Extremfall kann das dazu führen, daß besonders zeitkritische Probleme nur in Maschinensprache lösbar sein werden. Im Rahmen dieses Beitrags ist es nicht möglich, einen Grundkurs in BASIC zu realisieren. Es sollen aber einige grundlegende Bemerkungen zur Arbeitsweise und Bedienung dieses Interpreters und zu den einzelnen Befehlen sowie auftretenden Fehlermeldungen gemacht und einige Programmbeispiele gezeigt werden. Damit dürfte es leicht möglich sein, sich innerhalb kurzer Zeit mit der Anwendung des Mini-BASIC-Interpreters vertraut zu machen.

Der Ansprung des Mini-BASIC erfolgt mit dem Kennbuchstaben Z oder dem Monitorkommando J 800. Darauf erscheint auf dem vorher gelöschten Bildschirm die Überschrift „MINI-BASIC AC 1 V2.1“, zwei Zeilen weiter „READY“, und am Anfang der nächsten Zeile das Zeichen „größer“ als Promptsymbol.

Der Interpreter erwartet nun die zeilenweise Eingabe von Befehlen bzw. Programmzeilen, wobei in der Grundausrüstung des Speichers die Eingabezeile nicht länger als 70 Zeichen sein darf. Die Zeile ist wie üblich mit Wagenrücklauf abzuschließen. Enthält die eingegebene Zeile am Anfang eine Zeilennummer (1 bis 32767), wird diese Zeile als Programmzeile interpretiert und abgespeichert. Bei der Zeilennumerierung geht man zweckmäßigerweise meist in Zehnerschritten vor, so daß dann noch genügend Zeilen für eventuelle Korrekturen oder Erweiterungen frei sind. Alle anderen Eingaben werden als Befehle zur direkten Ausführung angesehen. Sind sie zulässig, werden sie ausgeführt, sonst erfolgt eine Fehlermeldung. Danach erwartet der Interpreter die nächste Eingabe. Innerhalb einer einzugebenden Zeile kann beliebig oft mit der Backspace-Taste (Rückschritt) korrigiert werden. Soll eine bereits im Programmspeicher abgelegte Zeile verändert werden, so ist sie neu einzugeben. Soll sie gelöscht werden, so ist nur die Zeilennummer einzugeben.

Alle Befehle bzw. Schlüsselworte kann man mit einem Punkt nach dem ersten oder weiteren Buchstaben abkürzen. Bei mehreren Schlüsselworten mit gleichem Anfangsbuchstaben wird das genommen, das zuerst in Tabelle 7 aufgeführt ist. Die anderen sind dann soweit abzukürzen, daß keine Verwechselung mehr möglich ist. Auch die Leerzeichen zwischen den einzelnen Elementen einer Programmzeile können weggelassen werden. Diese beiden Möglichkeiten gestatten es, den Programmspeicher optimal auszunutzen, sie gehen aber auf Kosten der Übersichtlichkeit. Es dürfen auch mehrere Anweisungen in einer Programmzeile untergebracht werden, diese sind dann durch ein Semikolon voneinander zu trennen.

Der Mini-BASIC-Interpreter realisiert eine einfache Ganzzahl-Arithmetik in den vier Grundrechenarten Addition, Subtraktion, Multiplikation und Division (+ - * /) im Zahlenbereich -32768 bis +32767. Den meisten Schlüsselworten folgt ein weiterer Ausdruck. Solche Ausdrücke sind Zahlen, Variable oder arithmetische Konstruktionen mit diesen, die mittels Klammem aufgestellt werden können. Die Klammern können dabei beliebig geschachtelt werden. Innerhalb eines Befehls kann ein weiterer Ausdruck bzw. Argument verwendet werden.

Als Variable sind alle Buchstaben von A bis Z erlaubt. Mit dem Symbol @ bzw. ÿ ist die Nutzung eines eindimensionalen Feldes möglich, wobei @ (I) den I-ten Wert des Feldes darstellt. I steht hierbei für einen Ausdruck, wie oben erläutert. Der Mini-BASIC-Interpreter kennt drei Fehlermeldungen:

WHAT? - Das Schlüsselwort bzw. der Ausdruck sind nicht erlaubt bzw. fehlerhaft, d.h., der Interpreter versteht die Anweisung nicht.

HOW? - Die Ausführung der Anweisung ist im Rahmen der Möglichkeiten dieses Interpreters nicht möglich (z.B. Zahlenbereichsüberschreitung).

SORRY - Die Ausführung der Anweisung ist zwar möglich, aber nicht unter den gerade aktuellen Voraussetzungen (z.B. Programmspeicher erschöpft).

Tritt eine Fehlermeldung bei der Abarbeitung eines Programms auf, so wird nach der Fehlermeldung auch die Zeile ausgegeben, in der der Fehler auftrat, wobei an der entsprechenden Stelle vom Interpreter ein Fragezeichen gesetzt wird. Im Interpreter selbst befinden sich keine Befehle zum Abspeichern bzw. Einlesen von Programmen über das Kassetteninterface. Das läßt sich jedoch mit Hilfe eines Monitorprogramms ausführen, wie es im Beispiel noch gezeigt wird.

In Tabelle 7 (s. FA, Heft 1/1985) sind alle realisierten Befehle dargestellt, die im Text noch näher erläutert werden.

Zur Komplettierung der Unterlagen ist in den Tabellen 8, 9, 10 und 11 die hexadezimale Liste der derzeitigen Versionen des Monitorprogramms und des Mini-BASIC-Interpreters angegeben.


Уже адаптировал для ИРИШИ бейсик 1A20, но собираюсь в нём сделать и работу с магнитофоном. Без этого им пользоваться в эмуляторе крайне неудобно. Вроде бы бейсик программы РК86 не включают режим в 30 строк (на ИРИШЕ это сделать возможно, но выйдет плохо, т.к экран в ИРИШЕ высотой всего 200 пикселей, отчего уже при 25 строках, строки слипаются на экране).

При существенном напряжении мозга даже может быть удастся сделать псевдографику РК86 по PLOT (удачно, что PLOT рассчитан на 25-ти строчный экран). Но это вызовет разбухание объёма кода и заметно тормознёт прогон (придётся иметь РК-экран, т.к PLOT нагло считывает экранные байты).

В принципе, сейчас из Интернета можно скачать чуть ли не два десятка бейсиков интерпретаторов от разных машин (правда большая часть их них на Z80). Кстати, похоже, что у большинства бейсиков для КР580 уши растут от бейсика Билла Гейтса для Альтаира-8800 (не от 4-х килобайтовой целочисленной, а от 8-ми килобайтовой версии, где есть плавающая точка). Но для начала хватит тини-бейсика, РК-шного бейсика 1A20 и бейсика Microsoft.

Т.е для ИРИШИ хочу ещё заставить Microsoft бейсик работать на базовой ИРИШЕ (как описано выше), а возможно и удастся сделать его кассетную версию (не требующую наличия DOS). Проблема как научить Microsoft бейсик грузить и загружать бейсик программу в текстовом формате. С CP/M это не проблема, а без CP/M требуется дизассемблирование и существенная модификация полученного исходника.


Последний раз редактировалось: barsik (Вт Ноя 10 2020, 23:19), всего редактировалось 1 раз(а)

_________________
Носи маску, ковид смертелен!
barsik
barsik
Ветеран

Сообщения : 1035
Дата регистрации : 2016-11-10
Откуда : С-Петербург

Вернуться к началу Перейти вниз

Бейсик интерпретатор ИРИШИ Empty .

Сообщение  Viktor2312 в Вт Ноя 10 2020, 21:31

6
Бейсик интерпретатор ИРИШИ A_a10

_________________
"ЛП & ТИ"
Viktor2312
Viktor2312
Гуру+

Сообщения : 13098
Дата регистрации : 2012-08-10
Возраст : 42
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Бейсик интерпретатор ИРИШИ Empty .

Сообщение  barsik в Ср Ноя 11 2020, 00:45

7
Общепризнанно, что бейсик пригоден лишь для программ малой сложности, а в учебных целях - даже вредный язык (т.к после него плохо получается учить настоящие ЯВУ). А бейсик интерпретатор, как и все бейсики, не только неструктурированный, немодульный и некапсупсулирующий (отчего даёт изобилующий GO-тами запутанный код похожий на спагетти), может работать с данными не объёмнее, чем 64 кб, но к тому же ещё и тормозит в 10...20 раз относительно ассемблера.

Хотя есть мнение, что у того человека, кому никто не сказал (и потому он и не знает), что на бейсике нельзя написать динамичную игру, это может как раз получиться. Причём и по трудоёмкости окажется легче, чем на ассемблере.

Т.е не для всех людей возможности бейсика ограничены выводом на экран матерных слов. Я не фанат бейсика интерпретатора, но вроде бы даже интерпретатор что-то может в плане динамичных игр. В каталогах программ 8-ми разрядок я уже несколько раз встречал не только Отелло, текстовые квесты и психологические тесты для женщин, но и пэкмана на бейсике.

На заре цивилизации, когда бытовые компьютеры имели только текстовый экран, любители умудрялись писать на бейсике и динамичные игры. Для игр, в которых по экрану бегают лишь несколько буковок, даже у далеко не самой быстрой 8-ми разрядки РК86 остаётся запас по скорости в ~5 раз. Это следует из того, что эр-кашные XONIX и PACMAN после коррекции констант торможения почти нормально прогоняются в эмуляторе при клоке всего 200 КГЦ. На эксплуатации этого запаса и основана возможность сделать динамичную игру на бейсике интерпретаторе.

Похоже, что даже на бейсике на 8-ми разрядке с тактом 1.5...2.5 МГЦ для текстового экрана можно сделать динамичную игру (пусть и на пределе скоростного запаса). Это делали даже на чистом бейсике интерпретаторе. А ведь можно выиграть ресурс скорости переписав самые критичные процедуры на ассемблер - из операторов DATA коды подпрограмм грузим в неиспользуемое ОЗУ (или в области резервированные под переменные-массивы) и вызываем их по CALL/USR.

А ещё есть и компилятор бейсика, что даёт код всего на 25...40% худший, чем код из под Си или Паскаля. Но это у BASCOM, а может быть CBASIC или CB-80 более эффективны. Уж, если на Си умудряются делать игры для ZX-Spectrum (в котором графический экран дико тормозит), то логично надеяться, что для чисто текстовой машины может хватить даже бейсика компилятора.

Тормознутость интерпретатора не приговор, т.к у бейсика интерпретара задача иная, - он лишь позволяет отладить программу, которую по завершении разработки компилируют. Потому имеют смысл только парные бейсики интерпретаторы, т.е такие, что имеют контрпару - компилятор. А компиляторов тини-бейсика или эр-кашного бейсика 1A20 и даже утерянного бейсика 28К от ИРИШИ не существует. Потому плакать по утерянному иришиному бейсику от её разработчиков - нет смысла.

Но ИРИШЕ лишённой быстрого текстового экрана с её низким быстродействием при непомерно (для этого быстродействия) большом экране - динамические игры на бейсике интерпретаторе явно не грозят. Для неё и ассемблера маловато. Только, если в маленьком монохромном экране режима 1 с размером всего в 8000 байт, в котором у ИРИШИ к тому же приличная скорость ~1.5 МГЦ.

_________________
Носи маску, ковид смертелен!
barsik
barsik
Ветеран

Сообщения : 1035
Дата регистрации : 2016-11-10
Откуда : С-Петербург

Вернуться к началу Перейти вниз

Бейсик интерпретатор ИРИШИ Empty Re: Бейсик интерпретатор ИРИШИ

Сообщение  Спонсируемый контент

8

Спонсируемый контент


Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения