Jim Battle wrote:
bfranchuk at jetnet.ab.ca wrote:
blstuart at
bellsouth.net wrote:
Any good
leads as am still looking for a small boot strapable
langauge here. Tiny C will not work
as my instruction set does NOT have register to register
operations. I plan to have a wopping
48Kb system as that was BIG memory 1975 ish.
The two that immediately jump to mind are forth and lisp.
BLS
Off hand I have not seen many small LISP's around other than the one
for the PDP-1. I think there was one for the 6800 once, but LISP
tends to
need lots of memory space. I could do Forth but it would be slow as I
have
no auto-incriment registers and wound need to use memory variables.
More like NEXT: ISZ FPC; LD IX I FPC, JMP I IX+0
Ben you have said these three things in this thread:
(1) "Any good leads as am still looking for a small boot strapable
langauge here."
(2) "Tiny C will not work as my instruction set does NOT have register
to register operations."
(3) "I could do Forth but it would be slow as I have no auto-incriment
registers and wound need to use memory variables."
What is your goal? If you don't care to have any existing code base
to draw upon, then you should be able to make up a language that
*does* fit your weird-ass architecture, whatever it is. If you do
hope to have some semi-standard HLL language so you can then run
existing code, it sounds like you are off to a bad start if you can
target neither a pared down C nor Forth.
I am still trying to figure out my word length here again. I can do 18
bits with CPLD's
or 20 bits with 2901's now you got me thinking of the overhead of
modern logic.
The architecture is the classic PDP 8 style design but with full alu ops
Add,sub,and,or,xor,ld,st.
Immediate (#) instructions have been added so I have use JZ,JNZ rather
than skips.
I still think a tiny but full bootstrap[1] language could fit in 16 Kb
of memory as well as
a limited assembler for the bootstrap language [2].
I don't see why the lack of register to register
ops would prevent
implementing a tiny C. There is nothing in the language that would
demand it.
The two compilers I have seen require some register to register moves,
that my logic design does
not permit. In order to keep the instruction set simple as well as not
having the room to decode more
operations, register to register operations had to be limited to from a
index reg to the AC, rather than
the general format.
Some of the Tiny-BASICs published in Dr. Dobbs early
on were two level
interpreters, kind of a specialized byte code. They would define some
artificial machine code that was easy to implement on an 8b micro, and
then wrote the Tiny BASIC in the artificial machine code. It made the
interpreter slower, but it saved bytes and made it possible to move
the tiny basic to another uP by rewriting just the artificial machine
code interpreter. The Apple II ROMs had the SWEET-16 interpreter
built in.
This is still too tiny ... I am looking for a semi -practical language
and all modern stuff is ment
for 24+bit addressing.
1) Structures and arrays must be definable. Only + - & | ^ and == <= >=
!= need to be alu operations.
n *n n[i] n[i].foo need be variable types.
2) No symbols permited, only numeric labels. _oooo or $oooo where o is
a octal digit.
This way a simple index look up can find a symbol value.