flat assembler
Message board for the users of flat assembler.

Index > Tutorials and Examples > Hobby BASIC, a simple yet powerful BASIC interpreter

Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next
Author
Thread Post new topic Reply to topic
Picnic



Joined: 05 May 2007
Posts: 1460
Location: Piraeus, Greece
Picnic 19 Jan 2021, 20:39
Post removed by author.

_________________
Hobby BASIC Interpreter


Last edited by Picnic on 27 Apr 2026, 10:04; edited 12 times in total
Post 19 Jan 2021, 20:39
View user's profile Send private message Visit poster's website Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 20980
Location: In your JS exploiting you and your system
revolution 19 Jan 2021, 22:26
Running unaudited code directly from the Internet.

Nothing could possibly go wrong. Razz
Post 19 Jan 2021, 22:26
View user's profile Send private message Visit poster's website Reply with quote
DimonSoft



Joined: 03 Mar 2010
Posts: 1228
Location: Belarus
DimonSoft 20 Jan 2021, 14:21
Guys, please, don’t say a word about JS Smile
Post 20 Jan 2021, 14:21
View user's profile Send private message Visit poster's website Reply with quote
Picnic



Joined: 05 May 2007
Posts: 1460
Location: Piraeus, Greece
Picnic 22 Jan 2021, 13:12
Post removed by author.

_________________
Hobby BASIC Interpreter


Last edited by Picnic on 27 Apr 2026, 10:04; edited 18 times in total
Post 22 Jan 2021, 13:12
View user's profile Send private message Visit poster's website Reply with quote
Picnic



Joined: 05 May 2007
Posts: 1460
Location: Piraeus, Greece
Picnic 02 Jul 2021, 09:42
Post removed by author.

_________________
Hobby BASIC Interpreter


Last edited by Picnic on 27 Apr 2026, 10:04; edited 25 times in total
Post 02 Jul 2021, 09:42
View user's profile Send private message Visit poster's website Reply with quote
pabloreda



Joined: 24 Jan 2007
Posts: 122
Location: Argentina
pabloreda 03 Jul 2021, 00:05
Very nice project picnic!

congrat!
Post 03 Jul 2021, 00:05
View user's profile Send private message Visit poster's website Reply with quote
Picnic



Joined: 05 May 2007
Posts: 1460
Location: Piraeus, Greece
Picnic 14 Feb 2022, 11:48
Post removed by author.

_________________
Hobby BASIC Interpreter


Last edited by Picnic on 27 Apr 2026, 10:05; edited 12 times in total
Post 14 Feb 2022, 11:48
View user's profile Send private message Visit poster's website Reply with quote
Picnic



Joined: 05 May 2007
Posts: 1460
Location: Piraeus, Greece
Picnic 30 Nov 2022, 10:01
Post removed by author.

_________________
Hobby BASIC Interpreter


Last edited by Picnic on 27 Apr 2026, 10:05; edited 15 times in total
Post 30 Nov 2022, 10:01
View user's profile Send private message Visit poster's website Reply with quote
Picnic



Joined: 05 May 2007
Posts: 1460
Location: Piraeus, Greece
Picnic 27 Dec 2022, 14:17
Post removed by author.

_________________
Hobby BASIC Interpreter


Last edited by Picnic on 27 Apr 2026, 10:05; edited 18 times in total
Post 27 Dec 2022, 14:17
View user's profile Send private message Visit poster's website Reply with quote
Picnic



Joined: 05 May 2007
Posts: 1460
Location: Piraeus, Greece
Picnic 12 Jan 2023, 09:55
Post removed by author.

_________________
Hobby BASIC Interpreter


Last edited by Picnic on 27 Apr 2026, 10:05; edited 17 times in total
Post 12 Jan 2023, 09:55
View user's profile Send private message Visit poster's website Reply with quote
al_Fazline



Joined: 24 Oct 2018
Posts: 54
al_Fazline 12 Jan 2023, 15:08
Hello, Picnic. Is there a way to run it on GNU+Linux without wine/emulation? Windows is kinda dated by now, people are switching away from it.
Post 12 Jan 2023, 15:08
View user's profile Send private message Reply with quote
Picnic



Joined: 05 May 2007
Posts: 1460
Location: Piraeus, Greece
Picnic 13 Jan 2023, 08:05
Post removed by author.

_________________
Hobby BASIC Interpreter


Last edited by Picnic on 27 Apr 2026, 10:05; edited 9 times in total
Post 13 Jan 2023, 08:05
View user's profile Send private message Visit poster's website Reply with quote
Picnic



Joined: 05 May 2007
Posts: 1460
Location: Piraeus, Greece
Picnic 23 Jan 2023, 14:48
Post removed by author.

_________________
Hobby BASIC Interpreter


Last edited by Picnic on 27 Apr 2026, 10:05; edited 47 times in total
Post 23 Jan 2023, 14:48
View user's profile Send private message Visit poster's website Reply with quote
386



Joined: 11 Nov 2023
Posts: 28
Location: Ukraine (Ruthenia)
386 15 Nov 2023, 12:01
Wow! It looks great! Smile

But why the 58,5 KB program running tiny examples uses 397 MB of memory? Sad

Could you reduce it to 39,7 MB or, even better, to 3,97 MB?

My system is Windows 7 x64 SP1.
Post 15 Nov 2023, 12:01
View user's profile Send private message Reply with quote
Picnic



Joined: 05 May 2007
Posts: 1460
Location: Piraeus, Greece
Picnic 15 Nov 2023, 17:01
It plays great too, I've tested it on different versions of Windows.
Thanks for the feedback 386 I can definitely reduce it to have very low startup requirements.
Anyway, I uploaded a new version.
The memory footprint should be should be around 30 MB now.


Last edited by Picnic on 15 Nov 2023, 22:48; edited 4 times in total
Post 15 Nov 2023, 17:01
View user's profile Send private message Visit poster's website Reply with quote
386



Joined: 11 Nov 2023
Posts: 28
Location: Ukraine (Ruthenia)
386 15 Nov 2023, 22:32
Thanks, Picnic! 30 MB is much better than 397 MB! Smile

Just curious: is it possible to make 3 MB or 300 KB?
Post 15 Nov 2023, 22:32
View user's profile Send private message Reply with quote
386



Joined: 11 Nov 2023
Posts: 28
Location: Ukraine (Ruthenia)
386 15 Nov 2023, 22:36
I'm trying to understand, what you have changed:
Code:
HB_OLD.EXE                                                               HB_NEW.EXE

00469004:  61                    popad                                |  00469004:  4D                    dec ebp
00469005:  93                    xchg eax, ebx                        |  00469005:  F8                    clc 
00469006:  50                    push eax                             |  00469006:  54                    push esp
00469024:  61                    popad                                |  00469024:  4D                    dec ebp
00469025:  93                    xchg eax, ebx                        |  00469025:  F8                    clc 
00469026:  50                    push eax                             |  00469026:  54                    push esp
0046903C:  61                    popad                                |  0046903C:  4D                    dec ebp
0046903D:  93                    xchg eax, ebx                        |  0046903D:  F8                    clc 
0046903E:  50                    push eax                             |  0046903E:  54                    push esp
------------------------------------------------------------------------------------------------------------------------------------------
00469053:  006193                add byte ptr [ecx-6Dh], ah           |  00469053:  004DF8                add byte ptr [ebp-08h], cl
00469056:  50                    push eax                             |  00469056:  54                    push esp
0046906B:  006193                add byte ptr [ecx-6Dh], ah           |  0046906B:  004DF8                add byte ptr [ebp-08h], cl
0046906E:  50                    push eax                             |  0046906E:  54                    push esp
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
004690C5:  0001                  add byte ptr [ecx], al               |  004690C5:  0002                  add byte ptr [edx], al
004690CD:  0001                  add byte ptr [ecx], al               |  004690CD:  0002                  add byte ptr [edx], al
------------------------------------------------------------------------------------------------------------------------------------------
0046920B:  0031                  add byte ptr [ecx], dh               |  0046920B:  0032                  add byte ptr [edx], dh
0046923B:  0031                  add byte ptr [ecx], dh               |  0046923B:  0032                  add byte ptr [edx], dh
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
0046E021:  0031                  add byte ptr [ecx], dh               |  0046E021:  0032                  add byte ptr [edx], dh
------------------------------------------------------------------------------------------------------------------------------------------
00471DDF:  0031                  add byte ptr [ecx], dh               |  00471DDF:  0032                  add byte ptr [edx], dh
------------------------------------------------------------------------------------------------------------------------------------------
0047201F:  6800008005            push 05800000h                       |  0047201F:  6800002000            push 00200000h
0047202E:  6800005800            push 00580000h                       |  0047202E:  6800002000            push 00200000h
00472038:  A300494000            mov dword ptr [00404900h], eax       |  00472038:  A308494000            mov dword ptr [00404908h], eax
0047203D:  6800008005            push 05800000h                       |  0047203D:  6800002000            push 00200000h
00472047:  A308494000            mov dword ptr [00404908h], eax       |  00472047:  A3FC484000            mov dword ptr [004048FCh], eax
0047204C:  6800008005            push 05800000h                       |  0047204C:  6800002000            push 00200000h
00472056:  A3FC484000            mov dword ptr [004048FCh], eax       |  00472056:  A30C494000            mov dword ptr [0040490Ch], eax
0047205B:  6800008005            push 05800000h                       |  0047205B:  6800002000            push 00200000h
00472065:  A30C494000            mov dword ptr [0040490Ch], eax       |  00472065:  A300494000            mov dword ptr [00404900h], eax
0047206A:  6800005800            push 00580000h                       |  0047206A:  6800002000            push 00200000h
00472079:  6800005800            push 00580000h                       |  00472079:  6800002000            push 00200000h
00472088:  6800005800            push 00580000h                       |  00472088:  6800002000            push 00200000h
00472097:  6800100000            push 00001000h                       |  00472097:  6800000100            push 00010000h
004720A6:  6800100000            push 00001000h                       |  004720A6:  6800000100            push 00010000h
004720B5:  6800100000            push 00001000h                       |  004720B5:  6800000100            push 00010000h
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
00472034:  C08EFFFFA30049        ror byte ptr [esi+00A3FFFFh], 000000 |  00472034:  C08EFFFFA30849        ror byte ptr [esi+08A3FFFFh], 00000049h
0047203F:  008005E8B18E          add byte ptr [eax-714E17FBh], al     |  0047203F:  0020                  add byte ptr [eax], ah
                                                                      |  00472041:  00E8                  add al, ch
                                                                      |  00472043:  B18E                  mov cl, 8Eh
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
    
Post 15 Nov 2023, 22:36
View user's profile Send private message Reply with quote
Picnic



Joined: 05 May 2007
Posts: 1460
Location: Piraeus, Greece
Picnic 15 Nov 2023, 22:46
Hobby BASIC uses one main internal structure for all data types, 88 bytes in size.
This practically means that, for example, every 1 mb of memory I allocate, I get about 12000 elements (strings, variables, arrays, labels, etc.)
More than enough for a simple toy interpreter.
But maybe I should let the user decide the size of memory they want to use.

I changed a few values in memory allocation calls at startup. That's all. Smile


Last edited by Picnic on 16 Nov 2023, 12:00; edited 3 times in total
Post 15 Nov 2023, 22:46
View user's profile Send private message Visit poster's website Reply with quote
386



Joined: 11 Nov 2023
Posts: 28
Location: Ukraine (Ruthenia)
386 15 Nov 2023, 22:54
Quote:
But maybe I should let the user decide the size of memory they want to use.
Wow! That would be extremely super!

Users do like to decide! Smile
Post 15 Nov 2023, 22:54
View user's profile Send private message Reply with quote
Picnic



Joined: 05 May 2007
Posts: 1460
Location: Piraeus, Greece
Picnic 15 Nov 2023, 23:01
It's easy to implement, i'll think about that. Thanks again for your feedback 386. Quite useful !
Post 15 Nov 2023, 23:01
View user's profile Send private message Visit poster's website Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  
Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next

< Last Thread | Next Thread >
Forum Rules:
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 vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2026, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.