Пишем компилирующий интерпретатор SHABASIC для 8080/8085

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

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

Re: Пишем nedoBasic для 8080/8085

Post by Lavr »

Я её процитировал, а Do It! - относится к "Пишем nedoBasic для 8080/8085" - пора писать! :wink:
Все нюансы обсудили! :lol:


P.S. А этот хит - он есть на многих языках...
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Пишем nedoBasic для 8080/8085

Post by Shaos »

Да вроде ничего ещё не обсудили ;)
Проще конечно как в Вильнус-бейсике - каждая команда на своей строке
Хотя лепить команды без ветвлений в одну строку наверное несложно
И как в ранних Бейсиках IF...THEN только с номером
FOR...TO...STEP и NEXT var немножко сложно
Ограничиться переменными A...Z - пока целочисленными, а потом плавающую точку приделать
При появлении плавающей точки целочисленность можно в A%...Z% увести
Строки - надо смотреть...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Пишем nedoBasic для 8080/8085

Post by Lavr »

Shaos wrote:Проще конечно как в Вильнус-бейсике ...
А ты не обратил внимания, что там внизу есть исходники Вильнус-бейсика?

https://github.com/sergev/vak-opensourc ... c-vvu-1985
https://github.com/sergev/vak-opensourc ... c-vvu-1987
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Пишем nedoBasic для 8080/8085

Post by Shaos »

Lavr wrote:
Shaos wrote:Проще конечно как в Вильнус-бейсике ...
А ты не обратил внимания, что там внизу есть исходники Вильнус-бейсика?

https://github.com/sergev/vak-opensourc ... c-vvu-1985
https://github.com/sergev/vak-opensourc ... c-vvu-1987
Обана - а откуда Вакуленко их взял? :o
Надо чтоли будет как-нибудь спросить...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Пишем nedoBasic для 8080/8085

Post by Shaos »

По ходу надо иметь 2 стека - стек возвратов и стек данных
Стек данных должен быть пустой в начале каждой строки
FOR/NEXT пока отложим на потом - для него нужен будет какой-то третий стек, причём глобальный
Стек данных наверное тоже через SP быстрее всего делать - просто менять SP на какой-то сохранённый заренее указатель, а после работы со стеком данных вернуть SP обратно:

Code: Select all

SUB1:
 LXI H,0
 DAD SP
 ; HL = SP
 SHLD SAVESP ; сохраняем старый SP
 LHLD SAVEDP ; читаем текущий DP (Data Pointer)
 SPHL ; пишем HL в SP
 ; делаем PUSH или POP
 LXI H,0
 DAD SP
 ; HL = DP
 SHLD SAVEDP ; сохраняем модифицированный DP
 LHLD SAVESP ; читаем сохранённый SP
 SPHL ; пишем HL в SP
 RET
Чото как-то жырновато - пожалуй со стеком данных надо работать ручками:

Code: Select all

DATA_PUSH_DE:
 LHLD SAVEDP ; читаем текущий DP (Data Pointer)
 DCX H
 MOV M,D
 DCX H
 MOV M,E
 SHLD SAVEDP ; записываем новый DP
 RET
DATA_POP_DE:
 LHLD SAVEDP ; читаем текущий DP (Data Pointer)
 MOV_E,M
 INX H
 MOV D,M
 INX H
 SHLD SAVEDP ; записываем новый DP
 RET
Или вообще всегда хранить указатель на стек данных в DE...

P.S. А можно попробовать объединить стек данных и стек возвратов, как у меня уже было сделано в nedoPC SDK
Я тут за главного - если что шлите мыло на me собака shaos точка net
forthuser
Senior
Posts: 165
Joined: 12 Jan 2023 07:26

Re: Пишем nedoBasic для 8080/8085

Post by forthuser »

Бейсик поверх Форта - вполне рабочий вариант.
Как пример uBasic

Можно по описанию JonesForth сделать вариант встроенного Форта для дальнейшего его расширения до Бейсик (Си ...)
Перевод JonesForth
NasmJF- он же перенесённый на Nasm ассемблер.
(у меня сходу, почему то, незапустился - пришлось сделать пару мелких правок)
Nasmjf Forth -блог автора порта на Nasm

P.S. Интересно, а разработчики ZX-Spectrum когда делали Форт для своего компьютера Jupter ACE какую реализацию Форт использовали Disassembly of Jupiter ACE ROM
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Пишем nedoBasic для 8080/8085

Post by Shaos »

Shaos wrote:Стек данных должен быть пустой в начале каждой строки
По идее по достижению каждого разделителя : в строке он тоже должен опустеть - он нужен, чтобы засунуть аргументы для оператора перед его вызовом и для вычисления арифметических выражений

Например по достижению GOSUB на нижнем уровне будет просто CALL - при этом указатель на стек данных запоминать ненадо т.к. до и после GOSUB стек данных должен быть пустым

GOTO это просто JMP на адрес

IF ... THEN n тоже JMP после проверки условия (или условный JNZ)

а RETURN будет просто RET

P.S. Оказывается в РФ есть ГОСТ на Бейсик :o
https://allgosts.ru/35/060/gost_27787-88
Я тут за главного - если что шлите мыло на me собака shaos точка net
imsushka
Maniac
Posts: 231
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Re: Пишем nedoBasic для 8080/8085

Post by imsushka »

а зачем писать ?
мсх васик есть в исходниках
(несмог найти у себя в помойке) но он вроде под только под зх80. но переделать под 8080 не очень сложно.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Пишем nedoBasic для 8080/8085

Post by Lavr »

imsushka wrote:... переделать под 8080 не очень сложно.
Иногда легче написать заново, чем что-то переделывать...
iLavr
Mondx
Doomed
Posts: 500
Joined: 10 Aug 2022 07:27
Location: Crimea

Re: Пишем nedoBasic для 8080/8085

Post by Mondx »

imsushka wrote:а зачем писать ?
...но он вроде под только под зх80. но переделать под 8080 не очень сложно.
Даже в начале 90-х писал пакетник редактору для конвертации 8080 в z80. А сейчас то какие проблемы?)
imsushka
Maniac
Posts: 231
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Re: Пишем nedoBasic для 8080/8085

Post by imsushka »

Mondx wrote:
imsushka wrote:а зачем писать ?
...но он вроде под только под зх80. но переделать под 8080 не очень сложно.
Даже в начале 90-х писал пакетник редактору для конвертации 8080 в z80. А сейчас то какие проблемы?)
8080 в z80 не проблема, а вот обратно...

и да мсх васика не нашел, GWbasic есть. и несторбасик есть
хотя я точно помню что мчх тоже был.
плохо иметь большие харды. а если их еще и несколько....
Mondx
Doomed
Posts: 500
Joined: 10 Aug 2022 07:27
Location: Crimea

Re: Пишем nedoBasic для 8080/8085

Post by Mondx »

imsushka wrote: плохо иметь большие харды. а если их еще и несколько....
Так а чё, поиск не спасает?) В том же Тотал Командере хотя бы.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Пишем компилирующий интерпретатор SHABASIC для 8080/8085

Post by Shaos »

imsushka wrote:а зачем писать ?
мсх васик есть в исходниках
(несмог найти у себя в помойке) но он вроде под только под зх80. но переделать под 8080 не очень сложно.
А зачем мне мсхвасик? Ему мсхдос нужен, которого у меня нет и не будет…

Подумалось мне, что наверное можно сделать «глубокую» интеграцию этого нового Бейсика в ShaOS! Например в ОС уже есть редактор командной строки - почему бы им не воспользоваться? При вводе строки начинающейся с числа, командный процессор не будет искать команду с именем равным этому числу, а передаст всю строку на обработку в некий “Numeric Handler”, зарегистрированный в системе, и этот хендлер просто вызовет компиляцию введённой строки в память! Точно также например введя EDIT 100 команда EDIT выведет содержимое строки с номером 100 в буфер ввода редактора командной строки и даст возможность пользователю её редактировать. Также отдельными командами (программами в COM, EXE или SYS формате) могут быть LIST, RUN и SAVE/LOAD (или это будут созданные специально для Бейсика BSAVE/BLOAD).

P.S. По идее в случае такой интеграции в ShaOS этот диалект Бейсика надо назвать не nedoBasic, а скажем SHABASIC ( что влезает в 8 символов : )

P.P.S. Поменял тему топика. Также ввиду тесной интеграции этого Бейсика с публик-домейной ОС он также будет считаться PUBLIC DOMAIN, так что не стесняемся контрибьютить - код будет ничейный, т.е. общий :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
imsushka
Maniac
Posts: 231
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Re: Пишем компилирующий SHABASIC для 8080/8085

Post by imsushka »

Shaos wrote:
imsushka wrote:а зачем писать ?
мсх васик есть в исходниках
(несмог найти у себя в помойке) но он вроде под только под зх80. но переделать под 8080 не очень сложно.
А зачем мне мсхвасик? Ему мсхдос нужен, которого у меня нет и не будет…
какой мсхдос ?????????????
он в пзушке сидит 32 кило.
на всех машинах есть. и с диском и без

у мсха класный редактор
стрелками двигаешься по экрану, паравишь где чо хошь, а когда давишь ентер - он начинает обрабатывать данную строку.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Пишем компилирующий интерпретатор SHABASIC для 8080/8085

Post by Shaos »

и чо он умеет построчно компилировать?
а может сразу GWBasic портировать чо уж там? :)
8086 или 8080 - одна фигня ага :lol:
"переделать под 8080 не очень сложно" :ebiggrin:
Я тут за главного - если что шлите мыло на me собака shaos точка net