update to VTL02C
This commit is contained in:
Klaus2m5 2015-10-29 20:12:42 +01:00
parent e544e9bb83
commit 251944d43a
4 changed files with 1389 additions and 1166 deletions

View File

@ -1,28 +1,30 @@
----------------------------------------------------- -----------------------------------------------------
VTL-2 for the 6502 (VTL02B) VTL-2 for the 6502 (VTL02C)
Original Altair 680b version by Original Altair 680b version by
Frank McCoy and Gary Shannon 1977 Frank McCoy and Gary Shannon 1977
2012: Adapted to the 6502 by Michael T. Barry 2012: Adapted to the 6502 by Michael T. Barry
see source code for copyright notice see source code for copyright notice
Thanks to sbprojects.com for a very nice assembler! Thanks to sbprojects.com for a very nice assembler!
----------------------------------------------------- -----------------------------------------------------
2015: Revision B, with several space optimizations
(suggested by dclxvi) and enhancements (suggested
by mkl0815 and Klaus2m5).
The basic concepts of VTL-2 (Very Tiny Language): The basic concepts of VTL-2 (Very Tiny Language):
http://www.altair680kit.com/manuals/Altair_680-VTL-2%20Manual-05-Beta_1-Searchable.pdf http://www.altair680kit.com/manuals/Altair_680-VTL-2%20Manual-05-Beta_1-Searchable.pdf
The files: The files:
VTL02B for the apple II & the sbprojects.com assembler: Original source code from Mike:
vtl02ba2.asm VTL02C for the apple II & the sbprojects.com assembler
VTL02B for the Kowalski 6502 simulator: vtl02ca2.asm
http://www.exifpro.com/downloads/6502_1.2.12.zip: Modified versions (Syntax, I/O & user RAM size):
vtl02ba2.65s VTL02C for the Kowalski 6502 simulator
VTL02B for my emulator & the Kingswood AS65 assembler: http://www.exifpro.com/downloads/6502_1.2.12.zip
vtl02ba2.a65 vtl02ca2.65s
VTL02C for my emulator & the Kingswood AS65 assembler
vtl02ca2.a65
New features in Revision B: 2015: Revision B included some space optimizations
(suggested by dclxvi) and enhancements
(suggested by mkl0815 and Klaus2m5):
* Bit-wise operators & | ^ (and, or, xor) * Bit-wise operators & | ^ (and, or, xor)
Example: A=$|128) Get a char and set hi-bit Example: A=$|128) Get a char and set hi-bit
@ -31,13 +33,13 @@
Example: <=P) Point to the I/O port at P Example: <=P) Point to the I/O port at P
@=@&254^128) Clear low-bit & flip hi-bit @=@&254^128) Clear low-bit & flip hi-bit
* The space character is no longer a valid user * Starting with VTL02B, the space character is no
variable nor a "valid" binary operator. It is longer a valid user variable nor a "valid" binary
now only significant as a numeric constant operator. It's now only significant as a numeric
terminator, and as a place-holder in strings and constant terminator and as a place-holder in
program listings, where it may be used to improve strings and program listings, where it may be
human readability, at a slight cost in execution used to improve human readability (at a slight
speed and memory consumption. cost in execution speed and memory consumption).
Example: Example:
* (VTL-2) * (VTL-2)
1000 A=1) Init loop index 1000 A=1) Init loop index
@ -52,3 +54,15 @@
1020 ? = "" ) Newline 1020 ? = "" ) Newline
1030 A = A + 1 ) Update index 1030 A = A + 1 ) Update index
1040 # = A < 10 * 1010 ) Loop until done 1040 # = A < 10 * 1010 ) Loop until done
2015: Revision C includes further enhancements
(suggested by Klaus2m5):
* "THEN" and "ELSE" operators [ ]
A[B returns 0 if A is 0, otherwise returns B.
A]B returns B if A is 0, otherwise returns 0.
* Some effort was made to balance interpreter code
density with interpreter performance, while
remaining within the 1KB constraint. Structured
programming principles remained at low priority.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff