forked from verhas/ScriptBasic
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsource.txt
More file actions
2748 lines (2342 loc) · 118 KB
/
source.txt
File metadata and controls
2748 lines (2342 loc) · 118 KB
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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
%file macros.jim
{#sep/<%/%>}
<%#define BUILD=<%#include ../build.txt%>%>
<%#define VERSION=<%#include ../version.txt%>%>
Note that this is a macro included file and thus any text outside macro definitions is comment.
Because we use a different font size, as Verdana best looks size="2" therefore the TT font has to be explicitly set to size "3", otherwise we get too tiny TT characters.
<%#define ttsize="3"%>
This is the font face that we use for the site. Most of the browsers/OS support Verdana. In case some does not the font Arial is still looks similar.
<%#define FontFace=Verdana, Arial%>
Because the TT font setting has to change the size of the font this macro has to be used to display "code" text.
<%#define tt/x=<font size=<%ttsize%>><tt>x</tt></font>%>
This macro sets the default font. This has to be used when starting table elements, because some browsers set the font to the default inside tables.
<%#define SetFont=<FONT SIZE="2" FACE="<%FontFace%>" COLOR="BLACK">%>
The colors of the site.
<%#define FRAMECOLOR=#C7C1A7%>
<%#define BODYCOLOR=#C7C1A7%>
<%#define LINEC=#B0AA8E%>
<%#define SEPLINEC=#C7C1A7%>
Berkeley references ScriptBasic and therefore whenever Berkeley DB is mentioned this macro has to be used.
<%#define Berkeley=<a href="http://www.sleepycat.com">Berkeley</A>%>
<%@define DOWNLOADSAMPLES/XXX=
<A HREF="texi/XXX">download</A> the individual files in <%tt tar.gz%> format<%#dir|texi|-o XXX|(<%$file$size%> bytes)%> <%EXTRACT%> <P>
%>
<%@define DOWNLOAD/XXX=<a href="../download/XXX"><%tt XXX%></A> <%#dir|../download|-o XXX|(<%$file$size%> bytes)%>%>
<%#define Example/text=<FONT SIZE=<%ttsize%> FACE="Courier CE,Courier"><PRE>
text
</PRE></FONT>%>
<%@define DOWNLOADOC/XXX=<a href="../html/texi/XXX"><%tt XXX%></A> <%#dir|../html/texi|-o XXX|(<%$file$size%> bytes)%>%>
<%#define Example/text=<FONT SIZE=<%ttsize%> FACE="Courier CE,Courier"><PRE>
text
</PRE></FONT>%>
<%#define SUBSCRIBE/X=<a target="_top" href="http://scriptbasic.com/mailman/listinfo/scriptbasic">X</a>%>
<%@define DOCUMENT/TITLE/XXX/DESCRIPTION=
<LI><FONT SIZE="+1"><a target="_top" href="texi/XXX/XXX_toc.html">TITLE</A></FONT><BR>
DESCRIPTION
<BR><FONT SIZE="1">
<%DOCULIST XXX%></FONT><P>
%>
<%@define DOCREF/XYZ=<a target="_top" href="texi/XYZ/XYZ_toc.html">XYZ</A></FONT>
%>
<%@define DOWNLOADSECTION/X/Y=<TR><TD BGCOLOR="BLACK"><FONT SIZE="3"
FACE="<%FontFace%>" COLOR="WHITE">X</FONT></TD><TR>
<TR><TD VALING="TOP"><FONT SIZE="2" FACE="<%FontFace%>">
Y
</FONT></TD></TR>
%>
<%@define DOCULIST/XXX=
<%DOC/XXX/html%>
<%DOC/XXX/html.gz%>
<a target="_top" href="texi/XXX/XXX_toc.html">html/split</a>(N/A)
<%DOC/XXX/html.tgz%>
<%DOC/XXX/pdf%>
<%DOC/XXX/pdf.gz%>
<%DOC/XXX/ps.gz%>
<%DOC/XXX/texi%>
<%DOC/XXX/texi.gz%>
<%DOC/XXX/chm%>
<%DOC/XXX/rtf%>
<%DOC/XXX/rtf.gz%>
%>
<%@define DOC/NAME/EXTENSION=
<%#dir|texi|-o NAME.EXTENSION|<a target="_top" href="texi/<%$file$name%>">EXTENSION</A>(<%$file$size%>)%>
%>
<%@define START/X=<HTML>
<HEAD>
<TITLE>X</TITLE>
<link rel="stylesheet" href="s.css">
</HEAD>
<BODY>
<H1>X</H1>
<HR align=left>
<TABLE BORDER="0"><TR><TD VALIGN=TOP><%MENUES%></TD><TD VALIGN=TOP><FONT FACE="<%FontFace%>" size="2">
%>
<%#define END=</FONT></TD></TR></TABLE>
<%#format time=MONTH DD, YEAR HH:0m:0s%><BR>
<FONT SIZE="1">This page was generated <%#time%></FONT>
</BODY></HTML>%>
<%#define MENU/XXX/YYY=<FONT SIZE="1" FACE="<%FontFace%>" COLOR="BLACK"><a href="XXX.html"
>[YYY]</A><BR>
%>\
<%#define MENUES=
<%MENU main MAIN%>
<%MENU news News%>
<%MENU general Intro%>
<%MENU feature Features%>
<%MENU download Download%>
<%MENU install Installation%>
<%MENU support Support%>
<%MENU suppro Support+%>
<%MENU documentation Docu%>
<%MENU audio Tutorial%>
<%MENU xxxbuglist Bugs%>
<%MENU mirror Mirror%>
<%MENU author Authors%>
<%MENU future Future%>
<%MENU license License%>
<%MENU win98setup Win98 Setup Bug%>
<%SUBSCRIBE [Subscribe]%>
%>
<%#define UNCOMPRESS=To uncompress the document after download use WinZIP under WIN32 or <%tt gunzip%> under UNIX.%>
<%#define EXTRACT=To extract this type of archive use WinZIP under WIN32 or <%tt tar%> under UNIX.%>
<%@define BUGREPORT/ID/VERSION/SEVERITY/DESCRIPTION/REASON/SOLUTION/WORKAROUND/ACK=
<%START Bug Report ID%>
<TABLE BORDER="0">
<TR><TD><%SetFont%>Bug Report id=</FONT></TD><TD><%tt ID%></TD></TR>
<TR><TD><%SetFont%>Affected versions:</FONT></TD><TD><%tt VERSION%></TD></TR>
<TR><TD><%SetFont%>Severity:</FONT></TD><TD><%tt SEVERITY%></TD></TR>
</TABLE>
<HR>
<H2>Bug Description</H2>
DESCRIPTION
<H2>Bug Reason, What Causes the Bug</H2>
REASON
<H2>Solution</H2>
SOLUTION
<H2>Bug Workaround Until Solution is Available</H2>
WORKAROUND
<H2>Acknowledgement</H2>
ACK
<%END%>
%>
%file s.css.jam
A:visited, A:hover, A:link { text-decoration: none }
A:visited { color: grey }
A:hover { background: #C7C1A7 }
BODY {
font-family: Verdana;
font-size: 9pt;
background: <%BODYCOLOR%>;
scrollbar-face-color: white;
scrollbar-highlight-color: black;
scrollbar-shadow-color: =#C7C1A7;
scrollbar-arrow-color: =#C7C1A7;
scrollbar-track-color: #C7C1A7;
scrollbar-base-color: =#C7C1A7;
}
<%@comment ---------------------------------------------------------------------------------%>
%file index.html.jam
<HTML>
<HEAD>
<TITLE>ScriptBasic the ultimate scripting tool</TITLE>
</HEAD>
<FRAMESET ROWS="90,*" BORDER=0>
<FRAME SRC="head.html" NAME="HEAD" NORESIZE SCROLLING=NO>
<FRAME SRC="news.html" NORESIZE SCROLLING=AUTO>
</FRAMESET>
</HTML>
%file head.html.jam
<HTML>
<HEAD>
<TITLE>ScriptBasic</TITLE>
<link rel="stylesheet" href="s.css">
<STYLE>
BODY { font-family: Verdana; font-size: 9pt; background: <%FRAMECOLOR%> }
</STYLE>
</HEAD>
<BODY>
<table border="0"><tr><td><img src="logo.jpg" border="0" align="left"></TD><TD valign=bottom><FONT FACE="<%FontFace%>" size=1>
<B>the basic scripting language.</b></FONT></td></tr></table>\
<FONT FACE="<%FontFace%>" SIZE="1" COLOR="BLACK">\
<a target="_top" href="http://www.scriptbasic.com">Official home page</a> <%SetFont%><FONT SIZE=1>Last updated <%#date%></FONT></FONT><BR>
<%@comment <a target="_top" href="http://scriptbasic.midian.net/">Mirror at Midian</a>
(may lag one day)<br>%>\
<a target="_top" href="http://sourceforge.net/projects/scriptbasic/">sourceforge.net project page</a><BR>
<a href="suppro.html" target="_top">Professional Support for ScriptBasic</a>
</FONT></TD></TR></TABLE>
</BODY></HTML>
%file audio.html.jam
<%START RealAudio Slide show tutorials%>
Here you can find slide shows with real audio voice that give you introductory information
on ScriptBasic. We plan to deliver more and more such tutorials to ease learning and use of
ScriptBasic.
<p>
To see the slides and listed to the voice first click on the link named AUDIO. When the real player starts click on
the link named SLIDES in the same line to get to the toc of the presentation. In case there is a slow link somewhere
between you and our server download may be slow. In such a situation you are requested to press the pause button to
wait for the first picture and press play
to listen to the text, when the picture is downloaded.
<p>
To listen to the presentation off-line you can download the real audio file (right mouse click and select <%tt Save As%> on the link AUDIO) and you can also download the PowerPoint97 presentation using the link named PPT.
<p>
The presentations are prepared before the audio file is ready so you may see some broken links. Also check the
mirror site. The audio files may be uploaded between builds as they are ready.
<p>
<%#define SLIDH/X=<TR><TD COLSPAN="4" BGCOLOR="<%LINEC%>"><%SetFont%><B>X</B></TD></TR>%>
<%#define SLIDES/X/Y=<TR>
<TD VALIGN="TOP" BGCOLOR="<%LINEC%>"><%SetFont%><A HREF="../slides/X.ra">AUDIO</A></TD>
<TD VALIGN="TOP" BGCOLOR="<%LINEC%>"><%SetFont%><A TARGET="pres" HREF="../slides/X/X.htm">SLIDES</A></TD>
<TD VALIGN="TOP" BGCOLOR="<%LINEC%>"><%SetFont%><A TARGET="_top" HREF="../slides/X.ppt">PPT</A></TD>
<TD VALIGN="TOP" BGCOLOR="<%LINEC%>"><%SetFont%>Y</TD></TR>
<TD COLSPAN=4 BGCOLOR="<%SEPLINEC%>"><HR></TD>
%>
<TABLE>
<%SLIDH How to use these presentations%>
<%SLIDES usingpres How to use these presentations? 497KB 9min%>
<%SLIDH Introduction to ScriptBasic%>
<%SLIDES intro Introduction to ScriptBasic, what it is, why do we need a new BASIC language interpreter. 1.4MB 12min%>
<%SLIDH Language Features%>
<%SLIDES langintro Introduction to the language features. 2MB 17min%>
<%SLIDH Memory Management%>
<%SLIDES memory Introduction to memory management. 848KB, 14min%>
<%SLIDH Main modules%>
<%SLIDES runflow How ScriptBasic works, what steps lead to program execution. 665KB, 11min%>
<%SLIDH Symbol table%>
<%SLIDES sym The symbol table handlign module 870K,7min 26sec%>
<%SLIDH Embeddign ScriptBasic%>
<%SLIDES embed How to embed ScriptBasic into an application. 1.45MB,25min%>
<%SLIDH Syntax analysis%>
<%SLIDES syntax How the syntax analysis of ScriptBasic works. 2.1MB,35min%>
<%SLIDH Multi-thread implementation of ScriptBasic%>
<%SLIDES mt How to write multi-thread modules for ScriptBasic 2MB, 35min%>
</TABLE>
<%END%>
%file versionnumbering.html.jam
<%START Version numbering of the interpreter%>
ScriptBasic versions are numbered with three numbers of the form <%tt M.m.b%>
<p>
The first number <%tt M%> is the major version number. This is incremented rarely, only when there is a significantly different version of the interpreter is released.
<p>
The second number <%tt m%> is the minor version number. This is incremented when there is some new feature in the core language or interpreter. <%tt m%> is reset to zero when <%tt M%> is incremented.
<p>
The last number <%tt b%> is the build number. This is incremented for each release even if there were bug fixes only compared to the previous release. <%tt b%> is reset to zero when <%tt m%> changes.
<p>
Versions prior to version <%tt 2.0.0%> were numbered <%tt 1.0bX%>. This is the same numbering, but ...
<br>
The letter <%tt b%> was used to separate the build number from the major and minor version numbers. This led to confusion naming the version BETA, which means a non-stable test version. I never released "test" version of ScriptBasic.
<p>
The minor version of <%tt 1.x%> remained always zero. The last version in this series was <%tt 1.0b30%> that was followed by <%tt 2.0.0%>
<p>
<b>Note:</b>
From release to release there can be change in the interpreter and in the language. If there is a change in the interpreter but the language you may expect more performance but the programs interpreted by the new and the previous version are the same. If the language changes it also means that some programs that are executable by the new version may not work with the previous version.
<p>
The language was not changed in incompatible way. The interpreter interprets a language, which is backward compatible with any previous version. The exception to this rule is that new versions may not be compatible with an error in previous versions or with features implemented but undocumented or implicitly or explicitly declared as non-guaranteed.
<p>
There are other versions in addition to the version of the interpreter. One important version number is the module interface version. This is the version of the calling interface that ScriptBasic uses to load and start external modules. To see the actual version of this interface have a look at the definition of the macro <%tt INTERFACE_VERSION%> in the file <%tt basext.c%>, or just execute ScriptBasic STANDARD variation with the command line switch <%tt -v%>.
<p>
Modules report the interface versions they can work together when loaded. If that is not compatible with the version of the actual interpreter the module is not loaded and error is raised. This avoids mysterious errors due to incompatible interfaces.
<p>
Another version is the internal preprocessor interface version. This is the version of the interface that ScriptBasic uses to load and start internal preprocessors. To see the actual version of this interface have a look at the definition of the macro <%tt IP_INTERFACE_VERSION%> in the file <%tt prepext.c%>.
<p>
Internal preprocessors report the interface versions they can work together when loaded. If that is not compatible with the version of the actual interpreter the module is not loaded and error is raised. This avoids mysterious errors due to incompatible interfaces.
<%END%>
%file news.html.jam
<%START What is new in ScriptBasic v2.0.0%>
Version 2.0.0 is a new major version. The numbering of versions is radically changed.
Bug fixes and new features.
<P>
<B>New Features</B><P>
<i>Language features</i>
<ol>
<li>You can now alter the behavior of ScriptBasic in regards to undeclared variables inside functions. Undeclared variables inside functions were treated as global variables until now. From this version you can use the compiler directive <%tt declare option DefaultLocal%> to alter this behavior. The other way around is <%tt declare option DefaultGlobal%>. For more information please read the manual.
<li>Module <%tt T%> can serialize an array variable to XML. Unfortunately there is no currently implemented counter function to read the generated XML file back to an array.
<li>Mathematical functions <%tt gcd%> and <%tt lcm%> are defined and became reserved words, but are not implemented yet.
<li>Initial version of the module XML was added to the release.
<li>Floating numbers printed by the command <%tt print%> are printed with many more digits.
<li>The debugger handles the console controls under Windows positioning cursor, clearing the console screen and so on providing a more powerful interface towards the programmer.
</ol>
<i>Interpreter features</i>
<ol>
<li>The Eszter SB Application Engine now can bind on more than one interface and implement an experimental, BASIC programmable FTP daemon as well as the HTTP daemon. The FTP features are experimental, missing some core features and undocumented at the moment.
<li>The option <%tt -d%> was enhanced. Now it can be used on UNIX as well as on Windows to aid debugging when a module does not load. This option will print what libraries the module tries to load and also interface versions.
<li>Internal preprocessors need not be configured in the configuration file. The interpreter will find them based on the file name if they are stored in the directory where the module DLL/SO files are.
<li>The Windows setup program can handle the situation when some files or registry entries are not writable. In this case you can alter the permission during the setup and ask setup to retry the action. You can also tell the setup program to ignore the failure at your own risk.
</ol>
<i>Internal, Developer features</i>
<ol>
<li>The module interface macro <%tt basext_GetArgsF%> and the function implementing the argument handling for module functions was extended to handle pointer values stored in BASIC strings. Although this is not a safe way to implement handles in modules this may be the only effective way when there are really a lot of handles/pointers to be handled and exchanged by the module and the BASIC program.
<li>The helper program <%tt setup.pl%> was greatly enhanced. Type <%tt setup --help%> for more information.
</ol>
<P>
<B>Bug Fixes</B><P>
<ol>
<li>Mathematical functions were fixed. For example <%tt int%>, <%tt cint%>, <%tt fix%>, <%tt round%>, <%tt frac%> functions were corrected to handle large numbers that do not fit into a C <%tt long%>
<li>When you compiled a BASIC program to executable under Windows you had to start it writing the extension <%tt .exe%> on the command line attached to the name of the program. Now this is not needed anymore.
<li>Now you can have configuration sub items that contain no items at all. Formerly this was not handled by the configuration compilation system (it was a documented feature). Although it may not seem reasonable to have such a sub item in the configuration file, it may happen when someone comments out configuration items.
</ol>
<p>
Still you may be interested reading the old news of previous builds.
<ul>
<li><b>News of the versions 1.0.x</b>
<li><a href="news30.html">news of build30</A>
<li><a href="news29.html">news of build29</A>
<li><a href="news28.html">news of build28</A>
<li><a href="news27.html">news of build27</A>
<li><a href="news26.html">news of build26</A>
<li><a href="news25.html">news of build25</A>
<li><a href="news24.html">news of build24</A>
<li><a href="news23.html">news of build23</A>
<li><a href="news22.html">news of build22</A>
<li><a href="news21.html">news of build21</A>
<li><a href="news20.html">news of build20</A>
<li><a href="news19.html">news of build19</A>
<li><a href="news18.html">news of build18</A>
<li><a href="news17.html">news of build17</A>
</ul>
<p>
<%END%>
%file main.html.jam
<%START Introduction%>
This is ScriptBasic v<%VERSION%>.<%BUILD%> official home page. You
can get a short introductions on ScriptBasic,
you can download the compiled version of program as well as the
source code and documentation.
<p>
Use the menu items on the left to navigate.
<p>
<%#define mt/X/Y=<TR><TD VALIGN="TOP"><FONT SIZE="1" COLOR="BLUE"> [X] </FONT></TD><TD VALIGN="TOP"><FONT SIZE="2">Y</FONT></TD></TR>
<TR><TD COLSPAN="2"><HR COLOR="BLACK"></TD></TR>
%>
<TABLE BORDER="0">
<%mt MAIN is this page%>
<%mt News tells you what is new in the current build%>
<%mt Intro gives a general introduction. %>
<%mt Features in Short describes tha main architectural features of ScriptBasic, so you can decide if it is worth trying. %>
<%mt Download ScriptBasic leads you to the download page where you can download the source, the exe and the documentation. %>
<%mt Installation Instruction describes how to install the program. %>
<%mt Support helps you to get support in case you are lost in the mud. <%SUBSCRIBE Subscribe%> to the ScriptBasic mailing list!%>
<%mt Support+ is professional, commercial support%>
<%mt Docu mentation you can download the available documents and view them on-line%>
<%mt Tutorial slide shows with audio in RealAudio%>
<%mt Bugs describe the known bugs update%>
<%mt Mirror describes how to mirror ScriptBasic (any volunteer?)%>
<%mt Authors of the program of the program, in case you want to know who we are... %>
<%mt Future development some words about what we think we want to do%>
<%mt License conditions (it is free anyway, but not that free. need not pay)%>
<%mt Subscribe to the mailing list%>
</TABLE>
<p>
<%tt <a href="http://peter.verhas.com/indexe.html" target="_top">p.v.c</a>%>, the author.
<%END%>
%file general.html.jam
<%START General Introduction%>
This is a free BASIC interpreter. Is it just another after the so many costly and
free interpreters? Well, you can decide, here it goes:
<p>
ScriptBasic implements a <b>rich set of instructions</b> that are available under Win32 as well
as under Linux/UNIX. Programs written in ScriptBasic are portable unless you work hard
to insert some system specific code.
<p>
If you miss some functions in the language itself there are <b>external modules</b> that <b>implement several features</b>, like CGI handling, MySQL access, regular expressions, graphical user interface, NT/UNIX specific functions (in case you really need something system dependant) and several others.
<p>
If you need some more that is not currently available you can ask for it on the ScriptBasic mailing list or you can easily write your own modules in C. ScriptBasic internals, source code and interfaces are <b>well documented</b>. To get a jump start you can even listen to audio/slide show <b>tutorials</b>. <%SUBSCRIBE Subscribe%> to the mailing list now!
<p>
<b>ScriptBasic is fast</b>, it generates a compact internal code, which is interpreted. This internal code occupies a single, continuous memory chunk and is usually saved into a cache file. The cache file is automatically checked by ScriptBasic and thus it compiles the source only when needed.
<p>
You can also save this code into separate file and deliver it as your application <b>without giving out your source</b> code. This is to protect your intellectual property if you wish to use it. What is more ScriptBasic can be compiled to C and this way you can <B>generate standalone executable</B> on UNIX as well as on Win32 operating systems free of charge.
<p>
<b>To program web application</b> you can use ScriptBasic as a CGI interpreter, but there is even
a better way. ScriptBasic is integrated into a standalone webserver that executes ScriptBasic
programs in a single process without the CGI overhead lighting fast. Under Windows NT you can install
this web server as an NT service and use it several ways. This application named
Eszter SB Application Engine is supported by the CGI and the MT module allowing you to use in-memory
application and session variables without file read/write overhead.
<p>
Finally: ScriptBasic is <B>LGPL</B>. This means that you can use it, alter it, extend it, embed it.
The extra <b>L</B> before GPL says that you can embed it even into commercial application that you
sell for money. (In that case, however consider the commercial suport delivered by EMMAnet ScriptBasic
partners.)<font size="1">Note that some external modules use libraries that have their own licence!</font>
<p>
To get more information why we have created another BASIC interpreter and to let us tell you
why this is not a JABI (just another BASIC interpreter) see the
<a href="audio.html">on-line tutorials</a> with audio support
and the <a href="documentation.html">documentation</a>.
<%END%>
%file feature.html.jam
<%START Features in Short%>
The aims are painfully high. How do we want to reach this? Read the features we
designed ScriptBasic to have:
<ul>
<li><b><FONT SIZE="+1">BASIC</FONT></b> No question, this is the MOST important feature of ScriptBasic. There are a lot of people who can program BASIC and only BASIC. There are many people, who can not really program. Those who do not really know what programming is, and still: they write their five-liners in BASIC to solve their simple problems. They never write Perl, Tcl, Java or C.
Therefore it is BASIC.
<li><b><FONT SIZE="+1">FREE</FONT></B> The interpreter and all other software are distributed under the Lesser GPL licence, which means that the software can be used free of charge even for commercial projects.
<li><B>SUPPORTED</B> The software is continuously developing and is actively supported free of charge as well as on commercial base. To get free of charge support <%SUBSCRIBE subscribe%> to the ScriptBasic mailing list.
<li><B>SCRIPTING</B> language. Variables are typeless. You can store real numbers, integer numbers and strings in any variable. You can mix them and conversion is done automatically.
<li><B>PORTABLE</B> Available in C source and can be compiled on UNIXes as well as on Windows NT. There are precompiled binary setup packages from Linux (Debian and RedHat) and for Win32.
<li><B>4E LANGUAGE</B>, which means easy to extend, easy to embed. ScriptBasic was developed to provide clean and clear interfaces around it, and inside it. It is easy to embed the language to an application and use it as a macro language just like TCL. It is also easy to implement new built-in function and new commands. You can develop dynamically loaded libraries that ScriptBasic may load at run time.
<li><B>COMPILE </B> BASIC programs can be compiled to standalone executable. ScriptBasic creates pseudo compiled code, which is interpreted afterwards.
<ul>
<li>Syntax analysis is done at first and only syntactically perfect programs start to run.
<li>The compiled code is put into a continuous memory space and compiled code can be saved and loaded again to run without recompilation. This is vital for CGI scripts and is not available for most scripting programming languages.
<li>Compiled code is binary, not readable. Therefore you can develop and distribute programs and getting some help to protect your intellectual property. You need not give the source code.
<li>The compiled code can be saved into a text file having C programming language syntax. Compiling this file with a C compiler and linking with the ScriptBasic run-time library you get a standalone binary executable.
</ul>
<li><B>MULTI-THREAD</B> aware. All the code was designed to be thread-safe. You can embed the code into systems that run multiple interpreters in the same process. An example is the Eszter SB Engine variation of the interpreter, which is a standalone http daemon that runs several threads of execution of different BASIC scripts in a single process.
</ul>
<%END%>
%file download.html.jam
<%START Download ScriptBasic%>
You can download compiled code for Linux and Win32 platforms and source for all platforms. The source code is common for all platforms including Win32. You can download the source in two formats. The difference is mainly in packaging.
<p>
While downloading the code <%SUBSCRIBE subscribe%> to the ScriptBasic mailing list to get on-line support to install and use ScriptBasic.
<p>
<TABLE BORDER=0>
<%DOWNLOADSECTION UNIX
<%DOWNLOAD scriba-v<%VERSION%>b<%BUILD%>-source.tar.gz%> UNIX source
<br>
<%DOWNLOAD scriba-v<%VERSION%>b<%BUILD%>-1_i386.deb%> UNIX binaries in Debian package
<br>
<%DOWNLOAD scriba-<%VERSION%>b<%BUILD%>-1.src.rpm%> UNIX sources in RedHat package RPM
<br>
<%DOWNLOAD scriba-<%VERSION%>b<%BUILD%>-1.i386.rpm%> UNIX binaries in RedHat package RPM
%>
<%DOWNLOADSECTION WIN32
<%DOWNLOAD scriba-v<%VERSION%>b<%BUILD%>-source.zip%> source including documentation
<br>
<%DOWNLOAD scriba-v<%VERSION%>b<%BUILD%>-libs.zip%> libraries that come from some external source and are needed in case you want to recompile ScriptBasic on the WIN32 platform.
This includes library file for the <%Berkeley%> DB from Sleepycat Software, Inc.
<BR>
<font size="1">You have to download this file and extract it into the source directory if you want to compile the bdb module, but you do not dare to try to compile the <%Berkeley%> DB.
</font>
<BR>
<%DOWNLOAD scriba-v<%VERSION%>b<%BUILD%>-bin.zip%> Win32 binaries and documentation
<BR>
<%DOWNLOAD scriba-v<%VERSION%>b<%BUILD%>-exe.zip%> Win32 SETUP.EXE package
%>
<%DOWNLOADSECTION DOCUMENTS
<%DOWNLOAD html-v<%VERSION%>b<%BUILD%>.zip%> full documentation set in html.
<br>
<%DOWNLOAD chm-v<%VERSION%>b<%BUILD%>.zip%> full documentation set Microsoft Compiled html format.
<br>
<%DOWNLOAD pdf-v<%VERSION%>b<%BUILD%>.zip%> full documentation set in PDF.
<br>
<%DOWNLOAD text-v<%VERSION%>b<%BUILD%>.zip%> full documentation set in texi.
%>
<%DOWNLOADSECTION SAMPLES
<%DOWNLOADOC samplebas.tgz%> sample BASIC programs extracted from the documentation <%DOCREF samplebas%>
%>
<%DOWNLOADSECTION EXTERNAL
Visio GTK module and Socket Module from
Peter Van Eerten <a href="http://members.home.nl/peter.van.eerten"><%tt http://members.home.nl/peter.van.eerten%></A>
%>
</TABLE>
<p>
The Win32 files are created using WinZIP. Some users face problems uncompressing these files using PKZIP. Do use WinZIP to uncompress the files.
<%END%>
%file install.html.jam
<%START Installation%>
<LI><FONT SIZE="+1">Windows NT/W2K/WIN9x/WINME</FONT>
<BR>
Just extract the ZIP file into <%tt C:\ScriptBasic%> or to a directory you think is appropriate and optionally alter your PATH to contain <%tt C:\ScriptBasic\bin%>. To install the Eszter SB Application Engine as NT Service open a command prompt, <%tt cd%> into the directory where the file <%tt sbhttpd.exe%> is and type <%tt sbhttpd -install%>. Optionally you may want to edit the configuration file and recompile it. For further details read the manual.
<p>
<LI><FONT SIZE="+1">Linux</FONT>
<BR>
<%tt dpkg --install scriba-v<%VERSION%>b<%BUILD%>-1_i386.deb%>
<BR>
or
<BR>
<%tt rpm -i scriba-<%VERSION%>b28-1.i386.rpm%>
<p>
<LI><FONT SIZE="+1">UNIX</FONT><BR>
<%tt make install%>
<p>
<FONT SIZE="1">To get detailed help on installation fine points read the chapter <i>Installation Instruction</I> of the <a target="_top" href="texi/ug.html">Users' Guide</a></FONT>
<P>
Before going on <%SUBSCRIBE subscribe%> the mailing list where you can ask questions directly from the developers and from other users if ever you have problems with ScriptBasic (and even if you do not).
<%END%>
%file mirror.html.jam
<%START How to mirror ScriptBasic%>
Because the ScriptBasic web site is just a bunch of static files it is extremely easy to mirror it
using <%tt wget%>. Configure <%tt wget%> to download the files and leave the absolute URLs intact.
<p>
To now that the web site was refreshed check the file <%tt http://scriptbasic.com/counter.html%>.
This is a pure <%tt text%> file containing a decimal number increased by one each time the web changes.
<%END%>
%file suppro.html.jam
<%START ScriptBasic Support+%>
Although ScriptBasic is open source its source code quality is above that of the average open source project. You can use, modify, embed into application ScriptBasic under the licence LGPL free of charge.
<P>
The starting L in front of GPL means <i>Lesser</i> thus you can use, modify and embed ScriptBasic even for commercial projects. When deciding what software to use for such a project often commercial, reliable support is a must. ScriptBasic is not without such a support.
<P>
The firm <a href="http://www.emma.hu">EMMANET</a> is offering professional support for ScriptBasic on commercial basis called <i>ScriptBasic Support+</i>.
<P>
There are three types of professional support for ScriptBasic.
<p>
<H2>Remote support</H2>
Remote support is available world wide. This includes one working day eMail answer for any question, three day guaranteed bug fixes for any bug reported, remote ssh support upon request for installation and trouble shooting and phone support during Europe daytime.
<p>
<font size="1"><B>list price</B> USD200/month + VAT invoiced quaterly in advance</FONT>
<H2>Special Development</H2>
The ScriptBasic development team may accept development requests professionally. In case you need some special feature in ScriptBasic or a special purpose module you can contract <a href="http://www.emma.hu">EMMAnet Bt.</a> to do the work. The actual development will be done by the ScriptBasic developers. The developed code will belong to you, but in case you decide to release it under GNU GPL or LGPL licence you will get price reduction.
<p>
<font size="1"><B>price</B> depend on the actual development and to be negotiated</FONT>
<H2>On-site support/training</H2>
On-site support delivers knowledge transfer, training and should usually used by ScriptBasic module developers or by firms developing application that embed ScriptBasic. This training and consultation is usually a four day course that is tailored according to the needs of the customer. Video recording of the courses is also possible. The timing, duration, location and course details should be negotiated.
<p>
On-site support is available in Europe. On-site support in the USA and in other non-Europe countries should be negotiated and timing also depends on visa conditions.
<p>
<font size="1"><B>price</B> USD1000/four day course + VAT plus travel and lodging costs. Travel cost can be calculated 0.2USD/km from Budapest/Hungary. 50% of the total cost is invoiced in advance and payment should arrive one day prior start of travel. 50% is invoiced after the training has been finished.</FONT>
<p>
<B>To request more information on Support+ write a mail to <a href="mailto:[email protected]"><%tt
[email protected]%></a>.</B>
<%END%>
%file support.html.jam
<%START Support%>
ScriptBasic is alive and is actively supported. If you have a look at the mailing list archive
<P>
<center>
<%SUBSCRIBE <%tt http://scriptbasic.com/mailman/listinfo/scriptbasic%>%>
</center><P>
you can realize that with some very few exceptions all questions are answered in a day. <B>Click on the link above now and subscribe to the mailing list!</B> To get answer to your questions has two prior conditions:
<ol>
<li><B>You have to subscribe to the list</B> to be able to receive the mails sent to the list. Also due to recent increased spam activity you have to subscribe to the list prior to sending a message to the list.
<li><B>You have to send your question</B> to the list to get answer. Obvious? Usually it is. This is a friendly list, with only a few number of people (about 100 or so).
</ol>
<P>
Up to now the traffic of the list is small, there are only one or two mails in a month, thus there is no reason to be afraid to subscribe. The list is managed by <a href="http://www.gnu.org/software/mailman/mailman.html">mailman</a>, thus it is easy to unsubscribe in case you want. To ensure fairness, if you have problem unsubscribing later, drop a mail to me at <%tt peter AT verhas.com%> asking for removal and I will remove you without any further question.
<P>
The list delivers announcements from the developer, questions and answers from the users (and the developers).
<P>
Thus go to the list page and <%SUBSCRIBE <%tt subscribe%>%> to the list.
<P>
You may also be lucky to meet me on <a href="irc.html">IRC</a>, weekdays, worktime CET.
<P>
In case the informal open source support is not appropriate for your project and you need commercial support read on about <a href="suppro.html">Support+</a> services from EMMANET.
<p>
<FONT SIZE=1>
If you want to become a sponsor of ScriptBasic drop a mail to
<a href="mailto:[email protected]"><%tt [email protected]%></a> and we will discuss the details. (Well no one mentioned it in a year so I think I was stupid printing it here. Now this line is a monument of my stupidity.)</FONT>
<%END%>
%file docformats.html.jam
<%START Available documentation formats%>
The documentation of ScriptBasic is available in various formats. These are the followings:
<UL>
<LI><B>HTML</B> Each document can be downloaded as a huge HTML file. Clicking on the HTML link you can see the documentation directly to your PC and saving it you can access it any time even when you are not online. You can easily search the document using your browser's search feature.
<LI><B>HTML.GZ</B> This format is the compressed version of the HTML version. You can download this to save download time, especially if you are modem user. Note that some documentations are quite large. For example the developers' manual is half megabyte uncompressed and 117KB compressed. <%UNCOMPRESS%>
<LI><B>HTML/SPLIT</B> This is the HTML format of the documentation split into several small HTML files. Each section is in a separate HTML file with excessive navigational links. This format fits the best the on-line reading.
<LI><B>HTML.TGZ</B> This is the collection of the HTML/SPLIT files. You can download this single file for the documentation and extract it into a directory into several files. <%EXTRACT%>
<LI><B>PDF</B> This is the Adobe PDF format of the documentation. This looks like the printed version of the document and can easily been seen on screen. Download this version in case you want to print the document or you prefer printed format documents on the screen. Note that PDF files contain several formatting information and thus are large. Consider downloading the compressed version.
<LI><B>PDF.GZ</B> This is the Adobe PDF format of the document compressed. Download this version instead of the PDF in case you want to save bandwidth. This is important especially if you are modem user. <%UNCOMPRESS%>
<LI><B>PS.GZ</B> This is the compressed PostScript version of the printed document. Download this version in case you want to print the document on a PostScript aware printer.
<LI><B>TEXI</B> This is the original texi format of the documentation. This is more or less text format. You may need this in case you want to have the documentation in some format, which is not delivered on this site. There are numerous texi to XXXX converters. (for example makeinfo for Linux).
<LI><B>TEXI.GZ</B> This is the compressed format of the texi file. Download this version instead of the texi file to save bandwith. <%UNCOMPRESS%>
<LI><B>CHM</B> This format is Microsoft compiled HTML. This format is specific to Windows and may not be view-ed under Linux or other unices. This file contains the html files of the documentation compressed. Internet Explorer opens this document type.
<LI><B>RTF</B> This format is Rich Text Format that can be loaded by many word processors, like Microsoft Word.
<LI><B>RTF.GZ</B> This is gzip compressed Rich Text Format. Uncompress it using <%tt gunzip%> or <%tt WinZIP%> to get the RTF format.
</UL>
<a HREF="documentation.html">Back to documentation download</A>
<%END%>
%file doclist.html.jam
<%START List of all files in the document directory%>
<TABLE BORDER="0">
<%@dir|texi|-o -f -Sn *|
<TR>
<TD><%tt <%$file$date%> <%$file$time%> %></TD>
<TD><%tt <a href="<%$file$url%>"><%$file$name%></A>%></TD>
<TD align="right"><%tt <%$file$size%>%></TD>
</TR>
%>
<%@dir|texi|-o -d -. -Sn *|
<TR><TD COLSPAN="3">
Directory <%$file$name%>:</TD></TR>
<%#dir|texi/<%$file$name%>|-o -f -Sn *|
<TR>
<TD><%tt <%@null <%@null <%$file$date%>%>%> <%@null <%@null <%$file$time%>%>%> %></TD>
<TD><%tt <a href="<%@null <%@null <%$file$url%>%>%>"><%@null <%@null <%$file$name%>%>%></A>%></TD>
<TD align="right"><%tt <%@null <%@null <%$file$size%>%>%>%></TD>
</TR>
%>
%>
</table>
<%END%>
%file documentation.html.jam
<%START Documentation%>
The documentation is available in several formats. For the short description of the available formats please <a href="docformats.html">read the details on documentation formats</a>. To get help to find the information on specific question in the documentation or just to get the answer right from the developers or the people using the list <%SUBSCRIBE subscribe%> to the list.
<p>
List of available documents:<BR>
<FONT SIZE="1">The number following the link between parentheses indicates the size of the file in bytes.</A></FONT>
<UL>
<LI><FONT SIZE="+2">Basic Documentation Set</FONT>
<UL>
<%DOCUMENT|Users' Guide|ug|
This is the official Users' Guide that defines the language. This is for those who want to write program in BASIC and run it using ScriptBasic.
Special <A TARGET="_top" HREF="commands.html">command reference</A> is available separately as well in html format.
%>
<%DOCUMENT|Eszter SB Application Engine Users' Guide|eszterengine|
The Eszter SB Application Engine is a multi-thread http server ScriptBasic that can be used to execute (optionally in cooperation with Apache) ScriptBasic web programs lightning fast.
%>
<%DOCUMENT|BASIC Samples|samplebas|
Sample BASIC programs with documentation.
%>
<%DOWNLOADSAMPLES samples.tgz%>
<%DOCUMENT|Using the Debugger|prep_dbg|
This documentation describes how to debug command line, or CGI programs using the <%tt dbg%> debugger.
%>
<%DOCUMENT|Developers' Guide|devguide|
This is the official guide for developers. The document describes the overall architecture of ScriptBasic and contains tutorials on how to write extension modules, how to write internal preprocessors and how to embed ScriptBasic.
%>
</UL>
<LI><FONT SIZE="+2">Modules Documentation</FONT>
<UL>
<%DOCUMENT|CURL|mod_curl|
This module allow the BASIC programmer to download and upload files to/from various URLs, including FTP, HTTP, HTTPS and other protocols.
%>
<%DOCUMENT|CGI|mod_cgi|
This module eases CGI programming (true CGI as well as programs in Eszter SB Application Engine) handling CGI input and HTML template files.
%>
<%DOCUMENT|PNG Graphics Generation|mod_gd|
This module implements BASIC interface for the the well known module GD allowing ScriptBasic programs to create PNG (Portable Network Graphics) format files programmatically.
%>
<%DOCUMENT|Regular Expression|mod_re|
This module implements regular expression string pattern matching.
%>
<%DOCUMENT|Tools|mod_tools|
This module implements various utility functions.
%>
<%DOCUMENT|HASH Module|mod_hash|
This module implements powerful hash handling, which should be used instead of ScriptBasic associative arrays when large hashes are needed.
%>
<%DOCUMENT|MD5 calculation|mod_md5|
This module is deprecated. The module "tools" contains the features of this module. This module delivers a function that calculates the MD5 of a string.
%>
<%DOCUMENT|Multi-thread Support|mod_mt|
This module implements functions that delivers session handling and application and session data store in memory for any application that embeds ScriptBasic multi-thread. This module can be used in programs executed by the Eszter SB Application Engine to effectively keep track of sessions and volatile user data.
%>
<%DOCUMENT|MySQL|mod_mysql|
Interface to the MySQL database. Using this module BASIC programs can access MySQL databases.
%>
<%DOCUMENT|<%Berkeley%> DB|mod_bdb|
This module handles <%Berkeley%> databases. It includes database, record handling and transaction support.
%>
<%DOCUMENT|Windows NT|mod_nt|
This module implements Windows NT specific functions that allows system managers to programmatically access certain features of the operating system.
%>
<%DOCUMENT|Console IO|mod_cio|
This Windows only module manages the console allowing colored, positioned character output, control-C capture and many more.
%>
<%DOCUMENT|Module UNIX|mod_ux|
This module implements Windows NT specific functions that allows system managers to programmatically access certain features of the operating system.
%>
<%DOCUMENT|Zlib Compresssion|mod_zlib|
This module implements an interface to Zlib compression routines that allows the BASIC programs to access (read/write) compressed files.
%>
<%DOCUMENT|ODBC|mod_odbc|
This module allows access to ODBC databases under Windows operating systems.
%>
</UL>
<LI><FONT SIZE="+2">Auxiliary Documentations</FONT>
<UL>
<%DOCUMENT|Development Files|auxfiles|
This documents lists the auxiliary development files used to automate ScriptBasic development under Windows NT and UNIX on the development station. This document is here for the sake of completeness.
%>
<%DOCUMENT|Documentation Methodology|docudoc|
A partially ready document about the documentation methodology used for ScriptBasic development.
%>
<%DOCUMENT|Regression Test|regtest|
Execution of several regression test programs. When this document is compiled several test programs are automatically executed vi a Jamal macros and the result is automatically compiled into this document.
%>
<%DOWNLOADSAMPLES regtest.tgz%>
<%DOCUMENT|Source Code Documentation|source|
This file contains the documentation embedded in the ScriptBasic source compiled into a single documentation. Note that most of the text of this document can be found in the Developers' Guide.
%>
</UL>
</UL>
For reference purposes you can see an automatically generated list of <a href="doclist.html">all documentation files</a>. The listing is <%#dir|.|-o doclist.html|<%$file$size%>%> bytes long.
<%END%>
%file author.html.jam
<%START Authors%>
ScriptBasic is continuously developed by <a href="http://peter.verhas.com/indexe.html" target="_top">Peter Verhás</a>.
There is no institutional support of the development by now except that <a href="http://www.emma.hu" target="_blank">EMMAnet Bt.</a> provides web space.
<P>
You can write me mail at the address 'peter AT verhas.com' or you can try to contact me yia IRC using the Java applet on the <a href="irc.html">page here</a>.
<%END%>
%file future.html.jam
<%START Future developments%>
Here I list the features that I have in my mind to develop for ScriptBasic, but I do not know when and how I will have time for it. If you like some of the ideas drop me a mail. If some idea gets more mails than other I will likely develop the one sooner.
<hr>
I deliver lectures at the TU Budapest on the architecture of ScriptBasic. The students have to perform some home work. Some of them already volunteered to develop PostgreSQL, ORACLE interfaces, and to test fully the ODBC interface.
<hr>
A student accepted the development of C++ API, another Java API so ScriptBasic programs will be able to be started from Java applications via the Java Native Interface.
<hr>
TCP daemon version. This version is going to listen on several ports just as any usual daemon. When a Connection comes a basic program is started in the daemon process in a new thread an the program gets the Socket input on its standard input and the standard output is sent to the client.
<hr>
MySQL module that keeps connections alive to speed up database handling for multi-thread implementations.
<%END%>
%file news17.html.jam
<%START What is new in ScriptBasic v1.0build 17%>
This build achieves may new features:
<ul>
<li>For the Windows platforms there is an ISAPI version of the interpreter that delivers extreme
speed. This version keeps the compiled intermediate code in memory and bypasses not only the
reading, lexical, syntax analysys and building, but also the cache file loading. It just runs.
<li>Extensions can now implement external commands, not only external functions. The external commands
are more complex to program, but are more flexible and can do more things.
<li>You can compile a version of ScriptBasic that unimplements some built-in commands. The new version
remains compatible with the actual build, but does not contain the code for the functions you have
excluded. This is needed for some implementations where ScriptBasic runs code loaded over the net.
<li>You can <font size="3"><tt>import</tt></font> files instead of <font size="3"><tt>include</tt></font>. <font size="3"><tt>import</tt></font> is the same as <font size="3"><tt>include</tt></font> but does not
load any file already included or imported.
<li>Third party developers can write preprocessors for ScriptBasic. There is an experimental interface
to preprocessors after the code has been loaded, before lexical analysis.
</ul>
<p>
<%END%>
%file news18.html.jam
<%START What is new in ScriptBasic v1.0build18%>
This build achieves many new features:
<ul>
<li>There are three new modules implemented. These are:
<ul>
<li>Zlib module that can compress and uncompress any string or can handle
gzipped files.
<li>Hash module that allows the BASIC programmer to handle hashes in memory.
<li>GD module that helps you easily generate PNG pictures.
</ul>
<li>External preprocessors can be configured and are automatically executed
by ScriptBasic. In case you want to use this feature read the manual carefully
to learn how to configure the preprocessors. Internal preprocessors are still in
experimental state and will change in the future. However external preprocessors
are powerful and easy to implement. The example provided with the code allows you
to write HTML embedded basic code similar to Microsoft Active Server Pages basic scripts.
But it also works on any UNIX. The fine point is that the preprocessor is written in
ScriptBasic as well.
<li>New string handling functions were introduced like Instr, Replace and so on.
Read the manual for further information.
<li>Cache handling is fine tuned. Now you should be very unlucky to have two different files
with two different names using the same cache file. Old version cache files created by
earlier version of ScriptBasic do not cause problem any more.
<li>The binary format files now inherit the start line under UNIX. This means that you can start
the internal binary format version without writing <%tt scriba%> in front of it. This
also means that you can deliver your CGI application without the source code.
<li>Bug fixes. (If you know any more, please report.)
</ul>
Known bugs:
<ul>
<li><%tt syntaxer.pl%> creates defined symbols that contain the $ sign. This causes problem under Solaris as
it was reported by Martin Renner. We have incorporated his fix and will be available in build19. Until that
you can apply
<%Example
#diff syntaxer.pl syntaxer.pl_old
595d594
< $kw =~ s/\$/S/g;
%>
to <%tt syntaxer.pl%>
<li><%tt scriba%> does not run on Windows 98/95. This is because the command <%tt set file owner%> uses
a Windows NT system call that Windows 98/95 do not implement. We are working on the solution and
a fix will be available in the next build.
</ul>
Report of any other bug is appreciated.
<p>
<ul>
<li><a href="news17.html">news of build17</A>
</ul>
<%END%>
%file license.html.jam
<%START Licence conditions for ScriptBasic%>
ScriptBasic is free software. You can use ScriptBasic under the conditions of the licence
<B><a target="_top" href="http://www.gnu.org/copyleft/lesser.txt">GNU Lesser General Public License</a></B>
<p>
In short this means that you can use ScriptBasic free of charge and you can also embed it into
proprietary, non-free software. For more information read the file <%tt LICENSE.TXT%> or read the
original text of the license.
<p>
<B>Please note that some modules use libraries that have different licences!</b>
<%END%>
%file news30.html.jam
<%START What is new in ScriptBasic v1.0build30%>
Bug fixes and new features.
<P>
<B>New Features</B><P>
<ol>
<li>Now you can have a SETUP.EXE for Windows to ease installation and also uninstall.
<li>On Linux and Windows you can compile your BASIC program into standalone executable without needing any C compiler.
<li>Source structure and compilation was refined to help compilation on platform where no precompiled binary is available.
<li>Compilation is driven by Jamal macro extended makefiles that let us use the same source for the makefiles on UNIX and on Windows.
<li>Allocation routines now allocate less gap in structures on 32bit systems.
<li>BASIC program source inclusion is limited to 1000 levels to avoid infinite loops in the reader.
<li>Modification of the Berkeley DB 4.1.24 are supported and the precompiled binaries include the 4.1.24 version of the DB.
<li>Under UNIX curses and PostgreSQL module is available. Also one may try to compile the ODBC module under UNIX supporting UnixODBC. (It was tested by a student and I could not recompile it on my Linux box. Maybe I need a different version of UnixODBC.)
</ol>
<P>
<B>Bug Fixes</B><P>
<ol>
<li>Allocation routines allocated a few bytes more than needed in earlier version. When this was corrected it turned out that a lot of places ScriptBasic C code indexes memory by one byte more than allocated. These were fixed.
<li>Memory allocation code myalloc.c merged the segments good, but the size of the merged segment was calculated bad. This was corrected in build30.
<li>Syntax analysis code used the memory allocation module erroneous and deallocated some memory block from a segment it did not belong to. This causes harm only if the deallocated block is the first one on the segment. This rarely happened for memory space allocated to store module name space string, but in some weird examples it caused segmentation fault on Linux and infinite loop on NT. Now this is corrected.
<li>Setting file time failed on directories and on read-only files. Now this succeeds. The second one may not have been a bug.
<li>Programs that contained no any string could be executed only from source and not from cache. Now this is corrected.
<li>Some Solaris users reported that alignment was not correct on their platform. Their code suggestion was incorporated into the code.
<li>The BASIC function ERROR() returned random value so long as long no error happened. Now it returns zero.
<li>The ScriptBasic source reader code could not include files that started with ../.. This was corrected.
</ol>
<p>
Still you may be interested reading the old news of previous builds.
<ul>
<li><a href="news29.html">news of build29</A>
<li><a href="news28.html">news of build28</A>
<li><a href="news27.html">news of build27</A>
<li><a href="news26.html">news of build26</A>
<li><a href="news25.html">news of build25</A>
<li><a href="news24.html">news of build24</A>
<li><a href="news23.html">news of build23</A>
<li><a href="news22.html">news of build22</A>
<li><a href="news21.html">news of build21</A>
<li><a href="news20.html">news of build20</A>
<li><a href="news19.html">news of build19</A>
<li><a href="news18.html">news of build18</A>
<li><a href="news17.html">news of build17</A>
</ul>
<p>
<%END%>
%file news29.html.jam
<%START What is new in ScriptBasic v1.0build29%>
Several bug fixes were performed on the core interpreter as well as on some modules and new features are introduced in build29.
<P>
<B>New Features</B><P>
<ol>
<li>Now you can declare global variables using the command <%tt global%>. This is required when the <%tt declare option DeclareVars%> compile time directive is used. This is extremely useful to find mistyped variable names during compilation time.
<li>A new sample program <%tt queens.bas%> is in the examples. This program places 8 (or if you modify the source <%tt n%> queens on a chess table so that none threatens the other. Symmetric cases are eliminated.
<li>New module interfacing the well known <a href="http://curl.haxx.se">CURL module</A> was introduced.
</ol>
<B>Bug Fixes</B><P>
<ol>
<li>In the module <%tt MT%> zero length session variable name caused general protection error. This was corrected.
<li> In the module <%tt MT%> <%tt undef%> arguments were not handled properly.
<li>The debugger preprocessor caused error when user commanded the debugger to quit some case when debugging CGI programs because the module error string pointer was not initialized. Now this is corrected.
<li>The operator assignment commands, like <%tt +=, -=%> cause general protection fault when the left hand side variable was <%tt undef%>.
<li>The file <%tt string.c%> was modified to suppress some compilation warning.
<li>The command <%tt open directory%> collected all the directories not only the plain files into the file list, though it was not desired by default. Now directories are not collected into the file list.
<li>There was a bug in the memory handling that caused general protection fault in some cases when reference variables were used.
<li>The syntax analyzer accepted an expression list with a trailing comma. This is not that way anymore, this bug is fixed.
<li>The variable <%tt pszModuleError%> was not initialized and thus it caused segmentation fault on Linux when using the debugger.