Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Apr 19, 2019 9:44 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 21 posts ]  Go to page Previous 1 2
Author Message
 Post subject: Re: BASIC
PostPosted: Wed Mar 22, 2017 6:31 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 431
В архиве есть бинарник без расширения. Исполняемые файлы начинаются с заголовка MENUET или упакованные KPCK


Top
   
 Post subject: Re: BASIC
PostPosted: Sat Jan 27, 2018 1:43 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 431
Поправил баг с BackSpace, заодно сделал тестовые описания ошибок и теперь TinyBasic можно компилировать gcc/newlib или tinyc

Бинарник и руководство приложены.

Этот бейсик совсем простой - учебный - поддерживает только однобуквенные целочисленные переменные.

Статус других вариантов бейсика:
- Freebasic. Тема тут
Продвинутый диалект, но только кросскомпиляция и нужно на встроенном ассемблере писать библиотеку системных вызовов для Колибри

- Basic for MenuetOS. Ссылку давал Wildwest
По сути это транслятор BASIC->ASM, и тоже без библиотеки.
Только кросскомпиляция, но легко при желании портировать.
Диалект странный, документации по нему нет.


Attachments:
tinybasic.zip [51.94 KiB]
Downloaded 60 times
Top
   
 Post subject: Re: BASIC
PostPosted: Thu Feb 01, 2018 12:55 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Siemargl wrote:
- Freebasic. Тема тут
Продвинутый диалект, но только кросскомпиляция
При отсутствии нормального редактора внутри KolibriOS это пока что остаётся единственным разумным вариантом и не только для FreeBasic.
Siemargl wrote:
нужно на встроенном ассемблере писать библиотеку системных вызовов для Колибри
Теоретически, может и не нужно, так как существует KolibriOS.Lib (можно взять из темы Delphi7 examples viewtopic.php?f=33&t=3469), нужны лишь объявления системных функций, подобно тому как это сделано для UASM\JWasm(viewtopic.php?f=32&t=3583), GoAsm(viewtopic.php?f=32&t=3579), TASM32(viewtopic.php?f=32&t=3565&p=69113#p69113), C--(viewtopic.php?f=33&t=495&start=180#p69064).

Сам я не пробовал FreeBasic+KolibriOS.Lib, но на практике могут возникнуть проблемы с манглингом
Quote:
FB follows the GCC (GNU Compiler Collection) standards when mangling symbols, and because both statically and dynamically libraries must be supported (what neither PB or VB allows), every standard-call name is mangled with the @n suffix.

MS' choice was to mangle only the import library (the *.dll.a files in [fb-dir]/lib/win32) but leaving the DLL symbols unmangled, but LD (the GNU linker) doesn't follow that.

So, in short, if a DLL has no import library to be used by a C compiler, you have create one using pexports + dlltool. Now, if it follows the MS standard, then you will have to edit the .def file and add the mangling by hand like "foo = foo@12\nbar = bar@4", not a fun task..

In 0.17 you can create DLL's that are compatible with the MS mangling to be used in VB or PB, by passing a command to LD through FB when building the dll: "fbc mydll.bas -dll -Wl --kill-at".
Хотя, возможно, в более новых версиях FreeBasic что-то могло измениться в лучшую сторону.


Top
   
 Post subject: Re: BASIC
PostPosted: Mon Apr 02, 2018 1:01 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 4974
#7216 - TInyBasic добавлен в ISO. К сожалению, место на сервере закончилось и автосборка не сработала.

_________________
Через тернии к звездам


Top
   
 Post subject: Re: BASIC
PostPosted: Sun May 06, 2018 3:37 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
0CodErr wrote:
Сам я не пробовал FreeBasic+KolibriOS.Lib, но на практике могут возникнуть проблемы с манглингом
Оказалось, не всё так плохо.
Если указать в Extern-блоке "Windows-MS" https://www.freebasic.net/wiki/wikka.ph ... xternBlock
Code:
Extern "Windows-MS"
  Declare Sub MyProc( As Integer, As Integer )
End Extern
то суффикс @Size не добавляется, только не понятно, можно ли избавиться от символа подчёркивания, -fno-leading-underscore тут не работает
Code:
push 20
push 10
call _MyProc
Проблема с суффиксом, судя по документации, актуальна только для Windows:
Platform Differences:
On Windows systems, Stdcall procedures have an "@N" decoration added to their internal/external name, where N is the size of the parameter list, in bytes.
Platform Differences:

On Linux, *BSD and DOS platforms, Extern "Windows" blocks never append a "@N" suffix to procedure names, and thus are equal to Extern "Windows-MS".


Top
   
 Post subject: Re: BASIC
PostPosted: Fri Mar 15, 2019 3:26 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 4974
Серьезный баг: в TinyBasic после нажатия на клавиши стрелок перестаёт работать ввод с клавиатуры.

_________________
Через тернии к звездам


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 21 posts ]  Go to page Previous 1 2

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


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 Limited