Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
406 commits
Select commit Hold shift + click to select a range
bff9474
add headerless mode
boriel Oct 18, 2017
2b7010f
Merged in feature/headerless (pull request #107)
boriel Oct 18, 2017
c59564b
Merge pull request #99 from boriel/feature/headerless
boriel Oct 18, 2017
72a407b
reset global counters on main()
boriel Oct 19, 2017
5ec9619
allow ANY type in global options
boriel Oct 19, 2017
924334f
add test_XXX to test basic programs
boriel Oct 19, 2017
4c2ca36
update symbols test
boriel Oct 24, 2017
9bac300
bugfix: initialize the api.config
boriel Oct 24, 2017
71c1a62
moved doctstring text to a file
boriel Oct 25, 2017
cc8484a
allow posargs in tox
boriel Oct 25, 2017
562c677
avoid E722 and E741 flake8 errors
boriel Oct 25, 2017
c6a6dbb
prevents error on temp dirs
boriel Oct 25, 2017
1531bce
update travis setup to python 3.6
boriel Oct 25, 2017
5a92162
Merge pull request #100 from boriel/chore/test_improvement
boriel Oct 25, 2017
f30f63d
Merged in chore/test_improvement (pull request #108)
boriel Oct 25, 2017
912bcd3
update pong example
boriel Oct 22, 2017
91cee4e
Merged in chore/example (pull request #109)
boriel Oct 27, 2017
366e456
Merge pull request #101 from boriel/chore/example
boriel Oct 27, 2017
6339f1a
bugfix: fix read / write errors
boriel Oct 27, 2017
4168200
bugfix: fix memcopy library function
boriel Oct 28, 2017
4e61d40
Merged in bugfix/memcopy (pull request #110)
boriel Oct 29, 2017
717b1ba
Merged in bugfix/esxdos (pull request #111)
boriel Oct 29, 2017
ceae5d2
Merge pull request #103 from boriel/bugfix/esxdos
boriel Oct 29, 2017
8115c98
Merge pull request #102 from boriel/bugfix/memcopy
boriel Oct 29, 2017
214c0d9
Add basic HTML coverage
bartsanchez Nov 2, 2017
5dfe327
Merge pull request #104 from bartsanchez/feature/add_coverage
boriel Nov 2, 2017
7ed49f5
Merged in feature/add_coverage (pull request #112)
boriel Nov 2, 2017
932f895
update README.md file
boriel Oct 16, 2017
a83ba8e
Merged in doc/readme (pull request #113)
boriel Nov 2, 2017
2969ee1
Merge pull request #105 from boriel/doc/readme
boriel Nov 2, 2017
fae9c67
Bump version: 1.7.1 → 1.7.2
boriel Nov 2, 2017
4072023
Merged in release/bumpversion (pull request #114)
boriel Nov 2, 2017
f92cf16
Merge pull request #106 from boriel/release/bumpversion
boriel Nov 2, 2017
1288789
bugfix: potential crash upon error
boriel Nov 3, 2017
9ec35cb
add command line options to the preprocessor
boriel Nov 3, 2017
5b730d7
bugfix: correctly name program types
boriel Nov 3, 2017
af48a99
Use coverage only in py27 environment
boriel Nov 5, 2017
c8eca73
Merged in feature/prepro_options (pull request #115)
boriel Nov 5, 2017
dffb8fe
Merge pull request #107 from boriel/feature/prepro_options
boriel Nov 5, 2017
e656f3b
refact: prevent potential bug when creating block
boriel Nov 6, 2017
b3e19ad
Merged in refact/block (pull request #116)
boriel Nov 6, 2017
9d5ac18
Merge pull request #108 from boriel/refact/block
boriel Nov 6, 2017
2948563
Added badges to README.md file
boriel Nov 7, 2017
1e92902
Exclude .tox folder from coverage
bartsanchez Nov 7, 2017
8e7bb13
Merged in feature/exclude_tox_folder_from_coverage (pull request #117)
boriel Nov 7, 2017
1e3091f
Merge pull request #110 from boriel/feature/exclude_tox_folder_from_c…
boriel Nov 7, 2017
e93dd0e
Merged in improvement/readme (pull request #118)
boriel Nov 7, 2017
c81fc42
Merge pull request #111 from boriel/improvement/readme
boriel Nov 7, 2017
d8de9f1
Enable Coverage for all environments
bartsanchez Nov 12, 2017
065e306
Merged in feature/enable_coverage_for_all_environments (pull request …
boriel Nov 13, 2017
65d7b61
bugfix: static math functions
boriel Nov 21, 2017
a6ec88b
Merged in bugfix/mathfunc (pull request #120)
boriel Nov 21, 2017
b11174b
remove debug print
boriel Nov 21, 2017
862df65
Merged in cleanup/print (pull request #121)
boriel Nov 21, 2017
06cc499
make symbol NOP iterable
boriel Nov 22, 2017
63297a2
Merged in refact/symbolNOP (pull request #122)
boriel Nov 22, 2017
c88ee8c
code clean up. More PEP-8 compliant
boriel Nov 22, 2017
5bcca4b
Refact: simplify grammar
boriel Nov 6, 2017
38c0e3e
opt: use visitor for generic if optimization
boriel Nov 18, 2017
54cbe17
code cleanup
boriel Nov 19, 2017
8ceefb3
bufix: Empty ELSE
boriel Nov 20, 2017
8a755fb
add function is_LABEL to examine nodes
boriel Nov 20, 2017
baf0d52
bugfix: do not optimize THEN accessed IF blocks
boriel Nov 20, 2017
4f95ed8
bugfix: do not optimize ELSE accessed IF blocks
boriel Nov 20, 2017
7117784
added pending label optimization
boriel Nov 20, 2017
17e2661
refact: uses generic if optimization
boriel Nov 21, 2017
fe5da70
better coverage for IF empty case
boriel Nov 21, 2017
dd68391
refact: simpler grammar for ELSEIF
boriel Nov 21, 2017
76c7aeb
Better code generation
boriel Nov 21, 2017
934f6a0
bugfix: WHILE optimization
boriel Nov 22, 2017
be7c553
Merged in feature/ifinline (pull request #123)
boriel Nov 22, 2017
7d9aab2
bugfix: prevent FOR optmization on accessed blocks
boriel Nov 24, 2017
d109918
Merged in bugfix/for_optimization (pull request #124)
boriel Nov 24, 2017
22dc7d3
refact: BLOCK symbol
boriel Nov 23, 2017
41e0100
Merged in refact/block (pull request #125)
boriel Nov 24, 2017
192b4a9
feature: mimic FreeBasic IF
boriel Nov 26, 2017
1d1ea9e
Merged in feature/mutiline_if (pull request #126)
boriel Nov 26, 2017
9b06431
bugfix: prevent infinite recursion in traversal
boriel Nov 28, 2017
990182d
Merged in bugfix/recursion (pull request #127)
boriel Nov 28, 2017
3f27b39
revert last change to follow the community
boriel Nov 27, 2017
23a74b3
update PONG example
boriel Nov 28, 2017
3b7900a
update input.bas library for new syntax
boriel Nov 28, 2017
98aa173
add support for more IF ENDIF constructs
boriel Nov 28, 2017
d69e4a0
Merged in bugfix/revert_if_colon (pull request #128)
boriel Nov 29, 2017
1ce5b3b
bugfix: incorrect asm preproc for \
boriel Nov 29, 2017
27f44d1
Merged in bugfix/preproc (pull request #129)
boriel Nov 29, 2017
64f8cab
bugfix: fix crash in optimizer
boriel Nov 30, 2017
db66c9f
Merged in bugfix/peephole_optimizer (pull request #130)
boriel Dec 1, 2017
a26b299
bugfix: potential crash on windows line endings
boriel Dec 1, 2017
7c175fe
add git attributes to avoid CR/LF conversion
boriel Dec 1, 2017
f55971a
Merged in bugfix/ifcrash (pull request #131)
boriel Dec 1, 2017
f32c63f
bugfix: infinite loop while visiting nodes
boriel Dec 3, 2017
18863c4
Merged in bugfix/infinite_loop (pull request #132)
boriel Dec 5, 2017
33ed90b
bugfix: fixes a bug in the -O3 optimizer
boriel Dec 10, 2017
8ec8813
Merged in bugfix/o3haplo (pull request #133)
boriel Dec 11, 2017
141c4dc
update ChangeLog file
boriel Dec 11, 2017
bcf20c7
Bump version: 1.7.2 → 1.8.0
boriel Dec 11, 2017
f7c9850
Merged in release/bumpversion (pull request #134)
boriel Dec 11, 2017
2391c72
bugfix: fix crash with some instructions
boriel Dec 13, 2017
b1e3058
Merged in bugfix/atoloO1 (pull request #136)
boriel Dec 13, 2017
504e958
Merged in bugfix/atoloO1 (pull request #137)
boriel Dec 14, 2017
29dcd0b
bugfix: allow binary operators in asm inline
boriel Jan 7, 2018
c1fd302
Merged in bugfix/operators_asm (pull request #139)
boriel Jan 7, 2018
f35a4b6
bugfix: prevent potential bugfix in memcopy lib
boriel Jan 12, 2018
cbc61a8
Merged in bugfix/memory_library (pull request #140)
boriel Jan 12, 2018
ea81121
Improve radastan mode routines
boriel Jan 15, 2018
319cdea
restores tox.ini back
boriel Jan 15, 2018
2d3b908
Merged in improvement/radastan_mode (pull request #141)
boriel Jan 15, 2018
d483d89
bugfix: enable-break
boriel Jan 22, 2018
5a57009
Merged in bugfix/enable_breaks (pull request #142)
boriel Jan 23, 2018
cc2c717
bugfix: fixes an issue with keyboard and input lib
boriel Jan 23, 2018
c6707c8
Merged in bugfix/input-library (pull request #143)
boriel Jan 24, 2018
9e2b4e7
fix permissions to non-exec
boriel Jan 24, 2018
c80a83a
bugfix: macro parameters not working in asm scope
boriel Jan 24, 2018
2d9aa7d
Merged in bugfix/testing (pull request #144)
boriel Jan 24, 2018
eb0d552
Merged in bugfix/preprocessor_asm (pull request #145)
boriel Jan 24, 2018
842d3a2
bugfix: missing attribute initialization for LABEL
boriel Jan 26, 2018
2006291
Merged in bugfix/crash_lcd (pull request #146)
boriel Jan 26, 2018
b31e3cf
bugfix: crash with -O3 (optimizer). Fixed.
boriel Jan 28, 2018
a426f7c
Merged in bugfix/lcd_o3_crash (pull request #147)
boriel Jan 28, 2018
9d42efb
bugfix: correctly emit OUT instruction
boriel Jan 29, 2018
69882c1
Merged in bugfix/haplo_out (pull request #148)
boriel Jan 30, 2018
4da41db
improvement: optimizes AND (boolean) instruction
boriel Jan 30, 2018
8f7b5ee
optimize: do not emit useless AND instructions
boriel Jan 30, 2018
8266562
Merged in improvement/AND_backend (pull request #149)
boriel Jan 30, 2018
c9640b0
bugfix: crash in ASM on JR Z, <wrong label>
boriel Jan 30, 2018
1b03a87
Merged in bugfix/zxbasm_tolo (pull request #150)
boriel Jan 30, 2018
20d655b
bugfix: prevent crash when using zxblex alone
boriel Feb 3, 2018
1e091d5
story: add support for EndIF
boriel Feb 2, 2018
25d1cd4
story: allow BIN with no number
boriel Feb 3, 2018
88fcbb7
Merged in improvement/new_tags (pull request #151)
boriel Feb 4, 2018
1a60002
bugfix: crash upon invalid lexer chars
boriel Feb 3, 2018
c84214c
story: allow spaces before ':' in asm labels
boriel Feb 4, 2018
c9d7a4a
cleanup: remove blank lines
boriel Feb 4, 2018
bf57f30
refact: asm is also a label followed by an inst
boriel Feb 4, 2018
fb7f9e4
story: allow multiple inst in a one line
boriel Feb 4, 2018
7b68a6a
Merged in improvement/zxbasm_colon (pull request #152)
boriel Feb 4, 2018
86271b1
bugfix: fix a wrong token code for LET
boriel Feb 6, 2018
14020c8
add C Nonsense in BASIC error code
boriel Feb 5, 2018
ed4749d
add mcleod BASIC eval routine! yay!!
boriel Feb 5, 2018
3881e83
add eval.bas example
boriel Feb 6, 2018
a1dca80
Merged in feature/add_basic_eval (pull request #153)
boriel Feb 6, 2018
84d8ba5
Bump version: 1.8.0 → 1.8.1
boriel Feb 6, 2018
b8ff428
Merged in release/bumpversion (pull request #154)
boriel Feb 6, 2018
1ad3e67
optimize some logical operations
boriel Feb 17, 2018
8a13cd3
improvement: optimize byte operations
boriel Feb 18, 2018
7319682
optimize inc / dec for bytes
boriel Feb 20, 2018
cf48b01
optimize local byte operations
boriel Feb 18, 2018
a070c7c
add more byte optimizations
boriel Feb 19, 2018
e4c416d
bugfix: O3 optimizer has several bugs
boriel Feb 20, 2018
71d9863
add 2 more byte optimization
boriel Feb 21, 2018
67a7cbd
tests updated to reflect changes
boriel Feb 18, 2018
a62b171
add O3 further optimizations
boriel Mar 1, 2018
f4c33a1
optimize O3 level of the peephole
boriel Mar 6, 2018
fadaa93
Merged in feature/peephole_opt (pull request #155)
boriel Mar 13, 2018
c01d28c
bugfix: print42 now works with CHR(13) and CHR(22)
boriel Mar 1, 2018
e0da1a1
Add input42 capability
boriel Mar 13, 2018
dd083bc
Merged in bugfix/print42 (pull request #156)
boriel Mar 13, 2018
b14635e
Bump version: 1.8.1 → 1.8.2
boriel Mar 13, 2018
0a20671
Merged in bumpversion/1.8.2 (pull request #157)
boriel Mar 13, 2018
4094630
bugfix: crash on wrong parameters
boriel Mar 20, 2018
2e75429
Add comment to function for better clarification
boriel Mar 20, 2018
5c5b4f5
bugfix: report undeclared function for f$(x$)
boriel Mar 20, 2018
8ff7315
bugfix: fixes crash on undeclared subtr assign
boriel Mar 21, 2018
ca35495
bugfix: substr assignements not optimized with -O2
boriel Mar 31, 2018
107f632
bugfix: add support for syntax a$(1)(4)="x"
boriel Apr 1, 2018
a6311b1
bugfix: allow STR x
boriel Apr 1, 2018
baf3231
make error message clearer
boriel Apr 1, 2018
6a1b423
comment typos fixed
boriel Apr 1, 2018
9de8501
allow substr assignment with no LET
boriel Apr 1, 2018
b506c8b
bugfix: substring of str expression
boriel Apr 2, 2018
cf7aa0f
bugfix: allow no blank line between DECLAREs
boriel Apr 5, 2018
e8cc9cd
add test cases to increase coverage
boriel Apr 1, 2018
dcf6ae5
code clean up
boriel Apr 5, 2018
9a6ca84
Merged in bugfix/mike_parser_crash (pull request #158)
boriel Apr 5, 2018
00c789a
improvement: optimize print str for arr elements
boriel Apr 8, 2018
e1a8a69
Merged in improvement/optimize_print_str_array (pull request #159)
boriel Apr 8, 2018
18e70d6
bugfix: bad -O2 optimization
boriel Apr 7, 2018
e2c4ce1
Merged in bugfix/optimizer_O2 (pull request #160)
boriel Apr 8, 2018
2a17fb6
pytest_cache/ ignored
boriel Apr 8, 2018
3178345
bugfix: syntax for func definition need separator
boriel Apr 7, 2018
4af4a06
bugfix: syntax for function def inline
boriel Apr 7, 2018
eaf611e
feature: add support for substr assign in array
boriel Apr 8, 2018
bc036ea
Merged in bugfix/syntax_several (pull request #161)
boriel Apr 8, 2018
3d7609c
chore: add input example
boriel Apr 9, 2018
95eba7f
chore: ignore some files for lang detection
boriel Apr 9, 2018
0036478
Merged in chore/examples_and_attr (pull request #162)
boriel Apr 9, 2018
80a4b3d
Bump version: 1.8.2 → 1.8.3
boriel Apr 10, 2018
095540d
Merged in release/bumpversion (pull request #163)
boriel Apr 10, 2018
1c922ef
bugfix: bug in peephole -O3 crash
boriel Apr 15, 2018
37e0d8d
Merged in bugfix/optimizer_wws2 (pull request #164)
boriel Apr 15, 2018
681681c
cleanup: use correct identifiers
boriel Apr 29, 2018
9174341
bugfix: do not optimize AT variables
boriel Apr 29, 2018
83b6433
Merged in bugfix/variable_at_optimized (pull request #165)
boriel Apr 29, 2018
3e26017
bugfix: crash on undeclared array
boriel Apr 29, 2018
ccf6e5a
Merged in bugfix/crash_alxinho (pull request #166)
boriel Apr 29, 2018
afb7620
add test alxinho1.bas
boriel Apr 29, 2018
84fc134
bugfix: crash on constant dim elements
boriel Apr 29, 2018
7c86ccd
Merged in bugfix/crash_array_init_const (pull request #167)
boriel Apr 29, 2018
4a3577d
comment typos cleanup
boriel May 1, 2018
39ae354
improvement: funcdecls now have their own lineno
boriel May 1, 2018
c7fead6
issue warning on undeclared function type
boriel May 1, 2018
b9904c8
bugfix: bad sigil being accepted
boriel May 1, 2018
fc8c490
bugfix: prevent duplicated error / warning lines
boriel May 1, 2018
27a0079
feature: warn about implicit type in parameters
boriel May 1, 2018
a428de6
Merged in improvement/warning_undeclared_param_type (pull request #168)
boriel May 1, 2018
aa73469
bugfix: crash on constant usage
boriel Jun 17, 2018
fdfb6b0
Merged in bugfix/const_eval_error (pull request #169)
boriel Jul 30, 2018
3a0219a
bugfix: allows UTF-8 BOM signature
boriel Jul 30, 2018
ff21324
Merged in bugfix/utf-8_BOM (pull request #170)
boriel Jul 30, 2018
3485b4f
Bump version: 1.8.3 → 1.8.4
boriel Jul 31, 2018
9a419fb
Merged in release/bumpversion (pull request #171)
boriel Jul 31, 2018
4ff6138
bugfix: fix crash on wrong array definition
boriel Aug 16, 2018
7618d48
Merged in bugfix/array_error (pull request #174)
boriel Aug 16, 2018
ed2b58c
Bump version: 1.8.4 → 1.8.5
boriel Aug 16, 2018
a1e0167
Merged in release/bumpversion (pull request #173)
boriel Aug 16, 2018
f9c8cb7
bugfix: END sentence
boriel Sep 20, 2018
f034ee4
Bump version: 1.8.5 → 1.8.6
boriel Sep 20, 2018
13a7656
Merged in bugfix/end_program (pull request #175)
boriel Sep 20, 2018
2ce9f46
bugfix: do not remove asm block upon jump
boriel Sep 23, 2018
25faf38
Bump version: 1.8.6 → 1.8.7
boriel Sep 23, 2018
7dd3cd3
Merged in bugfix/asm_label_lost (pull request #176)
boriel Sep 23, 2018
0503a2a
bugfix: 32bit operations bug
boriel Sep 30, 2018
23c809b
Bump version: 1.8.7 → 1.8.8
boriel Sep 30, 2018
1e27377
Merged in bugfix/div32 (pull request #178)
boriel Sep 30, 2018
c9b2322
add option --compile-only
boriel Oct 14, 2018
0e1b501
feature: allow specifying ORG in hexa
boriel Oct 21, 2018
6ecb579
Merged in feature/base_org_hexa (pull request #179)
boriel Nov 15, 2018
b48bef5
bugfix: crash upon constant array access
boriel Nov 13, 2018
efd3020
Add runtime test arrcheck2 for array testing
boriel Nov 13, 2018
910c87e
Bugfix: fix debug array check not working
boriel Nov 13, 2018
248bc7d
Update tests
boriel Nov 14, 2018
7833016
Update flake8 tests
boriel Nov 14, 2018
e569419
add test to check for array boundary checking
boriel Nov 15, 2018
03156e9
Merged in bugfix/const_arr_crash (pull request #180)
boriel Nov 15, 2018
817549c
bugfix: read crash
boriel Nov 16, 2018
a92c6c3
Merged in bugfix/p_read (pull request #181)
boriel Nov 16, 2018
e6c9a55
Refact: use super instead of calling the base class constructor
boriel Nov 18, 2018
acd6b4f
Bugfix: READ should not recreate args
boriel Nov 18, 2018
65d9d27
Merged in bugfix/read_array_base (pull request #182)
boriel Nov 18, 2018
500a49b
Typo fix
boriel Nov 19, 2018
2197142
Bugfix: missing label err when no DATA is used
boriel Nov 19, 2018
7be661a
Merged in bugfix/data_missing_label (pull request #183)
boriel Nov 19, 2018
6afb406
make int to behave as BASIC INT
boriel Oct 21, 2018
109c85b
Merged in feature/int_to_floor (pull request #184)
boriel Nov 22, 2018
dcf29a5
Bump version: 1.8.8 → 1.8.9
boriel Nov 22, 2018
6073443
Merged in release/bumpversion (pull request #185)
boriel Nov 22, 2018
bc9de56
Fix error on multiple ORG
boriel Mar 7, 2019
47dd17f
Merged in bugfix/asm_org_label (pull request #186)
boriel Apr 1, 2019
3e76ad5
Follow flake8 to pass tests
boriel Apr 2, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[bumpversion]
current_version = 1.6.9
current_version = 1.8.9
files = version.py

3 changes: 3 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[run]
omit =
.tox/*
18 changes: 18 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@

* text=false

*.bas -crlf
*.asm -crlf
*.bi -crlf

*.txt text
*.md text
*.py text
*.ini text
*.yml text

*.png binary

*.bas linguist-vendored
*.asm linguist-vendored

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
*.egg-info/
*.pyc
.cache/
.pytest_cache/
.idea/
.python-version
.tox/
Expand All @@ -16,3 +17,5 @@ dist/
examples/*.bin
examples/*.tzx
scratch/
.coverage
htmlcov/
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
language: python
python:
# - "2.7" <- Unsupported, uses 2.7.9 ?
- "3.5"
- "3.6"
# PyPy versions
# - "pypy" # PyPy2 2.5.0
# - "pypy3" # Pypy3 2.4.0
Expand Down
117 changes: 115 additions & 2 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,7 +1,107 @@
================================================================
Changes from Version 1.8.8 to 1.8.9
! Bugfix: Crash in READ and DATA sentences under some cases
! Bugfix: Fix INT to behave like the original one (Round to -INF)
! Bugfix: --array-check was not working properly. Fixed!

================================================================
Changes from Version 1.8.7 to 1.8.8
! Bugfix: fix 32 bit operations (DIV, MOD...)

================================================================
Changes from Version 1.8.6 to 1.8.7
! Bugfix: do not remove ASM blocks (optimize)

================================================================
Changes from Version 1.8.5 to 1.8.6
! Bugfix: END instruction was not returning result. Fixed.

================================================================
Changes from Version 1.8.4 to 1.8.5
! Bugfix: crash on bad array declaration

================================================================
Changes from Version 1.8.3 to 1.8.4
! Several bugfixes with contants declaration
+ Suport for UTF-8 BOM files
! Bugfixes with -O3 crash
! Fixes crash with arrays
! Other bugfixes and better stability
* Better warning explanation under some circumstances

================================================================
Changes from Version 1.8.2 to 1.8.3
! Bugfix in the peephole optimizer (-O2)
! Several bugfixes to improve stability
+ Optimization in the peephole optimizer (-O1)
+ Support for extended array str element operations
! Other syntax bugfixes

================================================================
Changes from Version 1.8.1 to 1.8.2
! Bugfixes in the peephole optimizer
+ Shorter and faster generated code (deep optimizations)
! Bugfix in the PRINT42 routine that now supports newlines, etc
+ Implemented routine input42 (INPUT42.BAS) for PRINT42 mode

================================================================
Changes from Version 1.8.0 to 1.8.1
! Bugfixes in the peephole optimizer
! Bugfix in OUT instruction
+ Fixes minor errors and bugs (i.e. --enable-break)
+ Improved and faster generated code (IN, OUT, AND, check BREAK...)
* Added basic.bas library (meta-interpreter) and eval.bas example!!
(thanks to @mcleod_ideafix!!!)

================================================================
Changes from Version 1.7.2 to 1.8.0
! Bugfixes in the peephole optimizer (-O3)
+ Better optimized code
+ Improved compiling speed and more stability
+ Fixes minor errors and bugs
+ Now single line IF sentences does not require END IF

================================================================
Changes from Version 1.7.1 to 1.7.2
! Bugfixes in libraries esxdos.bas and memcopy.bas
* Improved pong.bas example
* Improved readme file :) (thanks to @harko and @haplo)

================================================================
Changes from Version 1.7.0 to 1.7.1
! Bugfixes with -O3 and DATA statements
* Little improvements
* Updates README.md and added TESTING.md

================================================================
Changes from Version 1.6.13 to 1.7.0
+ Added READ, DATA, RESTORE (finally!)
+ Allows to call SUBs with no parenthesis (e.g. mySUB 1, 2+a)
+ Allows to call FUNCTIONS with 1 or no params with no parenthesis
+ Some bug fixes for better stability

================================================================
Changes from Version 1.6.12 to 1.6.13
! Fixes and improves strict mode checking
+ Adds #error and #warning directives

================================================================
Changes from Version 1.6.11 to 1.6.12
+ Adds missing default font (Haplo) for Radastan mode
! Bugfixes and little improvements

================================================================
Changes from Version 1.6.10 to 1.6.11
! Fix infinite recursive include in Windows (yes, win sucks)
* Little optimizations in memset and rnd
* Standarize file includes like in cpp

================================================================
Changes from Version 1.6.9 to 1.6.10
* Added UART library (by yomboprime) for serial communication
* Several bugfixes and minor errors
+ Added many more drawing primitives for Radastan Mode
+ Added instructions ON .. GOTO and ON .. GOSUB
+ Added UART library (by yomboprime) for serial communication
! Several bugfixes and minor errors and better stability
* Better code generation
* Allows array initialization with @label references
* Switch .bas libraries (not the compiler) to MIT license
Expand Down Expand Up @@ -56,6 +156,19 @@ and attribute traversal which depends on the symbolTYPE being parsed.
e.g. for symbolBINARY (binary expressions), we have node.left, node.right,
node.operand, but also node.children[0], node.children[1].

===From Version 1.2.9 to 1.3.0===
* ! Fixed a bug in USR <string>
* ! Fixed a bug in SAVE / LOAD
* ! Fixed a serious bug in the preprocessor
* ! Fixed a bug with DIM and constants
* ! Fixed a bug with SHL/SHR for 0 shifts
* + Added -D option. ZXBASIC now allows commandline macro definition
* ! Fixed a bug with CODE and INKEY$
* ! Fixed a bug with string slicing assignation (e.g. a$(3) = "x")
* ! Fixed a bug with arrays of integer assignation (e.g. a(3) = 5, being a of Integer type)
* ! Fixed a bug with peephole optimizer (-O3)
* * Some changes and code refactorization towards 2.x branch

================================================================
Changes from Version 1.2.8 to 1.2.9

Expand Down
73 changes: 52 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
![Boriel ZX Basic](./zxbasic_logo.png)

[![Build Status](https://travis-ci.org/boriel/zxbasic.svg?branch=master)](https://travis-ci.org/boriel/zxbasic)
[![license](https://img.shields.io/badge/License-GPLv3-blue.svg)](./LICENSE.txt)
[![pyversions](https://img.shields.io/pypi/pyversions/zxbasic.svg)](https://pypi.python.org/pypi/zxbasic)

ZX BASIC
--------
Expand Down Expand Up @@ -30,43 +34,70 @@ For help, support, updates meet the community at my forum:
<http://www.boriel.com/forum/zx-basic-compiler>


INSTALL
-------
INSTALLATION
------------

Go to the ZXBasic download page <http://www.boriel.com/wiki/en/index.php/ZX_BASIC:Archive>
and get the version most suitable for you.
and get the version most suitable for you.

These tools are completely written in python, so you will need a python
interpreter (available on many platforms). Just copy them in a directory of your
hoice and installation is done. :-)
There are, basically, two flavors (both with identical capabilities):

For Windows users there is also a binary .MSI installation, which does not need
python installed.
- For Windows you can download de win32 executable (Windows .exe zip package) version.
To install just uncompress it in a directory of your choice.
The main executable is `zxb.exe` (more on this later). With this toolchain
also comes `zxbasm.exe` (the assembler) and `zxbpp.exe` (the preprocessor), but these
are not needed when programming in BASIC.

- For Linux and Mac OSX there is a python version, so you will need a python
interpreter (available on many platforms, and usually already installed in Linux and Mac OSX).
Just uncompress it in a directory of your choice and installation is done. :-)
The main executables are `zxb.py` (the compiler), `zxbasm.py` (the assembler) and `zxbpp.py` (the preprocessor).
You can use this version in Windows, but will need to install a python interpreter first.

TESTING
-------
##### Examples

You will need to get Tox in order to run the project tests. Normally it is done
by calling:

~~~~
$ pip install tox
~~~~
|![Eleuterio, el mono serio](http://www.boriel.com/wiki/en/images/a/ab/EleuterioElMonoSerio.gif)|![El Hobbit](http://www.boriel.com/wiki/en/images/7/72/HobbitEl.gif)|![Knight & Demonds DX](http://www.boriel.com/wiki/en/images/f/fe/KnightsDemonsDX.png)|
|---|---|---|
| An in-game screenshot of Eleuterio by @*na_th_an* | Ingame screenshot of _El Hobbit_ by @*Wilco2000*| Ingame screenshot of _Knignt and Demonds DX_ by Einar Saukas

See more examples at http://www.boriel.com/wiki/en/index.php/ZX_BASIC:Released_Programs

inside a Virtual Environment ( https://virtualenv.pypa.io/en/stable/ ).
QUICK START
-----------

Please, see https://tox.readthedocs.io/en/latest/install.html for more
information about installing Tox.
For a quick start, just open a terminal in your PC in the same directory you uncompressed ZX Basic
and type `zxb` (on Windows) or `zxb.py` (OSX, Linux). You should see a zxbasic message like this:

Once you have installed Tox, just call:
```
usage: zxb [-h] [-d] [-O OPTIMIZE] [-o OUTPUT_FILE] [-T] [-t] [-B] [-a] [-A]
[-S ORG] [-e STDERR] [--array-base ARRAY_BASE]
[--string-base STRING_BASE] [-Z] [-H HEAP_SIZE] [--debug-memory]
[--debug-array] [--strict-bool] [--enable-break] [-E] [--explicit]
[-D DEFINES] [-M MEMORY_MAP] [-i] [-I INCLUDE_PATH] [--strict]
[--version]
PROGRAM
zxb: error: the following arguments are required: PROGRAM
```

Create a text file with the following content:

~~~~
10 CLS
20 PRINT "HELLO WORLD!"
~~~~

Save it as `hello.bas` and finally compile it with:
~~~~
$ tox
zxb -taB hello.bas
~~~~

to get your tests running.
If everything went well, a file named `hello.tap` should be created.
Open it with your favourite emulator (i.e. fuse) and see the result.

Congratulations! You're now ready to create compiled BASIC programs for
your machine. Check and compile the examples included in the examples/ folder
or go to the Wiki <http://zxbasic.net> for further info.

AKNOWLEDGEMENTS
---------------
Expand Down
32 changes: 32 additions & 0 deletions TESTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
TESTING
-------

This instructions are for TDD (Test Drive Development) the compiler and are intended
for developing the compiler internals, and checks for bugs in it.

You **DONT** need to do this to compile BASIC.

You are required to be familiar not only with python, but also with the python
ecosystem (virtualenvs, tox, py.test).

You will need to get Tox in order to run the project tests. Normally it is done
by calling:

~~~~
$ pip install tox
~~~~

Inside a Virtual Environment of your choice ( https://virtualenv.pypa.io/en/stable/ ).

Please, see https://tox.readthedocs.io/en/latest/install.html for more
information about installing Tox.

Once you have installed Tox, just call:

~~~~
$ tox
~~~~

to get your tests running.

This tox config also supports detox (parallel tox testing).
Loading