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
Frank McCoy and Gary Shannon 1977
2012: Adapted to the 6502 by Michael T. Barry
see source code for copyright notice
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):
http://www.altair680kit.com/manuals/Altair_680-VTL-2%20Manual-05-Beta_1-Searchable.pdf
The files:
VTL02B for the apple II & the sbprojects.com assembler:
vtl02ba2.asm
VTL02B for the Kowalski 6502 simulator:
http://www.exifpro.com/downloads/6502_1.2.12.zip:
vtl02ba2.65s
VTL02B for my emulator & the Kingswood AS65 assembler:
vtl02ba2.a65
Original source code from Mike:
VTL02C for the apple II & the sbprojects.com assembler
vtl02ca2.asm
Modified versions (Syntax, I/O & user RAM size):
VTL02C for the Kowalski 6502 simulator
http://www.exifpro.com/downloads/6502_1.2.12.zip
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)
Example: A=$|128) Get a char and set hi-bit
@ -31,13 +33,13 @@
Example: <=P) Point to the I/O port at P
@=@&254^128) Clear low-bit & flip hi-bit
* The space character is no longer a valid user
variable nor a "valid" binary operator. It is
now only significant as a numeric constant
terminator, and as a place-holder in strings and
program listings, where it may be used to improve
human readability, at a slight cost in execution
speed and memory consumption.
* Starting with VTL02B, the space character is no
longer a valid user variable nor a "valid" binary
operator. It's now only significant as a numeric
constant terminator and as a place-holder in
strings and program listings, where it may be
used to improve human readability (at a slight
cost in execution speed and memory consumption).
Example:
* (VTL-2)
1000 A=1) Init loop index
@ -52,3 +54,15 @@
1020 ? = "" ) Newline
1030 A = A + 1 ) Update index
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