head	1.30;
access;
symbols;
locks
	bsittler:1.30; strict;
comment	@# @;


1.30
date	2002.07.28.23.26.33;	author bsittler;	state Exp;
branches;
next	1.29;

1.29
date	2001.09.07.17.36.43;	author bsittler;	state Exp;
branches;
next	1.28;

1.28
date	2001.09.07.16.50.56;	author bsittler;	state Exp;
branches;
next	1.27;

1.27
date	2001.07.30.05.39.52;	author bsittler;	state Exp;
branches;
next	1.26;

1.26
date	2001.07.17.06.33.35;	author bsittler;	state Exp;
branches;
next	1.25;

1.25
date	2000.05.07.05.25.39;	author bsittler;	state Exp;
branches;
next	1.24;

1.24
date	2000.04.23.05.47.56;	author bsittler;	state Exp;
branches;
next	1.23;

1.23
date	99.08.04.07.31.29;	author bsittler;	state Exp;
branches;
next	1.22;

1.22
date	99.07.17.00.01.57;	author bsittler;	state Exp;
branches;
next	1.21;

1.21
date	99.03.31.22.59.37;	author bsittler;	state Exp;
branches;
next	1.20;

1.20
date	98.03.29.06.56.44;	author bsittler;	state Exp;
branches;
next	1.19;

1.19
date	98.03.29.05.21.13;	author bsittler;	state Exp;
branches;
next	1.18;

1.18
date	98.03.22.23.00.11;	author bsittler;	state Exp;
branches;
next	1.17;

1.17
date	98.02.13.22.43.11;	author bsittler;	state Exp;
branches;
next	1.16;

1.16
date	98.02.13.02.13.34;	author bsittler;	state Exp;
branches;
next	1.15;

1.15
date	98.02.12.06.44.52;	author bsittler;	state Exp;
branches;
next	1.14;

1.14
date	98.02.12.06.26.43;	author bsittler;	state Exp;
branches;
next	1.13;

1.13
date	98.02.01.11.52.24;	author bsittler;	state Exp;
branches;
next	1.12;

1.12
date	98.02.01.11.43.59;	author bsittler;	state Exp;
branches;
next	1.11;

1.11
date	98.02.01.11.02.21;	author bsittler;	state Exp;
branches;
next	1.10;

1.10
date	98.01.31.15.55.19;	author bsittler;	state Exp;
branches;
next	1.9;

1.9
date	98.01.31.15.41.18;	author bsittler;	state Exp;
branches;
next	1.8;

1.8
date	97.12.14.06.28.38;	author bsittler;	state Exp;
branches;
next	1.7;

1.7
date	97.12.14.06.08.30;	author bsittler;	state Exp;
branches;
next	1.6;

1.6
date	97.12.14.05.28.43;	author bsittler;	state Exp;
branches;
next	1.5;

1.5
date	97.12.08.23.29.09;	author bsittler;	state Exp;
branches;
next	1.4;

1.4
date	97.12.08.05.13.57;	author bsittler;	state Exp;
branches;
next	1.3;

1.3
date	97.12.07.21.43.28;	author bsittler;	state Exp;
branches;
next	1.2;

1.2
date	97.12.07.08.04.26;	author bsittler;	state Exp;
branches;
next	1.1;

1.1
date	97.12.06.12.50.05;	author bsittler;	state Exp;
branches;
next	;


desc
@An overview of the SMOKE-16 tools.
@


1.30
log
@20020728
@
text
@The SMOKE-16 Tools ---------------------------------------------------
$Id: README,v 1.29 2001/09/07 17:36:43 bsittler Exp bsittler $
These tools simulate a virtual 16-bit RISC-like processor. I named it
SMOKE-16. Currently they only simulate the user mode, so you can't yet
port an O.S. to it. Included with the tools are several test programs
in SMOKE-16 assembler. There isn't yet a SMOKE-16 C compiler worth
using.                                                          --BCWS
----------------------------------------------------------------------

Note: The '.h' files mentioned below are in the 'include/smoke16' directory.
      The '.c' files are in the 'src' directory.

MODIFICATION AND REDISTRIBUTION

The file 'hashpjw.c' is derived from an algorithm found in Aho,
Sethi and Ullman's {Compilers: Principles, Techniques and Tools},
published by Addison-Wesley. This algorithm comes from
P.J. Weinberger's C compiler. I hereby place 'hashpjw.c' and
'hashpjw.h' in the public domain. To the best of my knowledge, the
algorithm is not patented.

With the exception of 'hashpjw.c' and 'hashpjw.h', this software is
distributed under the terms of the GNU General Public License, Version
2. See the accompanying COPYING for details. Programs are not
automatically derived from the SMOKE-16 tools just because they use
the SMOKE-16 system calls, so if you do not use the SMOKE-16 C library
(or if you manage to make dynamic linking work) in your program, then
your program will not automatically fall under the GNU General Public
License. This does not, however, preclude any other reason your
program might fall under the GNU General Public License.

CONTRIBUTION

If you contribute anything to this software, I encourage you to keep
the copyright for your contribution and to clearly comment it as being
copyrighted by you. I also encourage you to add a brief description of
your contribution, along with your name and the date you wrote your
contribution to the accompanying CREDITS file.

DOCUMENTATION

See the 'doc' directory. There isn't much there yet. Try the '--help'
option with the development tools, and read the source ;). The
assembler syntax is similar to that used by gas, but is far more
limited. I use the C preprocessor to make my assembly more readable
(see 'asm.h',) but may switch to gasp (the GNU assembly preprocessor)
for future releases.

RELEASE NUMBERS

Each release of the SMOKE-16 toolset is datestamped and the RCS
revision numbers of all files are recorded in an appropriate file in
the 'releases' directory. At this stage many files still change their
names, so the release files are not yet very useful for reconstructing
working copies of previous releases.

BUILDING

The toolset has been developed using several ports of the GNU tools,
so compiling on systems without gcc, bison, flex, and GNU make still
requires some effort.

* QUICK-AND-DIRTY

Linux and SunOS
   sh mkdirs
   make CC=gcc all test

Cygwin32, EMX and DJGPP:
   mkdirs
   make CC=gcc EXE_SUFFIX=.exe BAK_SUFFIX=.bak all test

* EXPLAINED

If you got the SMOKE-16 tools out of a ZIP file, you need to run the
'mkdirs' script to remake the output directories. If you're using
COMMAND.COM, try 'mkdirs.bat' instead.

If you're in a non-UNIX development environment, you might need to
change the file suffix macros in 'Makefile'. In particular, OS/2, DOS
and Windows users may wish to set 'EXE_SUFFIX=.exe' and
'BAK_SUFFIX=.bak'.

Next, run 'make'. If that doesn't work, try hacking it for your
architecture. If you have any success, send me the results.  After
(and if) you get 'make' to work, try 'bin/emu' with one of the
executables in 'bin16'. Some interesting options for 'bin/emu' are
'-disassemble', '-trace' and '-registers'. You can run 'make test' to
automatically run a few basic tests of the tools and test programs.

You can safely ignore preprocessor warnings about
__USER_LABEL_PREFIX__ being redefined. The GNU version of cpp doesn't
really expect to be used as a preprocessor for cross-targetted
assembly, but it works fine despite that warning.

You can make the tools very verbose by defining various DEBUG_*
symbols. See the source for specific debugging tokens. Note that some
options for 'bin/emu' are not available unless you define
corresponding DEBUG_* symbols. These may be defined in 'emu.c'.

If you define DEBUG_CRT in 'libc/src16/crt.s', libc will attempt to
check your SMOKE-16 programs for conformance to the calling
conventions described in 'doc/opcodes.txt'.

If you'd like to build all SMOKE-16 executables without symbol tables,
edit the LD16FLAGS variable in 'Makefile'. You can strip already-built
executables using ld -s.

MAGIC NUMBERS

If you'd like the 'file' command to know about SMOKE-16 object files,
add the contents of 'magic' to your magic file (usually /etc/magic or
/usr/lib/magic) or use it with '-m' option. Note that the 'file'
command included in some older Linux distributions is buggy.

TRANSPARENT BINARY EMULATION (Linux)

If you run Linux, and you've installed the 'binfmt_misc' binary
emulation subsystem, you can transparently execute SMOKE-16
executables using the 'emu--' version of the emulator. Run the
'regbfmts' script (but you may have to edit it first.)

Once you do this, you can invoke SMOKE-16 programs directly.

LIMITATIONS, BUGS, SHORTCOMINGS, TO DO...

- Some of the opcodes may not be implemented correctly in 'emu.c'.
  There should be a regression test for each opcode.

- The linker does not support common-format archives. Instead it
  uses an interim object archive format (LMAGIC) based on the a.out
  file format.

- There is no C compiler for the SMOKE-16. I desire a C compiler that
  is self-hosting, so this may take a while.

- There is no symbolic debugger for the SMOKE-16. The user-mode
  emulator (emu.c) is an obvious place to start hacking, since
  it already prints symbolic addresses when '-disassemble' or
  '-registers' causes the %pc register or other addresses to be
  printed.

- The user-mode emulator (emu.c) is fairly stable, but the
  processor simulator (sim.c) hasn't been written yet.
  This is not a high priority yet.

- SMOKE-16 has about thirty opcodes, since the instruction word is 16
  bits long. This can be rather restricting at times. The multi-word
  pseudo-instructions make this less of an issue than it once was.

- The number of syscalls that have actually been implemented is
  pitifully small. Nothing truly useful is yet possible, I'm afraid.
  Especially nice would be full I/O and signals.

- True binary compatibility across platforms is impossible, since
  emu uses <errno.h> for the errors returned by syscalls and passes
  host O.S. errno directly to the SMOKE-16 program. However, it may be
  "good enough".

- String portability to non-ASCII platforms is a troublesome
  issue. You can assemble portable executables using the '-portable'
  option to 'as', but the resulting executables will only work
  correctly when the emulator is run on an ASCII-compatible host. The
  problem is that the emulator passes SMOKE-16 strings directly to the
  host environment's C library, without performing any sort of
  character-set translation. One solution might be to write a SMOKE-16
  machine simulator, which could perform the translations at the
  'virtual console' level, and allow SMOKE-16 programs to communicate
  with the host machine using protocols like HTTP or NFS (which are
  ASCII-based,) thereby placing the translation onus on the host
  machine. The SMOKE-16 portable character encoding is documented in
  'doc/portable.txt'.

- Various versions of the tools have been built and tested under MacOS
  X, DJGPP (DOS/Win95), Linux (x86, alpha, sparc and ppc), Cygnus
  GNU-Win32 (Win95/NT), EMX (DOS, Win31, WinNT, OS/2), Solaris 2.5 and
  SunOS 4. More testing is needed. If you make changes to get the
  tools to compile for you, let me know what you did so I can add it
  to the main distribution. You can also add an entry to the 'CREDITS'
  file.

If there's anything I've missed, or anything you feel should be added
to this file, send me a patch or an updated copy.

All trademarks used are the property of their respective owners.
@


1.29
log
@added a note on DEBUG_CRT
added some more portability notes
@
text
@d2 1
a2 1
$Id: README,v 1.28 2001/09/07 16:50:56 bsittler Exp bsittler $
d134 2
a135 3
- There is no C compiler for the SMOKE-16. I have a preliminary gcc port,
  but gcc seems quite unsuited to targeting a 16-bit architecture,
  especially since I desire a C compiler that is self-hosting.
@


1.28
log
@Documented DEBUG_CRT.
@
text
@d2 1
a2 1
$Id: README,v 1.27 2001/07/30 05:39:52 bsittler Exp $
d67 1
a67 1
   make all test
d71 1
a71 1
   make EXE_SUFFIX=.exe BAK_SUFFIX=.bak all test
d91 13
a103 7
You can make the tools very verbose by defining DEBUG_* symbols. See
the source for specific debugging tokens. Note that some options for
'bin/emu' are not available unless you define corresponding DEBUG_*
symbols. These may be defined in 'emu.c'. If you define DEBUG_CRT in
'libc/src16/crt.s', the '__entry' function will check your '_main'
function for conformance to the calling conventions described in
'doc/opcodes.txt'.
d123 2
d127 1
a127 1
- Some the opcodes may not be implemented correctly in 'emu.c'.
d160 14
@


1.27
log
@LD16OPTS -> LD16FLAGS
updated 'known working' list
@
text
@d2 1
a2 1
$Id: README,v 1.26 2001/07/17 06:33:35 bsittler Exp $
d94 4
a97 1
symbols. These may be defined in 'emu.c'.
@


1.26
log
@*** empty log message ***
@
text
@d2 1
a2 1
$Id: README,v 1.25 2000/05/07 05:25:39 bsittler Exp $
d97 1
a97 1
edit the LD16OPTS variable in 'Makefile'. You can strip already-built
d150 7
a156 6
- Various versions of the tools have been built and tested under DJGPP
  (DOS/Win95), Linux (x86, alpha, sparc and ppc), Cygnus GNU-Win32
  (Win95/NT), EMX (DOS, Win31, WinNT, OS/2), Solaris 2.5 and SunOS 4.
  More testing is needed. If you make changes to get the tools to
  compile for you, let me know what you did so I can add it to the
  main distribution. You can also add an entry to the 'CREDITS' file.
@


1.25
log
@*** empty log message ***
@
text
@d2 1
a2 1
$Id: README,v 1.24 2000/04/23 05:47:56 bsittler Exp $
a9 8
NOTE ============================================================
Toolset v1, revision 19980411 and earlier, incorrectly stamped
their object files as being written by "v0" of the toolset.
Later revisions of toolset v1 can use these "v0" files, but `as'
writes v1 files which have a different header format and are
therefore unusable by the older toolset revisions.
=================================================================

d97 2
a98 2
uncomment the SMOKE16_STRIP variable in Makefile. You can strip
already-built executables using ld -s.
d119 2
a120 2
- The linker does not support common-format archives. I have decided
  to use an interim object archive format (LMAGIC) based on the a.out
a126 7
- The assembler does not properly support the '.' symbol. You can't use
  it everywhere you might like to.

- The assembler does not support absolute addresses.
  This may be fixed now, but I don't really care yet as I don't use
  absolute addresses in user space.

d129 3
a131 2
  it already prints symbolic addresses when -disassemble or -registers
  causes the %pc register or other addresses to be printed.
@


1.24
log
@libc.o is gone, libc.a is here!
@
text
@d2 1
a2 1
$Id: README,v 1.23 1999/08/04 07:31:29 bsittler Exp $
d33 1
a33 1
automatically derivived from the SMOKE-16 tools just because they use
d35 2
a36 2
(or manage to make dynamic linking work) in your program, then your
program will not automatically fall under the GNU General Public
a107 10
* IF THAT DOESN'T WORK...

If your compiler complains about type incompatibilities, or the 'make
test' programs don't assemble/run, take a look at the include file
'types.h'. You may need to add a section defining 8-, 16- and 32-bit
signed and unsigned integers for your platform. If that, too, fails,
check the definition of 'YYSTYPE' in the source file 'as_tab.y'. It
needs to be a type large enough to hold a 32-bit number or a void
pointer.

d110 4
a113 5
If you'd like the GNU 'file' command to know about SMOKE-16 object
files, add the contents of 'magic' to your magic file (usually
/etc/magic or /usr/lib/magic) or use it with '-m' option. Note that
the 'file' command included in some older Linux distributions is
buggy.
d132 1
a132 1
  but gcc seems quite unsuited to targetting a 16-bit architecture,
d165 1
a165 1
  (DOS/Win95), Linux (intel, alpha, sparc and ppc), Cygnus GNU-Win32
@


1.23
log
@Added some fluff, and updated a couple of the sections in the 'todo'
list.
@
text
@d2 1
a2 1
$Id: README,v 1.22 1999/07/17 00:01:57 bsittler Exp $
d10 9
a18 1
Note: The '.h' files mentioned below are in the 'include' directory.
a134 2
- Files need to be moved into subdirectories. (mostly done)

a136 2
  Perhaps a variation on "crashme" would work? This requires
  quite a few more syscalls, though.
d138 3
a140 4
- The linker does not support archives. I have decided to use an
  interim object archive format (LMAGIC) based on the a.out file format.
  Support is far from finished, but the specification in 'a_out.h' is
  unlikely to change.
d155 2
a156 2
  it already prints symbolic addresses when -opcodes or -registers
  causes the %pc register to be printed.
d160 1
a160 1
  This is on the back burner for now.
d173 1
a173 2
  "good enough". Proper (de-)serialization routines for object files
  (rather than fread()) would also help portability.
@


1.22
log
@Added paragraph about emu-- and binfmt_misc registrtration.
@
text
@d2 1
a2 1
$Id: README,v 1.21 1999/03/31 22:59:37 bsittler Exp $
d6 2
a7 1
in SMOKE-16 assembler. There isn't yet a SMOKE-16 C compiler. --BCWS
d63 1
a63 1
QUICK-AND-DIRTY
d73 1
a73 1
EXPLAINED
d100 1
a100 1
IF THAT DOESN'T WORK...
d118 2
d160 2
a161 1
  bits long. This can be rather restricting at times.
d165 1
a165 1
  Especially nice would be full stdio and signals.
d171 1
a171 1
  (rather than fread()) would also help.
d177 5
a181 1
  compile for you, let me know so I can add it to the distribution.
@


1.21
log
@Updated TO-DO list.
@
text
@d2 1
a2 1
$Id$
d116 5
@


1.20
log
@Changed to be more DOS-friendly.
@
text
@d2 1
a116 3
The SPARC SunOS 4.1.4 file command can be similarly extended by adding
the contents of 'magic.be' to /etc/magic.

d126 8
a133 5
- The linker does not support archives. I haven't yet decided
  what format of archive file to use.

- There is no C compiler for the SMOKE-16. I am playing with GCC at the
  moment, but I'm not nearly there yet...
d135 2
a136 1
- The assembler does not properly support the '.' symbol.
d161 2
a162 1
  "good enough"...
@


1.19
log
@Updated in many ways.
@
text
@d57 15
a71 3
The toolset has been developed using several ports of the GNU
toolchain, so compiling on non-GNU systems still requires some
effort.
d79 2
a80 2
and Windows users may wish to set 'EXE_SUFFIX=.exe', especially if
they are using the EMX port of GCC.
@


1.18
log
@Changed 'versions' to 'releases' to be consistent with -V output for tools.
@
text
@d2 1
a2 1
These tools simulate a virtual 16-bit Von Neumann machine. I named it
d13 1
a13 1
The file 'hashpjw.c' is derived from an algorithm published in Aho,
d22 7
a28 4
2. See the accompanying COPYING for details. Note that programs which
use the operating system services are not considered "derived works,"
and therefore need not be covered by any version the GNU General
Public License.
d47 7
a53 5
See the dated entries in the 'releases' directory if you'd like to
check out and build previous releases. The dates are in the form
YYYYMMDD, where YYYY is a four-digit year code (0001 is 1 A.D.), MM is
a two-digit month code (01 is January) and DD is a two-digit day code
(01 is the first day of the month.)
d57 4
d62 2
a63 1
'mkdirs' script to remake the output directories.
d65 6
a70 1
Try 'make'. If that doesn't work, try hacking it for your
d99 7
a105 3
files, add 'magic' to your magic file (usually /etc/magic or
/usr/lib/magic) or use it with '-m' option. Note that the 'file'
command included in some older Linux distributions is buggy.
d150 4
a153 4
  2 (DOS), Linux 1.2.8 (intel), Linux 2.0.30 (intel and alpha), Linux 2.1.56
  (ppc), and SunOS 4.1.4. More testing is needed. If you make changes to
  get the tools to compile for you, let me know so I can add it to the
  distribution.
@


1.17
log
@Added note about stripping with ld.
@
text
@d44 1
a44 1
See the dated entries in the 'versions' directory if you'd like to
@


1.16
log
@Updated to reflect new options for emu.
@
text
@d67 3
a69 2
If you'd like to have symbol tables in the SMOKE-16 executables,
comment out the SMOKE16_STRIP variable in Makefile.
@


1.15
log
@Added info on versions directory.
@
text
@d59 2
a60 2
'--opcodes' and '--registers'. You can run 'make test' to automatically
run a few basic tests of the tools and test programs.
@


1.14
log
@emu now supports debugging.
@
text
@d44 6
@


1.13
log
@Changed MKDIRS.BAT references to mkdirs
@
text
@d54 1
a54 1
run a few basic tests of the emulator.
d103 3
a105 1
  emulator (emu.c) is an obvious place to start hacking.
d111 1
a111 1
- It only has about thirty opcodes, since the instruction word is 16
@


1.12
log
@Added note about MKDIRS.BAT.
@
text
@d46 2
a47 2
If you're using DOS and you got the SMOKE-16 tools out of a ZIP file,
you may need to run "MKDIRS.BAT" to remake the object directories.
@


1.11
log
@Removed cheesy _exists_ stuff.
@
text
@d46 3
@


1.10
log
@Semantics elevated.
@
text
@d54 3
a56 3
the source for specific debugging tokens. Note that some options of
'bin/emu' are not available unless you define some DEBUG_*
symbols. These are defined by default in 'emu.c'.
d58 2
a59 3
You can un-comment the SMOKE16_STRIP line in Makefile to build stripped
executables. It's not the default because I like to use hexl-mode (in
GNU emacs) and do "symbolic" debugging by hand.
d63 7
a69 8
Take a look at the shell script 'mkparent' if 'make' refuses to do
anything or complains about '_exists_' targets. If your compiler
complains about type incompatibilities, or the 'make test' programs
don't assemble/run, take a look at the include file 'types.h'. You may
need to add a section defining 8-, 16- and 32-bit signed and unsigned
integers for your platform. If that, too, fails, check the definition
of 'YYSTYPE' in the source file 'as_tab.y'. It needs to be a type
large enough to hold a 32-bit number or a void pointer.
d74 3
a76 3
files, add 'magic' to your magic file (/etc/magic or /usr/lib/magic)
or use it with '-m' option. Note that the 'file' command included in
some older Linux distributions is buggy.
@


1.9
log
@Updated to reflect new features.
@
text
@d85 1
a85 1
  There should be a program which tests every opcode.
@


1.8
log
@SMOKE-16 now runs on the PPC under Linux!
@
text
@d13 6
a18 5
The file 'hashpjw.c' is derived from a program published in Aho, Sethi
and Ullman's {Compilers: Principles, Techniques and Tools}, published
by Addison-Wesley. This algorithm comes from P.J. Weinberger's C
compiler. I hereby place 'hashpjw.c' and 'hashpjw.h' in the public
domain. To the best of my knowledge, the algorithm is not patented.
d82 1
a82 1
- Files need to be moved into subdirectories.
d85 3
d89 2
a90 1
- The linker does not support archives.
d92 2
a93 1
- There is no C compiler for the SMOKE-16.
d98 2
d101 2
a102 1
- There is no symbolic debugger for the SMOKE-16.
d105 2
a106 1
processor simulator (sim.c) hasn't been written yet.
d109 1
a109 1
bits long. This can be rather restricting at times.
d112 2
a113 1
pitifully small. Nothing truly useful is yet possible, I'm afraid.
d116 9
a124 9
emu uses <errno.h> for the errors returned by syscalls and passes
host O.S. errno directly to the SMOKE-16 program. However, it may be
"good enough"...

- Currently, the tools have been built and tested under DJGPP 2 (DOS),
Linux 1.2.8 (intel), Linux 2.0.30 (intel and alpha), Linux 2.1.56
(ppc), and SunOS 4.1.4. More testing is needed. If you make changes to
get it to compile for you, let me know so I can add it to the
distribution.
@


1.7
log
@Changed to reflect oscura's excellent choice of O.S. It runs Linux now instead of OSF/1!
@
text
@d109 5
a113 4
- Currently, the tools have been built under DJGPP 2 (DOS), Linux
1.2.8, Linux 2.0.30 (intel and alpha), and SunOS 4.1.4. More testing
is needed. If you make changes to get it to compile for you, let me
know so I can add it to the distribution.
@


1.6
log
@Updated to reflect new portability status.
@
text
@d109 4
a112 4
- Currently, the tools have been built for DJGPP 2 (DOS), Linux 1.2.8,
Linux 2.0.30, SunOS 4.1.4, and Digital UNIX (a.k.a. OSF/1 -- version
unknown.) More testing is needed. If you make changes to get it to
compile for you, let me know so I can add it to the distribution.
@


1.5
log
@Changed to reflect new directory layout.
@
text
@d61 17
a77 4
If you'd like the 'file' command to know about SMOKE-16 object files,
add 'magic' to your magic file (/etc/magic or /usr/lib/magic) or use
it with '-m' option. Note that the 'file' command included in some
older Linux distributions is buggy.
d105 10
a114 3
emu uses <errno.h> for the errors returned by syscalls and
passes host O.S.'s errno directly to the SMOKE-16 program. However, it
may be "good enough"...
@


1.4
log
@*** empty log message ***
@
text
@d9 1
d47 4
a50 3
(and if) you get 'make' to work, try 'emu' with one of the
executable (.e16) files. Some interesting options for 'emu' are
'--opcodes' and '--registers'.
d54 1
a54 1
'emu' are not available unless you define some DEBUG_*
a67 2
- The "carry" flag (C) in %ps is not implemented yet.

d70 1
a70 1
- Some the opcodes may not be implemented correctly in 'emu'.
d82 2
a83 5
- The user-mode emulator (emu) is fairly stable, but the
processor simulator hasn't been written yet.

- It's a 16-bit architecture, and tries to be big-endian even when
running on little-endian hardware.
@


1.3
log
@Renamed smoke16{as,ld,emu,sim{} to {as,ld,emu,aim}sim}16
Renamed libsmoke16obj to libobj16
@
text
@d66 2
a70 2

- Some of the structures in 'a_out.h' still depend on host byte order.
@


1.2
log
@Updated to reflect new file layout.
@
text
@d35 1
a35 1
See the "doc" directory. There isn't much there yet. Try the '--help'
d39 1
a39 1
(see "asm.h",) but may switch to gasp (the GNU assembly preprocessor)
d46 2
a47 2
(and if) you get 'make' to work, try 'smoke16emu' with one of the
executable (.e16) files. Some interesting options for 'smoke16emu' are
d52 2
a53 2
'smoke16emu' are not available unless you define some DEBUG_*
symbols. These are defined by default in 'smoke16emu.c'.
d68 1
a68 1
- Some the opcodes may not be implemented correctly in 'smoke16emu'.
d70 1
a70 1
- Some of the structures in 'a.out.h' depend on host byte order.
d82 1
a82 1
- The user-mode emulator (smoke16emu) is fairly stable, but the
d95 1
a95 1
smoke16emu uses <errno.h> for the errors returned by syscalls and
@


1.1
log
@Initial revision
@
text
@d8 2
d39 1
a39 1
(see "asm.h",) but will switch to gasp (the GNU assembly preprocessor)
d70 1
a70 2
- Some of the structures in "a.out.h" aren't yet sufficiently
endianness-independent.
d72 1
a72 1
- The linker does not support library archives.
d82 5
a86 2
- The user-mode emulator (smoke16emu) is complete and fairly stable,
but the processor simulator hasn't been written yet.
d88 2
a89 4
- It's a 16-bit architecture, and tries to be Big-endian even when
running on little-endian hardware. It only has about thirty opcodes,
since the instruction word is 16 bits long. This can be rather
restricting at times.
d96 2
a97 1
passes host O.S.'s errno directly to the SMOKE-16 program.
@
