• Stars
    star
    338
  • Rank 120,861 (Top 3 %)
  • Language
    Assembly
  • License
    BSD 2-Clause "Sim...
  • Created almost 5 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

bootBASIC is a BASIC language in 512 bytes of x86 machine code.
 _                 _  ______  ___   _____ _____ _____ 
| |               | | | ___ \/ _ \ /  ___|_   _/  __ \
| |__   ___   ___ | |_| |_/ / /_\ \\ `--.  | | | /  \/
| '_ \ / _ \ / _ \| __| ___ \  _  | `--. \ | | | |    
| |_) | (_) | (_) | |_| |_/ / | | |/\__/ /_| |_| \__/\
|_.__/ \___/ \___/ \__\____/\_| |_/\____/ \___/ \____/

bootBASIC interpreter in 512 bytes (boot sector or COM file)
by Oscar Toledo G. Jul/22/2019

http://nanochess.org
https://github.com/nanochess

This is an integer BASIC language interpreter.

It's compatible with the 8088 processor (the original IBM PC). 

If you want to assemble it, you must download the Netwide Assembler
(nasm) from www.nasm.us

Use this command line:

  nasm -f bin basic.asm -Dcom_file=1 -o basic.com
  nasm -f bin basic.asm -Dcom_file=0 -o basic.img

Tested with VirtualBox for Mac OS X running Windows XP running this
interpreter, it also works with DosBox and probably with qemu:

  qemu-system-x86_64 -fda basic.img

Enjoy it!


 _   _             _      __  __                    _ 
| | | |___ ___ _ _( )___ |  \/  |__ _ _ _ _  _ __ _| |
| |_| (_-</ -_) '_|/(_-< | |\/| / _` | ' \ || / _` | |
 \___//__/\___|_|   /__/ |_|  |_\__,_|_||_\_,_\__,_|_|

        
Line entry is done with keyboard, finish the line with Enter.
Only 19 characters per line as maximum.
        
Backspace can be used, don't be fooled by the fact
that screen isn't deleted (it's all right in the buffer).
        
All statements must be in lowercase.

Line numbers can be 1 to 999.

26 variables are available (a-z)

Numbers (0-65535) can be entered and display as unsigned.
       
To enter new program lines:
  10 print "Hello, world!"
        
To erase program lines:
  10
        
To test statements directly (interactive syntax):
  print "Hello, world!"
        
To erase the current program:
  new
        
To run the current program:
  run
        
To list the current program:
  list
        
To exit to command-line:
  system
        
Statements:
  var=expr        Assign expr value to var (a-z)
        
  print expr      Print expression value, new line
  print expr;     Print expression value, continue
  print "hello"   Print string, new line
  print "hello";  Print string, continue
        
  input var       Input value into variable (a-z)
        
  goto expr       Goto to indicated line in program
        
  if expr1 goto expr2
              If expr1 is non-zero then go to line,
              else go to following line.
        
Examples of if:
        
  if c-5 goto 20  If c isn't 5, go to line 20
        
Expressions:
        
  The operators +, -, / and * are available with
  common precedence rules and signed operation.
  Integer-only arithmetic.
        
  You can also use parentheses:
        
     5+6*(10/2)
        
  Variables and numbers can be used in expressions.

  The rnd function (without arguments) returns a
  value between 0 and 255.
        
Sample program (counting 1 to 10):
        
10 a=1
20 print a
30 a=a+1
40 if a-11 goto 20
        
Sample program (Pascal's triangle, each number is the sum
of the two over it):
        
10 input n
20 i=1
30 c=1
40 j=0
50 t=n-i
60 if j-t goto 80
70 goto 110
80 print " ";
90 j=j+1
100 goto 50
110 k=1
120 if k-i-1 goto 140
130 goto 190
140 print c;
150 c=c*(i-k)/k
160 print " ";
170 k=k+1
180 goto 120
190 print
200 i=i+1
210 if i-n-1 goto 30

Sample program of guessing the dice:

10 print "choose ";
20 print "a number ";
30 print "(1-6)"
40 input a
50 b=rnd
60 b=b-b/6*6
70 b=b+1
80 if a-b goto 110
90 print "good"
100 goto 120
110 print "miss"
120 print b


>> LINKS <<

Taisuke Fukuno made a 64-bit version of bootBASIC for
Mac OS X, a small article about it is available at:

    https://fukuno.jig.jp/2853

  Source code:
    https://github.com/taisukef/bootBASIC_64bit

dlinyj has created a fork of bootBASIC that can run from
the ROM of a network card. It is available here:
  
    https://github.com/dlinyj/bootBASIC


>> ATTENTION <<        

Do you would like more details on the inner workings? This program
is fully commented in my new book Programming Boot Sector Games
and you'll also find a 8086/8088 crash course!

Now available from Lulu:

  Soft-cover
    http://www.lulu.com/shop/oscar-toledo-gutierrez/programming-boot-sector-games/paperback/product-24188564.html

  Hard-cover
    http://www.lulu.com/shop/oscar-toledo-gutierrez/programming-boot-sector-games/hardcover/product-24188530.html

  eBook
    https://nanochess.org/store.html

These are some of the example programs documented profusely
in the book:

  * Guess the number.
  * Tic-Tac-Toe game.
  * Text graphics.
  * Mandelbrot set.
  * F-Bird game.
  * Invaders game.
  * Pillman game.
  * Toledo Atomchess.
  * bootBASIC language.

More Repositories

1

bootOS

bootOS is a monolithic operating system in 512 bytes of x86 machine code.
Assembly
1,758
star
2

Invaders

Invaders game in 512 bytes (boot sector)
Assembly
506
star
3

Pillman

Pillman boot sector game, a yellow thing eats pills and is chased by monsters.
Assembly
314
star
4

tinyasm

Tiny assembler for 8086/8088, able to run over DOS for 8086/8088 machines.
Assembly
181
star
5

cubicDoom

A ray-casting game in 512 bytes of x86 machine code
Assembly
154
star
6

Toledo-Atomchess

Toledo Atomchess is the world's smallest chess program in x86 assembly code
Assembly
112
star
7

bootRogue

bootRogue, a roguelike game that fits in a boot sector (510 bytes)
Assembly
98
star
8

fbird

A boot sector game in text mode
Assembly
86
star
9

pi

Pi number calculator using 8088 assembly language
Assembly
61
star
10

bootle

Bootle (a Wordle clone in a x86 boot sector)
Assembly
55
star
11

book8088

Examples from my book Programming Boot Sector Games
Assembly
45
star
12

IntyBASIC

IntyBASIC compiler for Intellivision (CP1610 processor)
C++
32
star
13

pretty6502

A pretty printer for 6502, Z80, CP1610, TMS9900, and 8088 assembler code
C
28
star
14

bricks

A game of bricks and paddle on one boot sector (510 bytes)
Assembly
26
star
15

book-Atari

Examples from my book Programming Games for Atari 2600
Assembly
23
star
16

Atomchess-6502

Toledo Atomchess for Atari VCS/2600
Assembly
23
star
17

z80rogue

A Roguelike game for MSX
Assembly
23
star
18

Pletter

Pletter compressor, used in MSX/Colecovision games
C
19
star
19

heart

x86 16-bit program drawing the heart curve equation
Assembly
13
star
20

240pTestSuite_colecovision

240p Test Suite for Colecovision
Assembly
11
star
21

Zombie-Near

Zombie Near for MSX, Colecovision, Memotech, Tatung Einstein and Spectravideo.
Assembly
10
star
22

Ttris

Ttris is a tetraminoes game for TRS-80 Model 1/3 computers.
Assembly
10
star
23

lights

Follow the Lights boot sector game in only 510 bytes of x86 machine code.
Assembly
10
star
24

gasm80

Gasm80: Generic assembler for Z80
C
9
star
25

Space-Raid

Space Raid game for Atari VCS/2600
Assembly
8
star
26

sphere

Draws a wireframe sphere in Javascript and exports it to GIF file
JavaScript
7
star
27

Space-Raid-Inty

Space Raid for Intellivision
Assembly
7
star
28

c6502

Atari VCS 6502 to IntyBASIC compiler
C
6
star
29

ti994a

TI994A snippets (Astro Cube and Hello)
Assembly
4
star
30

IntyColor

Utility for conversion of BMP images to Intellivision screen format
C
2
star
31

psg2bas

Convert CoolCV PSG log files into IntyBASIC compilable program
C
1
star
32

bootLogo

Logo language in 508 bytes (x86 boot sector)
Assembly
1
star