mirror of
https://github.com/inexorabletash/jsbasic.git
synced 2024-12-22 07:30:19 +00:00
416 lines
12 KiB
Plaintext
416 lines
12 KiB
Plaintext
|
This file is a textual log of changes by date prior to tracking the
|
||
|
files in a public version control repository. This is for historical
|
||
|
purposes only, and will no longer be updated.
|
||
|
|
||
|
--------------------------------------------------------------------
|
||
|
|
||
|
2011-12-06
|
||
|
Added PEEK and POKE shim for 230 (Hi-Res plotting page), to enable
|
||
|
drawing on the back buffer for animations.
|
||
|
|
||
|
2011-04-20
|
||
|
Re-added support for running under Windows Scripting Host and added
|
||
|
Mozilla Rhino support too.
|
||
|
|
||
|
2011-04-16
|
||
|
Total internal revamp: Now a compiler rather than interpreter. Source
|
||
|
errors are reported by BASIC line number as well as source
|
||
|
line/column.
|
||
|
|
||
|
Display defaults to 40 columns, emulates 80-column firmware more
|
||
|
accurately. Character output (CHR$(), INVERSE, etc) tweaked to match
|
||
|
Apple behavior.
|
||
|
|
||
|
Files written via DOS now persist in your browser via Web Storage.
|
||
|
|
||
|
Floating point and integer overflows are caught rather than
|
||
|
propagating infinities and NaNs.
|
||
|
|
||
|
DATA statements and INPUT entries parse more accurately as comma
|
||
|
delimited, optionally-quoted strings. RE-ENTER? is shown on invalid
|
||
|
INPUT (and can be trapped via ONERR)
|
||
|
|
||
|
Added HGR2 and page-flipping POKE shims, plus a few CALL shims for
|
||
|
graphics. Hires graphics are now to a 280x192 bitmap, rather than
|
||
|
trying to be sneaky with a 140x192 bitmap.
|
||
|
|
||
|
Error codes can be distinguished in ONERR via PEEK(222). Out-of-memory
|
||
|
and stack-overflow conditions reported where possible (this is
|
||
|
non-standard across browsers).
|
||
|
|
||
|
Tweaked samples that were dependent on language/environment quirks.
|
||
|
|
||
|
Updated code editor to (the much improved) CodeMirror 2.0. On parse
|
||
|
errors, the cursor is moved to the offending line/character.
|
||
|
|
||
|
2011-01-29
|
||
|
Fixed error handling issues, e.g. DOS errors w/ ONERR and syntax
|
||
|
errors e.g. 10 INPUT PRINT
|
||
|
|
||
|
Added HSCRN(x,y) extension function.
|
||
|
|
||
|
Fix mouse-as-joystick to hit full range of 0...255.
|
||
|
|
||
|
2011-01-26
|
||
|
No longer show paddles/joysticks automatically; rely on
|
||
|
mouse-as-joystick primarily.
|
||
|
|
||
|
Use FlashCanvas for older IE versions, instead of excanvas, and switch
|
||
|
to plotting hires pixels/lines directly rather than relying on canvas
|
||
|
scaling and line drawing.
|
||
|
|
||
|
Added Gaussian Distribution 2D plot sample, by John Russ
|
||
|
|
||
|
2011-01-25
|
||
|
Added compatibility shims for PEEK(78) and PEEK(79) for seeding the
|
||
|
random number generator. On a real Apple these are incremented during
|
||
|
the input polling loop and are a good source of entropy for seeding a
|
||
|
random number generator. In this interpreter, they are simply
|
||
|
generated by the JavaScript Math.random() function.
|
||
|
|
||
|
2010-11-21
|
||
|
Added lexical highlighting in code editor via CodeMirror. Note that
|
||
|
this only highlights tokens, it does not check statement or expression
|
||
|
syntax. It will highlight invalid tokens and unsupported statements.
|
||
|
|
||
|
Mousing over the screen now updates paddle position - try the lo-res
|
||
|
painting demo for an example.
|
||
|
|
||
|
Lots of internal code cleanup with hopefully no behavior changes.
|
||
|
|
||
|
2010-11-18
|
||
|
Fix RETURN and POP from inside a FOR ... NEXT loop.
|
||
|
|
||
|
Fix TRACE and NOTRACE
|
||
|
|
||
|
2010-11-13
|
||
|
Added SPEED= shim (does nothing)
|
||
|
|
||
|
Fixed SPC() and TAB()
|
||
|
|
||
|
Work around Chrome bug to show full error alert text.
|
||
|
|
||
|
2010-08-29
|
||
|
Added "Echo to Printer" option to allow copy/paste of output
|
||
|
|
||
|
Big refactor of internals. Statement parsing and execution now
|
||
|
separated. A library of statement functions are used for
|
||
|
execution. Hopefully nothing broke - all unit tests still pass.
|
||
|
|
||
|
2010-05-04
|
||
|
When run under cscript.exe, the program still blocks until the user
|
||
|
presses Enter when a GET statement executes, but the entered
|
||
|
characters are returned by subsequent GET statements.
|
||
|
|
||
|
Added Hello World Sine Wave sample by Jamie Beu.
|
||
|
|
||
|
2009-11-01
|
||
|
Changes are now recorded in an Atom Feed.
|
||
|
|
||
|
2009-10-24
|
||
|
Now licensed under the Apache 2.0 license
|
||
|
|
||
|
2009-10-15
|
||
|
Fixed bug with POKE and negative addresses (introduced 2009-05-15, bleah)
|
||
|
|
||
|
2009-06-10
|
||
|
Added Boy's Surface sample by Lukas Innig
|
||
|
|
||
|
2009-05-08
|
||
|
Fixed running with cscript
|
||
|
|
||
|
Slight performance tweaks for IE c/o explicit sizing
|
||
|
|
||
|
2009-05-08
|
||
|
Tracked down source of IE perf issues when drawing with paddles; when
|
||
|
the thumb/stick moves, IE does a relayout/repaint of any content above
|
||
|
the paddle in the HTML flow. If I delete the page header it's
|
||
|
silky-smooth. Unfortunately, any text above the screen seems to make
|
||
|
it fall off the deep end - so no fix yet without gutting the page.
|
||
|
|
||
|
Undid "Line breaks from PRINT now clear to the right edge" - doesn't
|
||
|
repro on Apple. What was I thinking?
|
||
|
|
||
|
2009-05-06
|
||
|
A bunch of performance tweaks based on IE8's JavaScript
|
||
|
profiler. While they look good on paper, they mean diddly-squat to
|
||
|
perceived performance. Don't precalc default variable values, avoid
|
||
|
DOM changes that are no-ops, and (sigh) don't scan the whole screen
|
||
|
looking for FLASH-styled cells - maintain a list instead so perf isn't
|
||
|
impacted if there are none.
|
||
|
|
||
|
2009-05-01
|
||
|
Expressions are now just-in-time compiled to JavaScript. Screen
|
||
|
updates are the real bottleneck, though, so this isn't a big
|
||
|
performance boost. Performance comparison (on my 1.73GHz machine) of
|
||
|
the lores Mandelbrot set demo:
|
||
|
|
||
|
Google Chrome (V8 JavaScript compiler): 25% faster (21s vs. 27s)
|
||
|
Firefox 3: 14% faster (64s vs. 73s) Internet Explorer 8: <1% faster
|
||
|
(249s vs. 251s) So not a huge win except on faster execution
|
||
|
engines. But this is just the first step... Fixed POKE 216,x shim to
|
||
|
disable ONERR handler
|
||
|
|
||
|
2009-04-30
|
||
|
Rejiggered internal value storage/passing system to use fundamental
|
||
|
JavaScript types instead of {number: value} or {string: value}. I
|
||
|
didn't trust JavaScript's type system when I first wrote this code.
|
||
|
|
||
|
2009-04-26
|
||
|
Performance - made GOTO/GOSUB not do a linear scan to find the line
|
||
|
(d'oh). Significant perf boost for IE.
|
||
|
|
||
|
Added Unit Tests sample. Coverage is not complete but it's getting
|
||
|
there.
|
||
|
|
||
|
RND() with negative now consistently reseeds (added custom pseudoranom
|
||
|
number generator)
|
||
|
|
||
|
FOR I = 10 TO 1 : PRINT I : NEXT now correctly prints 10 then finishes
|
||
|
(was previously incorrectly inferring STEP -1)
|
||
|
|
||
|
2009-04-25
|
||
|
Line breaks from PRINT now clear to the right edge of the text window
|
||
|
|
||
|
Automatically show input devices if PDL() called
|
||
|
|
||
|
Added Zhodani Relay Station Placement example (run after generating a
|
||
|
sector with Traveller Sector Generator)
|
||
|
|
||
|
2009-04-24
|
||
|
Fixed a bug where changing text mode (e.g. PR#3) after calling HGR
|
||
|
would break split-screen mode.
|
||
|
|
||
|
2009-04-14
|
||
|
Updated to an IE8-compatible version of excanvas. Updated my excanvas
|
||
|
patch to support scaling.
|
||
|
|
||
|
2009-04-05
|
||
|
Allow DEF FN to be invalid (errors occur in FN, per Applesoft)
|
||
|
|
||
|
Fixed PR#0 in Safari
|
||
|
|
||
|
Added RENAME old,new to DOS
|
||
|
|
||
|
Fixed LIST for assignment statements with no LET
|
||
|
|
||
|
Fixed operator spacing for LIST
|
||
|
|
||
|
Fixed parsing of empty REM statements
|
||
|
|
||
|
Program would execute after a tokenization error was encountered -
|
||
|
fixed.
|
||
|
|
||
|
Added Traveller Sector Generator sample
|
||
|
|
||
|
2009-03-07
|
||
|
Fixed cursor blinking
|
||
|
|
||
|
Added Connections, Puzzler, and Squiggle by Gregg Buntin
|
||
|
|
||
|
2009-03-06
|
||
|
Addressed IE performance issues: sped up Text and LoRes screen
|
||
|
initialization, don't use classes for characters (sigh).
|
||
|
|
||
|
Fixed PRINT SPC()
|
||
|
|
||
|
2009-03-05
|
||
|
PRINT CHR$(7) now rings a BELL (if your browser has an audio/wav WAV
|
||
|
handler configured)
|
||
|
|
||
|
Reimplemented the text display (TTY) using bitmap font, to mimic the
|
||
|
look of 40/80 column text (no more copy/paste, alas)
|
||
|
|
||
|
Added MouseText support. INVERSE:PRINT CHR$(27);"XY";CHR$(24):NORMAL
|
||
|
|
||
|
The ASCII Pac-Man sample was really Unicode Pac-Man, which the bitmap
|
||
|
font doesn't support, so it broke. So I cheated.
|
||
|
|
||
|
2009-03-01
|
||
|
Added Scribble sample, by William Simms
|
||
|
|
||
|
2009-02-12
|
||
|
Added February Surprise sample by Antti Pirskanen
|
||
|
|
||
|
2008-11-08
|
||
|
Ignore whitespace-only lines, as a convenience
|
||
|
|
||
|
Added ASCII PAC-MAN(ish) sample by Michael Kemp
|
||
|
|
||
|
2008-10-19
|
||
|
Added TEXT ADVENTURE sample by Floyd McWilliams.
|
||
|
|
||
|
Allow string literals to be terminated by end-of-line (suggested by
|
||
|
Mike Kienenberger for compatibility)
|
||
|
|
||
|
2008-09-18
|
||
|
Fixed a case where syntax errors were ignored
|
||
|
|
||
|
2008-09-17
|
||
|
Fixed input focus to work in Google Chrome
|
||
|
|
||
|
Fixed READ to support multiple variables, e.g. READ I,J,S$
|
||
|
|
||
|
2008-08-23
|
||
|
Added Save/Load buttons that let you save your work to a cookie
|
||
|
|
||
|
Added DRAWING PROGRAM sample by Brian Broker
|
||
|
|
||
|
Fixed power operator (^) which wasn't being parsed correctly
|
||
|
|
||
|
Fixed subtle bug with string comparisons (result was double-typed as
|
||
|
number and string)
|
||
|
|
||
|
2008-05-01
|
||
|
Fixed NEXT I,J,... to terminate multiple loops - thanks to Scott
|
||
|
Alfter for pointing this out
|
||
|
|
||
|
Bowing to popular demand, it now supports ? as an alias for PRINT
|
||
|
|
||
|
2008-03-15
|
||
|
Implemented ONERR GOTO line and RESUME, including POKE 216,0
|
||
|
|
||
|
Added demo for ONERR, added ONERR support to sequential file access
|
||
|
demo
|
||
|
|
||
|
Fix hires graphics on Safari - not sure when it broke
|
||
|
|
||
|
2008-03-14
|
||
|
Code cleanup c/o jslint.com
|
||
|
|
||
|
Bug fix: INPUT A,B,C no longer worked. Probably mis-re-factored at
|
||
|
some point.
|
||
|
|
||
|
2007-12-08
|
||
|
Implement file writing (to client-side VFS only), including APPEND
|
||
|
operations
|
||
|
|
||
|
Added DOS DELETE command
|
||
|
|
||
|
GR does implicit HTAB 1 : VTAB 24
|
||
|
|
||
|
PEEK(49168) has the same effect as POKE 49168,N
|
||
|
|
||
|
As a convenience, PEEK and POKE at 49200/-16336 (speaker toggle) now accepted, but a no-op
|
||
|
|
||
|
As a convenience, spaces now accepted before = forCOLOR= and HCOLOR=
|
||
|
|
||
|
2007-11-22
|
||
|
Added button to submit your sample (via email) for inclusion
|
||
|
|
||
|
Added SIMPLE.PONG sample c/o USENET post by mad.scientist.jr
|
||
|
|
||
|
Improved comment handling (doesn't tokenize)
|
||
|
|
||
|
2007-10-22
|
||
|
Make GET support keyboard flag, so IF PEEK(-16384) > 127 THEN GET A$
|
||
|
works
|
||
|
|
||
|
2007-10-20
|
||
|
Bug fix: User could type after hitting Stop. Now TTY state is reset.
|
||
|
|
||
|
Added missing statement: ON expr GOSUB ...
|
||
|
|
||
|
RND(0) returns last, negative reseeds
|
||
|
|
||
|
2007-10-14
|
||
|
Fixed location of paddle button 3 (C060)
|
||
|
|
||
|
2007-09-22
|
||
|
Implemented scaling in ExplorerCanvas (source); hires now scaled
|
||
|
somewhat correctly in IE
|
||
|
|
||
|
Bug fixes: HOME would force full-screen text; HPLOT can now plot a
|
||
|
single pixel
|
||
|
|
||
|
2007-09-20
|
||
|
Added hires support via canvas tag
|
||
|
|
||
|
Display switches (POKE 49232...49239, not counting page 2) supported.
|
||
|
|
||
|
Added text window support: POKE 32,left : POKE 33,width : POKE 34,top
|
||
|
: POKE 35,bottom
|
||
|
|
||
|
2007-09-16
|
||
|
Added full screen lores support via POKE 29234,0
|
||
|
|
||
|
Fixed keyboard input on Safari - hacky, but logical
|
||
|
|
||
|
2007-09-15
|
||
|
Added Mandelbrot set demo to DEMOS
|
||
|
|
||
|
Added PEEK and POKE shims
|
||
|
|
||
|
Added paddle buttons: Home = 0 = Open Apple, End = 1 = Solid Apple,
|
||
|
Page Up = 2, Page Down = 3
|
||
|
|
||
|
Added Caps Lock (defaults to on; real Caps Lock key toggles it; this
|
||
|
means it usually ends up in an inverted state)
|
||
|
|
||
|
Round numerical results to 8 decimal places (hacky)
|
||
|
|
||
|
2007-09-10
|
||
|
Added demo file links, cleaned up UI a bit.
|
||
|
|
||
|
Added hacky PR#0/PR#3 support (to set 40 columns)
|
||
|
|
||
|
2007-09-09
|
||
|
Execute multiple steps before yielding. Increases perceived
|
||
|
performance by about 10x.
|
||
|
|
||
|
Adjust lores colors per Linards Ticmanis on comp.sys.apple2.
|
||
|
|
||
|
Added Joystick, reorganized web pages
|
||
|
|
||
|
2007-09-04
|
||
|
Added MON/NOMON support.
|
||
|
|
||
|
Fixed bugs with: READ into arrays, two argument MID$, e-format number
|
||
|
parsing, DOS null command
|
||
|
|
||
|
2007-09-03
|
||
|
Bugfixes: SPC() and TAB() followed by ; in PRINT statements. DOS
|
||
|
parameter lists can include spaces.
|
||
|
|
||
|
2007-09-02
|
||
|
Oops - FRE is a function not a statement. Fixed!
|
||
|
|
||
|
2007-09-01
|
||
|
Implemented DATA/READ/RESTORE
|
||
|
|
||
|
2007-08-31
|
||
|
Implemented DEF FN
|
||
|
|
||
|
2007-08-30
|
||
|
Implemented DIM. File reads complete.
|
||
|
|
||
|
2007-08-27
|
||
|
Added preliminary DOS implementation. Sequential access read only;
|
||
|
there's a file called "JABBERWOCKY" to try.
|
||
|
|
||
|
2007-08-24
|
||
|
Fixed bugs with string variables, key presses in IE, and HTML tweaks
|
||
|
for better layout and lo-res sizing
|
||
|
|
||
|
2007-06-05
|
||
|
Added paddle support (PDL)
|
||
|
|
||
|
2007-06-03
|
||
|
Added lores graphics support (GR, PLOT, HLIN, VLIN, COLOR=, SCRN)
|
||
|
|
||
|
2007-05-01
|
||
|
Extracted step mechanism from interpreter, so web page can introduce
|
||
|
delays; no longer case-sensitive to keywords
|
||
|
|
||
|
2007-04-29
|
||
|
Fixed command-line mode again
|
||
|
|
||
|
2007-04-27
|
||
|
Added screen emulation (e.g. HOME, HTAB, VTAB) and input (e.g. GET)
|
||
|
|
||
|
2007-04-24
|
||
|
Integrated into browser (display and event model)
|
||
|
|
||
|
2007-04-21
|
||
|
Project started; interpreter functional via WSH on Windows
|