Oxygen Basic

Information => Reference => Topic started by: JRS on July 24, 2018, 09:05:36 PM

Title: FreeBasic
Post by: JRS on July 24, 2018, 09:05:36 PM
Quote from: Charles - JRS Forum
I see FreeBasic is still being maintained. The source was last updated in June. I would say it's not dead, it's mature.

I'm glad to hear that some of the secondary FB developers are carrying the torch.

I'm not a fan of FreeBasic essentially morphing into a BASIC to (unreadable) C translator. Is there still an effort being put into the BASIC to ASM original direction? (beyond Windows 32 bit)

Title: Re: FreeBasic
Post by: Charles Pegge on July 25, 2018, 01:01:38 AM
I suppose it's still dependent on GCC as a back-end. I have not tried the C options. There was some work on an LLVM back-end 2 years ago.
Title: Re: FreeBasic
Post by: jack on July 25, 2018, 04:04:42 AM
I normally use -gen gcc -O 2 in the 32-bit compiler options, the executables are usually smaller than when using the default
as for LLVM, I was never able to compile even the simples hello world program using it as back-end
Title: Re: FreeBasic
Post by: JRS on July 25, 2018, 08:34:47 PM
Quote from: DKL - FB forum
I'd like to let everyone know that I'm no longer actively working on the FreeBASIC Compiler project. Last year was already very slow, this year is the same so far, so to be fair and clear, I thought it's time to admit it. I no longer have the same interest and time for fbc as before.

For me the main reason is that I'm no longer sure that the FB language fits in with C++ on the one hand and Python on the other, plus other languages which also compile to native code, but provide more built-in features.

If the lead developer is smart enough to realize the project has reached its end of life , it should be a clue to others they need to move on.
Title: Re: FreeBasic
Post by: Charles Pegge on July 25, 2018, 08:57:11 PM
Perhaps he had a bad experience with LLVM :)
Title: Re: FreeBasic
Post by: JRS on July 26, 2018, 07:34:51 AM
I'm waiting for O2 to self compile and put FB behind it. It's a balll and chain moving forward.
Title: Re: FreeBasic
Post by: Charles Pegge on July 26, 2018, 09:19:06 AM
I have been working on it today. There's a few interesting bugs to sort out, but it will be very satisfying to have a self-sufficient compiler. And it will UPX down to less than 128K!
Title: Re: FreeBasic
Post by: JRS on July 26, 2018, 06:40:21 PM
Outstanding news Charles!

I have been lucky to work with a BASIC with tha only dependency being a C compiler.

More good news.

CC = FB + JR

Quote
Thanxx a lot everyone, this WinFBX just blew my mind

Would you hire CC to take you to 64 bit?

Kindness and understanding has its limits.

Title: Re: FreeBasic
Post by: erosolmi on July 27, 2018, 01:17:39 AM
I have been working on it today. There's a few interesting bugs to sort out, but it will be very satisfying to have a self-sufficient compiler. And it will UPX down to less than 128K!
Great news indeed.
Title: Re: FreeBasic
Post by: JRS on July 27, 2018, 09:48:29 AM
Eros,

Since we are discussing news, how are things going with the O2 thinBasic extensions direction?
Title: Re: FreeBasic
Post by: JRS on July 28, 2018, 10:44:55 AM
Quote from: Charles - JRS forum
in o2 we would do similar, or use #lookahead

In Script BASIC the CALL statement is required for using functions not define before use.
Title: Re: FreeBasic
Post by: JRS on July 28, 2018, 05:01:39 PM
I was thinking that JR and PS should take over tbe development of FreeBasic. It will slowly fade away without talented ledership.

Probably forking FreeBasic would be a better way to go. A fresh start and direction.  PJBasic  :)
Title: Re: FreeBasic - Hello World
Post by: JRS on July 28, 2018, 09:10:25 PM
FreeBasic

Code: FreeBasic
  1. #include once "windows.bi"
  2.  
  3. 'Declare Function        WinMain     ( ByVal hInstance As HINSTANCE, _
  4. '                                      ByVal hPrevInstance As HINSTANCE, _
  5. '                                      ByRef szCmdLine As String, _
  6. '                                      ByVal iCmdShow As Integer ) As Integer
  7. '
  8. '
  9. '    ''
  10. '    '' Entry point
  11. '    ''
  12. '    WinMain( GetModuleHandle( null ), null, Command$, SW_NORMAL )
  13.  
  14. '' ::::::::
  15. '' name: WndProc
  16. '' desc: Processes windows messages
  17. ''
  18. '' ::::::::
  19. Function WndProc ( ByVal hWnd As HWND, _
  20.                    ByVal message As UINT, _
  21.                    ByVal wParam As WPARAM, _
  22.                    ByVal lParam As LPARAM ) As LRESULT
  23.  
  24.     Function = 0
  25.  
  26.     ''
  27.     '' Process messages
  28.     ''
  29.     Select Case( message )
  30.         ''
  31.         '' Window was created
  32.         ''
  33.         Case WM_CREATE
  34.             Exit Function
  35.  
  36.         '' User clicked the form
  37.         Case WM_LBUTTONUP
  38.             MessageBox NULL, "Hello world from FreeBasic", "FB Win", MB_OK
  39.         ''
  40.         '' Windows is being repainted
  41.         ''
  42.         Case WM_PAINT
  43.             Dim rct As RECT
  44.             Dim pnt As PAINTSTRUCT
  45.             Dim hDC As HDC
  46.  
  47.             hDC = BeginPaint( hWnd, @pnt )
  48.             GetClientRect( hWnd, @rct )
  49.  
  50.             DrawText( hDC, _
  51.                       "Hello Windows from FreeBasic!", _
  52.                       -1, _
  53.                       @rct, _
  54.                       DT_SINGLELINE Or DT_CENTER Or DT_VCENTER )
  55.  
  56.             EndPaint( hWnd, @pnt )
  57.  
  58.             Exit Function
  59.  
  60.         ''
  61.         '' Key pressed
  62.         ''
  63.         Case WM_KEYDOWN
  64.             'Close if esc key pressed
  65.             If( LoByte( wParam ) = 27 ) Then
  66.                 PostMessage( hWnd, WM_CLOSE, 0, 0 )
  67.             End If
  68.  
  69.         ''
  70.         '' Window was closed
  71.         ''
  72.         Case WM_DESTROY
  73.             PostQuitMessage( 0 )
  74.             Exit Function
  75.     End Select
  76.  
  77.     ''
  78.     '' Message doesn't concern us, send it to the default handler
  79.     '' and get result
  80.     ''
  81.     Function = DefWindowProc( hWnd, message, wParam, lParam )
  82.  
  83. End Function
  84.  
  85. '' ::::::::
  86. '' name: WinMain
  87. '' desc: A win2 gui program entry point
  88. ''
  89. '' ::::::::
  90. 'Function WinMain ( ByVal hInstance As HINSTANCE, _
  91. '                   ByVal hPrevInstance As HINSTANCE, _
  92. '                   ByREf szCmdLine As String, _
  93. '                   ByVal iCmdShow As Integer ) As Integer
  94.  
  95.     Dim wMsg As MSG
  96.     Dim wcls As WNDCLASS
  97.     Dim szAppName As String
  98.     Dim hWnd As HWND
  99.  
  100.     'Function = 0
  101.  
  102.     ''
  103.     '' Setup window class
  104.     ''
  105.     szAppName = "HelloWin"
  106.  
  107.     With wcls
  108.         .style         = CS_HREDRAW Or CS_VREDRAW
  109.         .lpfnWndProc   = @WndProc
  110.         .cbClsExtra    = 0
  111.         .cbWndExtra    = 0
  112.         .hInstance     = GetModuleHandle(null) 'hInstance
  113.         .hIcon         = LoadIcon( NULL, IDI_APPLICATION )
  114.         .hCursor       = LoadCursor( NULL, IDC_ARROW )
  115.         .hbrBackground = GetStockObject( WHITE_BRUSH )
  116.         .lpszMenuName  = NULL
  117.         .lpszClassName = StrPtr( szAppName )
  118.     End With
  119.  
  120.     ''
  121.     '' Register the window class
  122.     ''
  123.     If( RegisterClass( @wcls ) = FALSE ) Then
  124.        MessageBox( null, "Failed to register wcls!", szAppName, MB_ICONERROR )
  125.        'Exit Function
  126.     End If
  127.  
  128.     ''
  129.     '' Create the window and show it
  130.     ''
  131.     hWnd = CreateWindowEx( 0, _
  132.                            szAppName, _
  133.                            "The Hello Program", _
  134.                            WS_OVERLAPPEDWINDOW, _
  135.                            CW_USEDEFAULT, _
  136.                            CW_USEDEFAULT, _
  137.                            CW_USEDEFAULT, _
  138.                            CW_USEDEFAULT, _
  139.                            NULL, _
  140.                            NULL, _
  141.                            GetModuleHandle(null), _ 'hInstance hInstance, _
  142.                            NULL )
  143.  
  144.  
  145.     ShowWindow( hWnd, SW_NORMAL) 'iCmdShow )
  146.     UpdateWindow( hWnd )
  147.  
  148.     ''
  149.     '' Process windows messages
  150.     ''
  151.     While( GetMessage( @wMsg, NULL, 0, 0 ) <> FALSE )
  152.         TranslateMessage( @wMsg )
  153.         DispatchMessage( @wMsg )
  154.     Wend
  155.  
  156.  
  157.     ''
  158.     '' Program has ended
  159.     ''
  160. '    Function = wMsg.wParam
  161.  
  162. 'End Function
  163.  

Oxygen Basic

Code: OxygenBasic
  1.  
  2.   includepath "../../inc/"
  3.   $filename  "t.exe"
  4.   '#include   "RTL32.inc"
  5.  '#include   "RTL64.inc"
  6.  #include   "WinUtil.inc"
  7.   MainWindow 320,100,WS_OVERLAPPEDWINDOW
  8.  
  9.  
  10.   function WndProc(hWnd, wMsg, wParam,lparam) as sys callback
  11.   ===========================================================
  12.    
  13.   static sys hdc
  14.   static RECT r
  15.  
  16.   '==========
  17.  select wMsg
  18.   '==========
  19.        
  20.     case WM_CREATE
  21.     '=============
  22.  
  23.     SetWindowText hwnd,"Greeting"
  24.     'SendMessage hwnd,WM_SETTEXT,0,strptr "Greeting"
  25.  
  26.  
  27.     case WM_DESTROY
  28.     '===============
  29.          
  30.     PostQuitMessage 0
  31.        
  32.     case WM_PAINT
  33.     '============
  34.  
  35.     hdc=GetDC hwnd
  36.     GetClientRect  hWnd,@r
  37.     'style
  38.    '0x20 DT_SINGLELINE
  39.    '0x04 DT_VCENTER
  40.    '0x01 DT_CENTER
  41.    '0x25
  42.  
  43.     SetBkColor   hdc,white
  44.     SetTextColor hdc,blue
  45.     DrawText hDC,"Hello World!",-1,@r,0x25
  46.     ValidateRect hwnd,@r
  47.      
  48.     case WM_KEYDOWN
  49.     '==============
  50.  
  51.     if wParam=27 then SendMessage hwnd, WM_CLOSE, 0, 0      'ESCAPE
  52.  
  53.     case else
  54.     '========
  55.          
  56.     function=DefWindowProc hWnd,wMsg,wParam,lParam
  57.    
  58.     end select
  59.     '
  60.  end function ' WndProc
  61.  

Script BASIC  (via DYC and IUP)

Code: Script BASIC
  1. ' DYC FFI Hello World
  2.  
  3. DECLARE SUB DLL ALIAS "dyc" LIB "dyc"
  4.  
  5. DLL "mc,i,iup.dll,IupOpen,PP",0,0
  6. win = DLL("mc,p,iup.dll,IupCreate,Z","dialog")
  7. lbl = DLL("mc,p,iup.dll,IupCreate,Z","label")
  8. DLL "mc,p,iup.dll,IupSetAttributes,PZ",lbl,"""
  9.  TITLE="Hello World!",
  10.  PADDING=100x75,
  11.  FONT="Arial, BOLD 24"
  12.  """
  13. DLL "mc,p,iup.dll,IupAppend,PP",win,lbl
  14. DLL "mc,i,iup.dll,IupShow,P",win
  15. DLL "mc,i,iup.dll,IupMainLoop,P",0
  16. DLL "mc,i,iup.dll,IupClose,P",0
  17.  

Script BASIC  (IUP C Extension Module)

Code: Script BASIC
  1. IMPORT pui.sbi
  2.  
  3. SUB Win_exit
  4.   Iup::ExitLoop = TRUE
  5. END SUB
  6.  
  7. Iup::Open
  8. win = Iup::Create("dialog")
  9. Iup::SetAttributes win,"TITLE=\"SB IUP C Extension Module\",SIZE=200x"
  10. lbl = Iup::Create("label")
  11. Iup::SetAttributes lbl,"""
  12.  TITLE="Hello World!",
  13.  PADDING=50x75,
  14.  FONT="Arial, BOLD 24"
  15.  """
  16. Iup::Append win,lbl
  17. Iup::SetCallback win,"CLOSE_CB",ADDRESS(Win_exit())
  18. Iup::Show win
  19. Iup::MainLoop
  20. Iup::Close
  21.  
Title: Re: FreeBasic
Post by: José Roca on July 29, 2018, 02:16:57 AM
They're not comparable because in the SB/IUP examples you're using a label, the background is gray instead of white and you need third party libraries.

FreeBasic (via WinFBX)

High DPI and Unicode aware.

Code: [Select]
' ########################################################################################
' Microsoft Windows
' File: CW_GDI_HelloWord.fbtpl
' Contents: CWindow Hello Word example
' Compiler: FreeBasic 32 & 64 bit
' Copyright (c) 2016 José Roca. Freeware. Use at your own risk.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################

#define UNICODE
#INCLUDE ONCE "Afx/CWindow.inc"
USING Afx

DECLARE FUNCTION WinMain (BYVAL hInstance AS HINSTANCE, _
                          BYVAL hPrevInstance AS HINSTANCE, _
                          BYVAL szCmdLine AS ZSTRING PTR, _
                          BYVAL nCmdShow AS LONG) AS LONG

   END WinMain(GetModuleHandleW(NULL), NULL, COMMAND(), SW_NORMAL)

' // Forward declaration
DECLARE FUNCTION WndProc (BYVAL hwnd AS HWND, BYVAL uMsg AS UINT, BYVAL wParam AS WPARAM, BYVAL lParam AS LPARAM) AS LRESULT

' ========================================================================================
' Main
' ========================================================================================
FUNCTION WinMain (BYVAL hInstance AS HINSTANCE, _
                  BYVAL hPrevInstance AS HINSTANCE, _
                  BYVAL szCmdLine AS ZSTRING PTR, _
                  BYVAL nCmdShow AS LONG) AS LONG

   ' // Set process DPI aware
   AfxSetProcessDPIAware

   ' // Create the main window
   DIM pWindow AS CWindow
   pWindow.Create(NULL, "CWindow Hello World", @WndProc)
   ' // Change the background to white
   pWindow.Brush = GetStockObject(WHITE_BRUSH)
   ' // Set the client size of the window
   pWindow.SetClientSize(500, 320)
   ' // Center the window
   pWindow.Center

   ' // Dispatch Windows messages
   FUNCTION = pWindow.DoEvents(nCmdShow)

END FUNCTION
' ========================================================================================

' ========================================================================================
' Main window callback procedure
' ========================================================================================
FUNCTION WndProc (BYVAL hwnd AS HWND, BYVAL uMsg AS UINT, BYVAL wParam AS WPARAM, BYVAL lParam AS LPARAM) AS LRESULT

   STATIC hNewFont AS HFONT

   SELECT CASE uMsg

      CASE WM_CREATE
         ' // Get a pointer to the CWindow class from the CREATESTRUCT structure
         DIM pWindow AS CWindow PTR = AfxCWindowPtr(lParam)
         ' // Create a new font scaled according the DPI ratio
         IF pWindow->DPI <> 96 THEN hNewFont = pWindow->CreateFont("Tahoma", 9)
         EXIT FUNCTION

      CASE WM_COMMAND
         SELECT CASE GET_WM_COMMAND_ID(wParam, lParam)
            CASE IDCANCEL
               ' // If ESC key pressed, close the application by sending an WM_CLOSE message
               IF GET_WM_COMMAND_CMD(wParam, lParam) = BN_CLICKED THEN
                  SendMessageW hwnd, WM_CLOSE, 0, 0
                  EXIT FUNCTION
               END IF
         END SELECT

      CASE WM_PAINT
    DIM rc AS RECT, ps AS PAINTSTRUCT, hDC AS HANDLE, hOldFont AS HFONT
         hDC = BeginPaint(hWnd, @ps)
         IF hNewFont THEN hOldFont = CAST(HFONT, SelectObject(hDC, CAST(HGDIOBJ, hNewFont)))
         GetClientRect(hWnd, @rc)
         DrawTextW(hDC, "Hello, World!", -1, @rc, DT_SINGLELINE or DT_CENTER or DT_VCENTER)
         IF hNewFont THEN SelectObject(hDC, CAST(HGDIOBJ, CAST(HFONT, hOldFont)))
         EndPaint(hWnd, @ps)
         EXIT FUNCTION

    CASE WM_DESTROY
         ' // Destroy the new font
         IF hNewFont THEN DeleteObject(CAST(HGDIOBJ, hNewFont))
         ' // End the application by sending an WM_QUIT message
         PostQuitMessage(0)
         EXIT FUNCTION

   END SELECT

   ' // Default processing of Windows messages
   FUNCTION = DefWindowProcW(hWnd, uMsg, wParam, lParam)

END FUNCTION
' ========================================================================================
Title: Re: FreeBasic
Post by: JRS on July 29, 2018, 02:40:44 AM
This was a Hello World keep it simple demonstration.  SB is an interpreter and Windows API calls are FFI dynamically and a C extension module for a more seamless integration.

I think SB wins hands down for simple and easy to understand.
Title: Re: FreeBasic
Post by: José Roca on July 29, 2018, 03:16:34 AM
Then what about this:

Code: [Select]
#INCLUDE ONCE "Afx/CWindow.inc"

DIM pWindow AS CWindow
pWindow.Create(NULL, "CWindow with a label control")
' // Add a label control
pWindow.AddControl("Label", , 101, "Hello World", 100, 50, 150, 23)
' // Dispatch Windows messages
pWindow.DoEvents(SW_NORMAL)
Title: Re: FreeBasic
Post by: JRS on July 29, 2018, 03:20:47 AM
That actually looks like BASIC.

Nice!
Title: Re: FreeBasic
Post by: JRS on July 29, 2018, 01:25:08 PM
Quote from: CC@JRS
Your introduction of templates via WinFBE is a tremendous help and it was a very good progress
to be able to translate so many PB programs to FB in such a short time.

Have you informed your boss that your new 64 bit Windows direction is based on transportation with no one behind the wheel? Is your company paying you based on results or giving you a free hand to play?

What if something happen to you, (sick, quit, ...) how would your boss replace you with a FB direction?

My advice is to join Patrice's forum and observe how he took his PB effort to C++.
Title: Re: FreeBasic
Post by: JRS on July 29, 2018, 08:35:45 PM
What is FreeBasic's greatest weaknesses? If a fork evolved, what would you change going forward?
Title: Re: FreeBasic
Post by: jack on July 30, 2018, 02:22:50 AM
John
what is it with you?
why your obsession to put down FreeBasic or for that matter PowerBasic?
Title: Re: FreeBasic
Post by: JRS on July 30, 2018, 08:50:26 AM
I'm not putting either abandoned BASIC compiler down. I'm assisting in finding options so people have somewhere to go.

C++ and for the brave O2 are possible options. Languages die off every day.
Title: Re: FreeBasic
Post by: José Roca on July 30, 2018, 09:04:41 AM
No language is dead until nobody speaks it. Currently, FreeBasic has many more users and collaborators than Script Basic or O2.
Title: Re: FreeBasic
Post by: JRS on July 30, 2018, 09:31:09 AM
Your comments assume we are all hobby programmers. I program for a living and the customer assumes I will use tools that are maintainable.
Title: Re: FreeBasic
Post by: José Roca on July 30, 2018, 10:07:46 AM
We have already told you that FreeBasic is being maintained, but you must be deaf.

See: https://github.com/freebasic/fbc/commits/master
Title: Re: FreeBasic
Post by: JRS on July 30, 2018, 11:14:09 AM
We were also told by Drake that PowerBASIC will live on and is actively being developed. What does your crystal ball say about FreeBasic?
Title: Re: FreeBasic
Post by: José Roca on July 30, 2018, 11:31:29 AM
Nobody knows the future. Currently, it suits my needs.
Title: Re: FreeBasic
Post by: JRS on July 30, 2018, 11:58:00 AM
I'm betting on Charles and O2 to be the answer to a 32/64 bit BASIC Windows compiler. If a product / project has no defined plans for the future, why would someone invest in that?

Quote
FreeBasic has many more users and collaborators than Script Basic or O2.

Script BASIC is used commercially in embedded BACNet controllers by two major manufactures. One since 2003. It is burned into firmware that would mean trashing the boards if there was a flaw in the BASIC.

I had a client in New Zealand that was installing a solar power converter at a remote high end resort. The problem was that the BACnet controller running Script BASIC needed a MD5 function to access the power converter's API.   Script BASIC had no access to the OS (POSIX) to shell to for an external MD5 utility.

Charles wrote a MD5 function for the ARM processor in Script BASIC.  8) 8)  He installed the code and tested it on the live remote controller via a satellite Internet connection. 
Title: Re: FreeBasic
Post by: Aurel on July 31, 2018, 04:01:22 AM
I must say something...  :)
First :
Free Basic is very good basic compiler and enough old for many general purposes.
From the beginning he is created to replace qbasic as console compiler and that is not enough.
Work with FB is not very much user friendly..even with few well known editors created trough time.
Also there is no official editor included into FB package.
Documentation is little bit complex and is not simple enough for newbies.
It was popular few years back but from todays point of view is not.
More than half of members gone ( like on many other basic forums) .
Jose have a right when says that FB still have more users than sb or o2
that is the fact
I only can bet in one two things about o2.
is is more flexibile and simplier to use than fb
Oxygen - OOP is excellent and 10 times better than in any other programming language.
One big problem is how to attract younger population to BASIC?
You cannot do that with complex things(way of programming).
Title: Re: FreeBasic
Post by: José Roca on July 31, 2018, 07:00:00 AM
Hoping that all the other Basic compilers will disappear as a way to attract O2 users is illusory. The way is to release a stable beta version and, above all, write good documentation. Without documentation, nobody is going to do serious work with O2.

> One big problem is how to attract younger population to BASIC?

John doesn't like beginners. He kicks them from the forum at the speed of light.
Title: Re: FreeBasic
Post by: JRS on July 31, 2018, 07:07:29 AM
Quote from: JR
John doesn't like beginners. He kicks them from the forum at the speed of light.

John doesn't like lazy people users. Newbies are welcome.
Title: Re: FreeBasic
Post by: JRS on July 31, 2018, 05:26:31 PM
If you would like to try Script BASIC embedded in FreeBasic, here is an example Charles did.

FreeBasic Embedded Script BASIC Example (http://www.allbasic.info/forum/index.php?topic=449.msg4798#msg4798).

You can create multiple instances (threads) of Script BASIC and communicate with them via the SB API or include MT.
Title: Re: FreeBasic
Post by: JRS on August 03, 2018, 09:13:03 AM
Here is a FreeBasic IUP example. This is really old IUP code. It's not using the newer IupSetCallback method.

Code: FreeBasic
  1.  
  2. #include once "IUP/iup.bi"
  3.  
  4. #define NULL 0
  5.  
  6. declare function ok_onclick cdecl (byval handler as Ihandle ptr) as integer
  7. declare function close_onclick cdecl (byval handler as Ihandle ptr) as integer
  8.  
  9.         if( IupOpen( NULL, NULL ) = IUP_ERROR ) then
  10.                 end 1
  11.         end if
  12.  
  13.         dim as Ihandle ptr ok_button, close_button
  14.         dim as Ihandle ptr main_dlg
  15.  
  16.         ok_button = IupButton( "Open", "ok_act" )
  17.         close_button = IupButton( "Close", "close_act" )
  18.  
  19.         main_dlg = IupDialog( _
  20.                                                   IupVbox( _
  21.                                                                    IupHbox( IupLabel( "" ), NULL ), _                                                              
  22.                                                                    IupHbox( IupFill(), ok_button, IupFill(), close_button, IupFill(), NULL ), _
  23.                                                                    IupHbox( IupLabel( "" ), NULL ), _
  24.                                                                    NULL _
  25.                                                                  ) _
  26.                                                 )
  27.  
  28.         IupSetAttributes( main_dlg, "TITLE=IupButton, DEFAULTENTER=ok_button, MAXBOX=NO, MINBOX=NO, RESIZE=YES" )
  29.        
  30.         IupSetFunction( "ok_act", @ok_onclick )
  31.         IupSetFunction( "close_act", @close_onclick )
  32.        
  33.         IupSetHandle( "ok_button", ok_button )
  34.  
  35.         IupShowXY( main_dlg, IUP_CENTER, IUP_CENTER )
  36.  
  37.         IupMainLoop( )
  38.         IupClose( )
  39.  
  40.         end 0
  41.  
  42. ''
  43. function ok_onclick cdecl (byval handler as Ihandle ptr) as integer
  44.  
  45.   IupMessage( "IupMessage", "Press OK" )
  46.  
  47.   function = IUP_DEFAULT
  48.  
  49. end function
  50.  
  51. ''
  52. function close_onclick cdecl (byval handler as Ihandle ptr) as integer
  53.  
  54.   function = IUP_CLOSE
  55.  
  56. end function
  57.  

Title: Re: FreeBasic
Post by: JRS on August 03, 2018, 07:59:07 PM
Using FreeBasic 1.06, Paul's WinFBE and Mingw32  reminds me of BaCon for Windows. (BASIC to C translator)

Is FBC 1.06 a C generated executable?
Title: Re: FreeBasic
Post by: jack on August 03, 2018, 09:04:57 PM
thank you John for the examples, as to your last question, I think that the 32-bit version could be considered a FB executable provided it's compiled with the default gas backend, the 64-bit version could be considered a C compiled executable because there's no gas backend however in both versions some (if not all) libraries are in C
Title: Re: FreeBasic
Post by: JRS on August 04, 2018, 12:05:19 AM
I was able to get JR's DateViewer running which is a OCX control with his WinFBX includes with WinFBE. I'm not sure if that's possible using the traditional FB ASM generator.
Title: Re: FreeBasic
Post by: JRS on August 04, 2018, 12:21:07 AM
Here is a IUP LED example in O2. Notice that O2 is reading the C IUP.H #include file. (no BASIC includes used in this example)

Code: OxygenBasic
  1. $ filename "sample_w_led.exe"
  2. 'include "$/inc/RTL32.inc"
  3.  
  4. extern lib "IUP/iup.dll" cdecl
  5. includepath "IUP/"
  6. include "iup.h"
  7.  
  8. end extern  
  9.  
  10. extern cdecl
  11.  
  12. typedef sys Ihandle
  13.  
  14.  
  15. includepath ""
  16. include "sample.inc"
  17.  
  18. function Load_LED_Dialog() as sys
  19.   string err = NULL
  20.  
  21.   /* Initialization of IUP and its controls */
  22.  
  23.   err = IupLoadBuffer(sample_led)
  24.   if len(err) then
  25.     IupMessage("LED error", err)
  26.     return 0
  27.   end if
  28.    
  29.   IupShow(IupGetHandle("dlg"))
  30.   return 1
  31.    
  32. end function
  33.  
  34.  
  35. sub main()
  36.  
  37.    IupOpen(0,0)
  38.    if Load_LED_Dialog() then
  39.      IupMainLoop()
  40.    end if
  41.    IupClose()
  42.  
  43. end sub
  44.  
  45. main()
  46.  

LED Form Definition
Code: [Select]
dim as string sample_led = `

img1 = IMAGE[0="0 0 0",1="BGCOLOR",2="255 0 0"]
(32,32
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1
,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
,2,2,2,0,2,0,2,0,2,2,0,2,2,2,0,0,0,2,2,2,0,0,2,0,2,2,0,0,0,2,2,2
,2,2,2,0,2,0,0,2,0,0,2,0,2,0,2,2,2,0,2,0,2,2,0,0,2,0,2,2,2,0,2,2
,2,2,2,0,2,0,2,2,0,2,2,0,2,2,2,2,2,0,2,0,2,2,2,0,2,0,2,2,2,0,2,2
,2,2,2,0,2,0,2,2,0,2,2,0,2,2,0,0,0,0,2,0,2,2,2,0,2,0,0,0,0,0,2,2
,2,2,2,0,2,0,2,2,0,2,2,0,2,0,2,2,2,0,2,0,2,2,2,0,2,0,2,2,2,2,2,2
,2,2,2,0,2,0,2,2,0,2,2,0,2,0,2,2,2,0,2,0,2,2,0,0,2,0,2,2,2,0,2,2
,2,2,2,0,2,0,2,2,0,2,2,0,2,2,0,0,0,0,2,2,0,0,2,0,2,2,0,0,0,2,2,2
,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2
,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,0,2,2,2,2,2,2,2,2
,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,2,2,2,2,2,2,2,2,2
,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
)

img2 = IMAGE[0="0 0 0",1="0 255 0",2="BGCOLOR",3="255 0 0"]
(32,32
,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2
,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2
,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2
,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2
,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2
,2,2,2,2,2,2,2,2,2,2,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2
,2,2,2,2,2,2,2,2,2,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2
,2,2,2,2,2,2,2,2,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2
,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
,3,3,3,0,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
,3,3,3,0,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
,3,3,3,0,3,0,3,0,3,3,0,3,3,3,1,1,0,3,3,3,0,0,3,0,3,3,0,0,0,3,3,3
,3,3,3,0,3,0,0,3,0,0,3,0,3,0,1,1,3,0,3,0,3,3,0,0,3,0,3,3,3,0,3,3
,3,3,3,0,3,0,3,3,0,3,3,0,3,3,1,1,3,0,3,0,3,3,3,0,3,0,3,3,3,0,3,3
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,3,3,3,0,3,0,3,3,0,3,3,0,3,0,1,1,3,0,3,0,3,3,0,0,3,0,3,3,3,0,3,3
,3,3,3,0,3,0,3,3,0,3,3,0,3,3,1,1,0,0,3,3,0,0,3,0,3,3,0,0,0,3,3,3
,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3
,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,0,3,3,3,0,3,3,3,3,3,3,3,3
,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,0,0,0,3,3,3,3,3,3,3,3,3
,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
,2,2,2,2,2,2,2,3,3,3,3,3,3,3,1,1,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2
,2,2,2,2,2,2,3,3,3,3,3,3,3,3,1,1,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2
,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2
,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2
,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
)

mnu = MENU
(
  SUBMENU("IupSubMenu 1",
    MENU
    (
      ITEM[VALUE=ON]("IupItem 1 Checked",myaction),
      SEPARATOR(),
      ITEM[ACTIVE="NO"]("IupItem 2 Disabled",myaction)
    )
  ),
  ITEM("IupItem 3",myaction),
  ITEM("IupItem 4",myaction)
)

dlg = DIALOG[TITLE="IupDialog Title",MENU="mnu"]
(
  VBOX[GAP="5",ALIGNMENT="ARIGHT",MARGIN="5x5"]
  (
    HBOX
    (
      FRAME[TITLE="IupButton"]
      (
        VBOX
        (
          BUTTON("Button Text",myaction),
          BUTTON[IMAGE=img1]("",myaction),
          BUTTON[IMAGE=img1,IMPRESS=img2]("",myaction)
        )
      ),
      FRAME[TITLE="IupLabel"]
      (
        VBOX
        (
          LABEL("Label Text"),
          LABEL[SEPARATOR=HORIZONTAL](""),
          LABEL[IMAGE=img1]("")
        )
      ),
      FRAME[TITLE="IupToggle"]
      (
        VBOX
        (
          TOGGLE[VALUE="ON"]("Toggle Text",myaction),
          TOGGLE[IMAGE=img1,IMPRESS=img2]("",myaction),
          FRAME[TITLE="IupRadio"]
          (
            RADIO
            (
              VBOX
              (
                TOGGLE("Toggle Text",myaction),
                TOGGLE("Toggle Text",myaction)
              )
            )
          )
        )
      ),
      FRAME[TITLE="IupText/IupMultiline"]
      (
        VBOX
        (
          TEXT[SIZE="80x",VALUE="IupText Text"](myaction),
          MULTILINE[SIZE="80x60",EXPAND="YES",VALUE="IupMultiline Text\nSecond Line\nThird Line"](myaction)
        )
      ),
      FRAME[TITLE="IupList"]
      (
        VBOX
        (
          LIST[EXPAND="YES",VALUE="1",1="Item 1 Text",2="Item 2 Text",3="Item 3 Text"](myaction),
          LIST[DROPDOWN="YES",EXPAND="YES",VALUE="2",1="Item 1 Text",2="Item 2 Text",3="Item 3 Text"](myaction),
          LIST[EDITBOX="YES",EXPAND="YES",VALUE="3",1="Item 1 Text",2="Item 2 Text",3="Item 3 Text"](myaction)
        )
      )
    ),
    CANVAS[BGCOLOR="128 255 0"](myaction)
  )
) `
Title: Re: FreeBasic
Post by: JRS on August 04, 2018, 02:48:59 AM
Here is a Script BASIC LED example based on James Fuller's IUP efforts.

Code: Script BASIC
  1. ' James Fuller IUP LED Example
  2.  
  3. LED = """
  4. # ==============================================================================
  5. #cardfile
  6. # ==============================================================================
  7. btn_prior = BUTTON[SIZE = 50x15, IMAGE=IUP_ArrowLeft]("",NULL)
  8. btn_next =  BUTTON[SIZE = 50x15, IMAGE=IUP_ArrowRight]("",NULL)
  9. btn_find =   BUTTON[SIZE = 50x15, IMAGE=IUP_EditFind]("",NULL)
  10. btn_add  =   BUTTON[SIZE = 50x15, IMAGE=IUP_FileSave]("",NULL)
  11. btn_update =  BUTTON[SIZE = 50x15, IMAGE=IUP_NavigateRefresh]("",NULL)
  12. btn_delete =  BUTTON[SIZE = 50x15, IMAGE=IUP_EditErase]("",NULL)
  13. btn_print =  BUTTON[SIZE = 50x15, IMAGE=IUP_Print]("",NULL)
  14. btn_cancel = BUTTON[SIZE = 50x15, IMAGE=IUP_ActionCancel]("",NULL)
  15. # ==============================================================================
  16. id_index = LABEL[]("0 / 0")
  17. entry_company = TEXT[EXPAND = HORIZONTAL](NULL)
  18. entry_last = TEXT[EXPAND = HORIZONTAL](NULL)
  19. entry_first = TEXT[EXPAND = HORIZONTAL](NULL)
  20. entry_add1 = TEXT[EXPAND = HORIZONTAL](NULL)
  21. entry_add2 = TEXT[EXPAND = HORIZONTAL](NULL)
  22. entry_add3 = TEXT[EXPAND = HORIZONTAL](NULL)
  23. entry_city = TEXT[EXPAND = HORIZONTAL](NULL)
  24. entry_state = TEXT[SIZE = 120x](NULL)
  25. entry_zip = TEXT[SIZE = 80x](NULL)
  26. cbo_country = LIST[DROPDOWN=YES, SIZE=100x,VALUE=1](NULL)
  27. entry_phone = TEXT[SIZE=70x](NULL)
  28. entry_fax = TEXT[SIZE=70x](NULL)
  29. entry_email = TEXT[EXPAND = HORIZONTAL](NULL)
  30. entry_www = TEXT[EXPAND = HORIZONTAL](NULL)
  31. entry_comments = TEXT[MULTILINE=YES, EXPAND=YES](NULL)
  32. # ==============================================================================
  33. cardfile = DIALOG[TITLE = "Card File"]
  34. (
  35.    VBOX[MARGIN = 5x5]
  36.    (
  37.        HBOX[GAP = 5]
  38.        (
  39.            FILL(),
  40.            LABEL[TITLE = " Record No."](""),id_index
  41.        ),
  42.        FRAME[TITLE = Company]
  43.        (
  44.             entry_company
  45.        ),
  46.        HBOX[GAP = 5]
  47.        (
  48.            FRAME[TITLE = "Last Name"]
  49.            (
  50.                entry_last
  51.            ),
  52.            FRAME[TITLE = "First Name"]
  53.            (
  54.                entry_first
  55.            )
  56.        ),
  57.        FRAME[TITLE = "Address"]
  58.        (
  59.            VBOX[GAP = 5]
  60.            (
  61.                entry_add1,
  62.                entry_add2,
  63.                entry_add3
  64.            )
  65.        ),
  66.        HBOX[GAP = 5]
  67.        (
  68.            FRAME[TITLE = "City"]
  69.            (
  70.                entry_city
  71.            ),
  72.            FRAME[ TITLE = "State / Province"]
  73.            (
  74.                 entry_state
  75.            ),
  76.            FRAME[TITLE = "Zip or Postal Code"]
  77.            (
  78.                entry_zip
  79.            ),
  80.            FRAME[TITLE = "Country"]
  81.            (
  82.                 cbo_country
  83.            )
  84.        ),
  85.        HBOX[GAP = 5]
  86.        (
  87.            FRAME[TITLE = "Phone"]
  88.            (
  89.                entry_phone
  90.            ),
  91.            FRAME[TITLE = "Fax"]
  92.            (
  93.                entry_fax
  94.            ),
  95.            FRAME[TITLE = "Email"]
  96.            (
  97.                entry_email
  98.            ),
  99.            FRAME[TITLE = "www"]
  100.            (
  101.                entry_www
  102.            )
  103.        ),
  104.        FRAME[TITLE = "Comments"]
  105.        (
  106.            TEXT[EXPAND = YES,MULTILINE = YES,NAME = entry_comments](do_nothing)
  107.        ),
  108.        HBOX[GAP = 10]
  109.        (
  110.            FILL(),
  111.            btn_prior,btn_next,btn_find,btn_add,btn_update,btn_delete,btn_print,btn_cancel,
  112.            FILL()
  113.        )
  114.    )
  115. )
  116. """
  117.  
  118. SUB Win_exit
  119.   Iup::ExitLoop = TRUE
  120. END SUB
  121.  
  122. IMPORT iup.bas
  123.  
  124. Iup::Open
  125. Iup::ImageLibOpen
  126. Iup::SetGlobal("DEFAULTFONT", "Helvetica, 11")
  127. Iup::LoadBuffer(LED)
  128.  
  129. Iup::SetCallback(Iup::GetHandle("btn_cancel"), "ACTION", ADDRESS(Win_exit()))
  130.  
  131. Iup::Show(Iup::GetHandle("cardfile"))
  132.  
  133. Iup::MainLoop()
  134.  
  135. Iup::Close()
  136.  

Title: Re: FreeBasic
Post by: JRS on August 05, 2018, 03:25:31 PM
Quote from: José Roca - JRS forum
I stopped adding code because of the lack of testers. I don't want to write code that nobody will use.

I feel your pain. I never said you weren't smart or giving. My goal with past interactions with you was to help get your includes on board with a BASIC compiler that is going somewhere. (Oxygen Basic) It's frustrating when you create solutions that in our minds are the best thing going out there and people ignore it as they're too lazy to read and want someone else to write their code for them. I hope FreeBasic works out for you. I think you would have a better chance if you forked FB and go your own direction.

Title: Re: FreeBasic
Post by: José Roca on August 05, 2018, 04:48:41 PM
If it not was for people like Paul Squires, that is making good use of my code, and a few others that at least are paying attention to it, it would be like casting pearls to the swine.
Title: Re: FreeBasic
Post by: JRS on August 05, 2018, 08:20:14 PM
What keeps me going with SB is its a great stress reliever for me and I smile when a new user tells me after trying it, "Where has this BASIC been all my life.".
Title: Re: FreeBasic
Post by: JRS on August 06, 2018, 02:16:02 PM
I'm surprised Chris Boss hasn't tried to expand his EZGUI market to O2 or FB.
Title: Re: FreeBasic
Post by: JRS on August 06, 2018, 04:08:44 PM
 It seems the IUP effort on the FB forum dates back to 2012/2013 era. A lot has changed with IUP since then.
Title: Re: FreeBasic
Post by: JRS on September 15, 2018, 06:47:38 AM
It looks like Oxygen BASIC is the last of the true BASIC compilers. PowerBasic is dead and FreeBasic has become a BASIC to C translator.
Title: Re: FreeBasic
Post by: Charles Pegge on September 15, 2018, 08:34:34 AM
It will also be independent of GNU! Apart from the Windows OS, there are no other dependencies.
Title: Re: FreeBasic
Post by: JRS on October 06, 2018, 05:06:23 PM
Does anyone know if FreeBasic for Linux is a true 64 bit BASIC or is it 32 bit riding on the i386 layer?
Title: Re: FreeBasic
Post by: jack on October 06, 2018, 05:33:57 PM
@John
I don't understand your question, what do you mean by "32 bit riding on the i386 layer" ?
as far as I know it's a 64-bit compiler producing 64-bit applications using the gcc backend
Title: Re: FreeBasic
Post by: Charles Pegge on October 06, 2018, 06:03:20 PM
There is a 64bit Linux build for FreeBasic:

https://sourceforge.net/projects/fbc/files/Binaries%20-%20Linux/
Title: Re: FreeBasic
Post by: JRS on October 06, 2018, 06:40:15 PM
FreeBasic Linux 64 bit dependencies.


sudo apt-get install gcc-multilib g++-multilib
sudo apt-get install lib32ncurses5-dev
sudo apt-get install libx11-dev:i386 libxext-dev:i386 libxrender-dev:i386 libxrandr-dev:i386 libxpm-dev:i386


Sorry, it's 32 bit.

BaCon is the only active 64 bit BASIC to C translator I know of.
Title: Re: FreeBasic
Post by: Charles Pegge on October 06, 2018, 07:25:23 PM
I'm testing a 64bit o2, which is required for 64bit JIT execution. In due course, it will be possible to create a 64bit self-compiling lineage, But until 32bit software fades into obscurity, it might be better to distribute o2 in its 32bit form.
Title: Re: FreeBasic
Post by: JRS on October 06, 2018, 07:46:47 PM
I'm testing a 64bit o2, which is required for 64bit JIT execution. In due course, it will be possible to create a 64bit self-compiling lineage, But until 32bit software fades into obscurity, it might be better to distribute o2 in its 32bit form.

FreeBasic already has one foot in the grave. I don't see the original author coming back for a third round to save it.

Title: Re: FreeBasic
Post by: JRS on January 24, 2019, 10:50:57 PM
Quote from:  Offline Jeff Marshall@JRS
Hey JK, yes, I've seen all your updates.  It's only been a few days, dude!  Please allow me some time to review and respond.  I really want to get the 1.06 release out first.  Then we can be more liberal about what gets merged in to fbc/master.  Just after a release is a good time to add new features.

(http://upinsmokewelding.com/wp-content/uploads/2015/02/up-in-smoke-logo-raster-1-e1497203254705.jpg)
The FreeBasic 1.05 release - Jan 31, 2016 .



Charles,

You run circles around those dudes!


Title: Re: FreeBasic
Post by: Aurel on January 25, 2019, 10:07:41 AM
Quote
it might be better to distribute o2 in its 32bit form

smart thinking Charles  ;)
Title: Re: FreeBasic
Post by: Charles Pegge on January 27, 2019, 08:08:08 AM
I've been trying to follow that thread, and it certainly requires much head-fuel :)
Title: Re: FreeBasic
Post by: JRS on January 27, 2019, 08:22:22 AM
It's like musical chairs as to who is steering and why.

FreeBasic as a BASIC to C translator sucks. The PB and FB folks should get behind O2. The original author of FB abandoned the project. Maybe that should be taken as a hint.