nedoPC.org

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



Reply to topic  [ 52 posts ]  Go to page Previous  1, 2, 3, 4  Next
Пишем компилирующий интерпретатор SHABASIC для 8080/8085 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Я её процитировал, а Do It! - относится к "Пишем nedoBasic для 8080/8085" - пора писать! :wink:
Все нюансы обсудили! :lol:


P.S. А этот хит - он есть на многих языках...

_________________
iLavr


31 Jan 2023 22:40
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Да вроде ничего ещё не обсудили ;)
Проще конечно как в Вильнус-бейсике - каждая команда на своей строке
Хотя лепить команды без ветвлений в одну строку наверное несложно
И как в ранних Бейсиках IF...THEN только с номером
FOR...TO...STEP и NEXT var немножко сложно
Ограничиться переменными A...Z - пока целочисленными, а потом плавающую точку приделать
При появлении плавающей точки целочисленность можно в A%...Z% увести
Строки - надо смотреть...

_________________
:dj: https://mastodon.social/@Shaos


31 Jan 2023 23:44
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Проще конечно как в Вильнус-бейсике ...

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

https://github.com/sergev/vak-opensource/tree/master/bk/basic-vvu-1985
https://github.com/sergev/vak-opensource/tree/master/bk/basic-vvu-1987

_________________
iLavr


01 Feb 2023 00:19
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Lavr wrote:
Shaos wrote:
Проще конечно как в Вильнус-бейсике ...

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

https://github.com/sergev/vak-opensource/tree/master/bk/basic-vvu-1985
https://github.com/sergev/vak-opensource/tree/master/bk/basic-vvu-1987

Обана - а откуда Вакуленко их взял? :o
Надо чтоли будет как-нибудь спросить...

_________________
:dj: https://mastodon.social/@Shaos


01 Feb 2023 00:29
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
По ходу надо иметь 2 стека - стек возвратов и стек данных
Стек данных должен быть пустой в начале каждой строки
FOR/NEXT пока отложим на потом - для него нужен будет какой-то третий стек, причём глобальный
Стек данных наверное тоже через SP быстрее всего делать - просто менять SP на какой-то сохранённый заренее указатель, а после работы со стеком данных вернуть SP обратно:
Code:
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:
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

_________________
:dj: https://mastodon.social/@Shaos


01 Feb 2023 01:14
Profile WWW
Senior

Joined: 12 Jan 2023 07:26
Posts: 165
Reply with quote
Бейсик поверх Форта - вполне рабочий вариант.
Как пример uBasic

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

P.S. Интересно, а разработчики ZX-Spectrum когда делали Форт для своего компьютера Jupter ACE какую реализацию Форт использовали Disassembly of Jupiter ACE ROM


01 Feb 2023 01:38
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
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

_________________
:dj: https://mastodon.social/@Shaos


01 Feb 2023 01:41
Profile WWW
Senior

Joined: 01 Jan 2022 04:34
Posts: 162
Location: USSR, Tashkent
Reply with quote
а зачем писать ?
мсх васик есть в исходниках
(несмог найти у себя в помойке) но он вроде под только под зх80. но переделать под 8080 не очень сложно.


01 Feb 2023 03:55
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
imsushka wrote:
... переделать под 8080 не очень сложно.

Иногда легче написать заново, чем что-то переделывать...

_________________
iLavr


01 Feb 2023 03:58
Profile
Doomed

Joined: 10 Aug 2022 07:27
Posts: 351
Reply with quote
imsushka wrote:
а зачем писать ?
...но он вроде под только под зх80. но переделать под 8080 не очень сложно.

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


01 Feb 2023 04:20
Profile
Senior

Joined: 01 Jan 2022 04:34
Posts: 162
Location: USSR, Tashkent
Reply with quote
Mondx wrote:
imsushka wrote:
а зачем писать ?
...но он вроде под только под зх80. но переделать под 8080 не очень сложно.

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

8080 в z80 не проблема, а вот обратно...

и да мсх васика не нашел, GWbasic есть. и несторбасик есть
хотя я точно помню что мчх тоже был.
плохо иметь большие харды. а если их еще и несколько....


01 Feb 2023 05:24
Profile
Doomed

Joined: 10 Aug 2022 07:27
Posts: 351
Reply with quote
imsushka wrote:
плохо иметь большие харды. а если их еще и несколько....

Так а чё, поиск не спасает?) В том же Тотал Командере хотя бы.


01 Feb 2023 05:40
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
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, так что не стесняемся контрибьютить - код будет ничейный, т.е. общий :)

_________________
:dj: https://mastodon.social/@Shaos


01 Feb 2023 12:38
Profile WWW
Senior

Joined: 01 Jan 2022 04:34
Posts: 162
Location: USSR, Tashkent
Reply with quote
Shaos wrote:
imsushka wrote:
а зачем писать ?
мсх васик есть в исходниках
(несмог найти у себя в помойке) но он вроде под только под зх80. но переделать под 8080 не очень сложно.

А зачем мне мсхвасик? Ему мсхдос нужен, которого у меня нет и не будет…


какой мсхдос ?????????????
он в пзушке сидит 32 кило.
на всех машинах есть. и с диском и без

у мсха класный редактор
стрелками двигаешься по экрану, паравишь где чо хошь, а когда давишь ентер - он начинает обрабатывать данную строку.


01 Feb 2023 19:58
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
и чо он умеет построчно компилировать?
а может сразу GWBasic портировать чо уж там? :)
8086 или 8080 - одна фигня ага :lol:
"переделать под 8080 не очень сложно" :ebiggrin:

_________________
:dj: https://mastodon.social/@Shaos


01 Feb 2023 20:02
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 52 posts ]  Go to page Previous  1, 2, 3, 4  Next

Who is online

Users browsing this forum: No registered users and 8 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.