forked from nanochess/bootBASIC
-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
179 lines (123 loc) · 4.47 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
bootBASIC_64bit is an implementation of bootBASIC for macOS by @taisukef
https://fukuno.jig.jp/2853
also bootBASIC_32bit is an implementation of bootBASIC for macOS by @taisukef
https://fukuno.jig.jp/2729
Use this command line on macOS:
sh c.sh
see also original README of bootBASIC
_ _ ______ ___ _____ _____ _____
| | | | | ___ \/ _ \ / ___|_ _/ __ \
| |__ ___ ___ | |_| |_/ / /_\ \\ `--. | | | / \/
| '_ \ / _ \ / _ \| __| ___ \ _ | `--. \ | | | |
| |_) | (_) | (_) | |_| |_/ / | | |/\__/ /_| |_| \__/\
|_.__/ \___/ \___/ \__\____/\_| |_/\____/ \___/ \____/
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. (-> case insensitive in 64bit)
Line numbers can be 1 to 999.
26 variables are available (a-z)
Numbers (0-65535) can be entered and display as unsigned. (-> 64bit in 64bit)
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.
You can also use parentheses:
5+6*(10/2)
Variables and numbers can be used in expressions.
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
>> 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.