summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.cvsignore1
-rw-r--r--ChangeLog421
-rw-r--r--NEWS4
-rw-r--r--doc/.cvsignore1
-rw-r--r--doc/html/download.html18
-rw-r--r--doc/html/index.html71
-rw-r--r--doc/html/news.html57
-rw-r--r--po/ca.po232
-rw-r--r--samples/.cvsignore1
9 files changed, 659 insertions, 147 deletions
diff --git a/.cvsignore b/.cvsignore
index 7b5bb52..cf7dda0 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -11,6 +11,7 @@ configure
intl
mdk-0.1.1.tar.gz
mdk-0.1.tar.gz
+mdk-0.2.tar.gz
stamp-h
stamp-h.in
test
diff --git a/ChangeLog b/ChangeLog
index 5c5e037..15c71f0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,19 +1,402 @@
-Version 0.2
- * mix_eval_t.c: (new file) unit test for mix_eval_t
- * mix_eval.h, mix_eval.c, mix_eval_scanner.l: (new files)
- mix_eval_t type (an w-expression evaluator).
- * mix_device.c (mix_device_write) File buffers are now flushed after
- a write operation.
-Version 0.1.1 (18/11/00)
- * Bug fix: local symbols are now handled properly (see
- samples/stress{1,2}.mixal)
- * Bug fix: unary - on future refs is handled now (see
- samples/stress3.mixal).
- * Bug fix: future refs to labels defined with the EQU directive
- are correctly handled now (see samples/stress4.mixal).
- * Bug fix: configure.in checks for ncurses, needed by readline
- * mix_vm.c (mix_vm_run): overflow of the location pointer checked:
- the vm halts if this happens.
-
-Version 0.1 (01/11/00)
- * initial revision
+2001-01-04 04:13 jaortega
+
+ * .cvsignore, doc/.cvsignore, samples/.cvsignore: update for
+ version 0.2
+
+2001-01-04 04:05 jaortega
+
+ * configure.in, doc/mdk.texi: update for version 0.2
+
+2001-01-03 01:37 jaortega
+
+ * mixutils/mixvm_command.c: (trace_) cosmetic change
+
+2001-01-03 01:30 jaortega
+
+ * mixlib/mix_vm.c: (mix_vm_exec_next) halted status correctly
+ reported
+
+2001-01-03 01:11 jaortega
+
+ * mixutils/mixvm.c: (mix_vmrun) added timing statitics printing
+
+2000-12-30 10:49 jaortega
+
+ * NEWS: corrected handling of successive * in expressions
+
+2000-12-30 03:54 jaortega
+
+ * mixlib/: mix_scanner.l, mix_eval_scanner.l: corrected handling of
+ successive * in expressions
+
+2000-12-30 03:15 jaortega
+
+ * mixlib/mix_eval_scanner.l: corrected handling of successive * in
+ expressions
+
+2000-12-23 03:57 jaortega
+
+ * NEWS, README, TODO: new functionalities described
+
+2000-12-23 03:53 jaortega
+
+ * mixutils/mixvm_command.c: (trace_time_) new function tracing
+ execution times (cmd_run_, cmd_next_) use of trace_time_ for
+ printing execution times
+
+2000-12-23 03:51 jaortega
+
+ * mixlib/mix_vm.c: (mix_vm_delete) destroy clock
+
+2000-12-23 03:50 jaortega
+
+ * mixlib/mix_vm_clock.c: (mix_vm_clock_new) proper initialisation
+
+2000-12-23 03:23 jaortega
+
+ * mixlib/: mix_vm.c, mix_vm.h: (mix_vm_get_uptime) new method
+ (mix_vm_run, mix_vm_exec_next) update the vm clock after execution
+ of instructions
+
+2000-12-23 03:21 jaortega
+
+ * mixlib/xmix_vm.h: (get_clock_, update_time_) new macros for
+ accessing new member clock
+
+2000-12-23 03:06 jaortega
+
+ * mixlib/: Makefile.am, mix_vm_clock.c, mix_vm_clock.h:
+ mix_vm_clock_t and mix_time_t types definition
+
+2000-12-22 02:06 jaortega
+
+ * mixlib/mix_ins.c: comment removed
+
+2000-12-20 02:02 jaortega
+
+ * mixutils/mixvm_command.c: (cmd_run_, cmd_next_) correct use of
+ mix_vm_reset_program to restart a halted program.
+
+2000-12-20 02:01 jaortega
+
+ * mixlib/: mix_vm.c, mix_vm.h: (mix_vm_reset_program) new function
+ (mix_vm_run, mix_vm_next) removed automatic reset of location
+ pointer when program halted
+
+2000-12-20 01:59 jaortega
+
+ * mixlib/: mix_ins.c, mix_ins.h: (mix_ins_to_string_in_buffer) new
+ function
+
+2000-12-19 01:12 jaortega
+
+ * mixlib/mix_src_file.c, mixlib/mix_vm.c, mixlib/mix_vm.h,
+ mixlib/xmix_vm.h, mixutils/mixvm_command.c: added tracing
+ instructions functionality
+
+2000-12-17 21:59 jaortega
+
+ * mixlib/xmix_vm.h: (mix_vm_t) new member address_table to speedup
+ lookup of which line number corresponds to a given address.
+
+2000-12-17 21:55 jaortega
+
+ * mixlib/mix_vm.c: (mix_vm_get_break_lineno) use of the new
+ mix_vm.address_table member.
+
+2000-12-17 16:12 jaortega
+
+ * mixlib/: mix_code_file.c, mix_code_file.h, mix_src_file.c: bugs
+ corrected
+
+2000-12-17 02:22 jaortega
+
+ * mixlib/Makefile.am: added mix_src_file.{h,c}
+
+2000-12-17 02:20 jaortega
+
+ * mixlib/: mix_src_file.c, mix_src_file.h: new file
+
+2000-12-09 01:59 jaortega
+
+ * mixutils/mixvm_command.c: (cmd_w2d_) new function
+
+2000-12-09 00:45 jaortega
+
+ * mixutils/mixvm_command.c: (cmd_ssym_) new function
+
+2000-12-09 00:43 jaortega
+
+ * mixlib/: mix_eval.c, mix_eval.h: (mix_eval_symbol_table) new
+ function
+
+2000-12-08 22:30 jaortega
+
+ * mixlib/: mix_eval.c, mix_eval.h, mix_symbol_table.c,
+ mix_symbol_table.h: (mix_eval_{set,remove}symbols_from_table,
+ mix_eval_substract_table) new functions
+ (mix_symbol_table_{merge,substract}_table) const-correct
+
+2000-12-08 00:14 jaortega
+
+ * mixlib/: mix_symbol_table.c, mix_symbol_table.h:
+ (mix_symbol_table_{merge,substract}_table) new functions
+
+2000-12-03 22:50 jaortega
+
+ * mixlib/mix_eval.h: (mix_eval_use_table) new function
+
+2000-12-03 22:49 jaortega
+
+ * mixutils/mixvm_command.c: (cmd_weval_) added weval command
+ (cmd_psym_) corrected bug preventing symbol table printing
+
+2000-12-03 22:30 jaortega
+
+ * mixlib/mix_eval.c: (mix_eval_use_table) new function
+
+2000-12-03 11:37 jaortega
+
+ * mixlib/testsuite/mix_eval_t.c: (main) report error position in
+ verbose mode
+
+2000-12-03 11:35 jaortega
+
+ * mixlib/mix_eval_scanner.l: (mix_eval_expr) now keeps track of
+ error position
+
+2000-12-03 00:04 jaortega
+
+ * NEWS: news for 0,2
+
+2000-12-02 23:49 jaortega
+
+ * NEWS: updated new for version 0.1.1
+
+2000-12-02 23:36 jaortega
+
+ * doc/: mdk.texi, html/.cvsignore: minor changes
+
+2000-12-02 23:32 jaortega
+
+ * ChangeLog, mixlib/.cvsignore, mixlib/Makefile.am,
+ mixlib/mix_eval.c, mixlib/mix_eval.h, mixlib/mix_eval_scanner.l,
+ mixlib/xmix_eval.h, mixlib/testsuite/.cvsignore,
+ mixlib/testsuite/Makefile.am, mixlib/testsuite/mix_eval_t.c,
+ po/ca.po: added mix_eval_t, a w-expression evaluator
+
+2000-12-02 00:35 jaortega
+
+ * mixlib/: mix_device.c, mix_file.c, mix_io.c, mix_parser.c,
+ mix_scanner.l, mix_vm.c, mix_vm_dump.c: removed checks for null
+ pointer after g_new ()
+
+2000-11-27 01:43 jaortega
+
+ * doc/html/: news.html, index.html (utags: v0r1_1): more news
+
+2000-11-25 03:49 jaortega
+
+ * doc/mdk.texi (tags: v0r1_1): MIX/MIXAL tutorial extension
+
+2000-11-23 23:42 jaortega
+
+ * mixlib/mix_device.c: (mix_device_write) file buffer flushed after
+ writing
+
+2000-11-19 15:27 jaortega
+
+ * doc/html/: download.html (tags: v0r1_1), index.html, lists.html
+ (tags: v0r1_1), news.html: release 0.1.1 announcement
+
+2000-11-19 01:38 jaortega
+
+ * mixlib/mix_code_file.c, mixlib/mix_parser.c,
+ mixlib/mix_symbol_table.c, mixlib/mix_symbol_table.h,
+ mixutils/mixvm_command.c (utags: v0r1_1): using skip local symbols
+ mode when printing symbol table
+
+2000-11-19 01:01 jaortega
+
+ * mixlib/mix_symbol_table.c: (mix_symbol_table_print) local symbols
+ (e.g. 3B) are skipped
+
+2000-11-18 22:18 jaortega
+
+ * mixlib/mix_vm.c (tags: v0r1_1): (mix_vm_run) the virtual machine
+ halts if the program counter overflows
+
+2000-11-18 22:15 jaortega
+
+ * .cvsignore, po/ca.po, samples/.cvsignore, samples/Makefile.am,
+ samples/primes.result (utags: v0r1_1): minor changes
+
+2000-11-18 22:12 jaortega
+
+ * ChangeLog, THANKS, configure.in (utags: v0r1_1): missing check
+ for ncurses added to configure.in
+
+2000-11-18 13:04 jaortega
+
+ * mixlib/mix_parser.c, mixlib/mix_scanner.l (tags: v0r1_1),
+ mixlib/xmix_parser.h (tags: v0r1_1), po/ca.po: fixed 3H ORIG 3B
+ problem (samples/stress{1,2}.mixal)
+
+2000-11-18 12:59 jaortega
+
+ * TODO (tags: v0r1_1): new ideas for mixvm
+
+2000-11-18 01:50 jaortega
+
+ * configure.in: new try at a fix for configuration in Mandrake 7.0
+
+2000-11-18 01:09 jaortega
+
+ * mixlib/mix_scanner.l: marked with a warning use of future
+ references with a minus sign
+
+2000-11-18 00:58 jaortega
+
+ * samples/: stress1.mixal, stress2.mixal (utags: v0r1_1): test
+ program by pking
+
+2000-11-17 00:06 jaortega
+
+ * ChangeLog: changes, up to now, in version 0.1.1
+
+2000-11-17 00:04 jaortega
+
+ * configure.in: readline detection fallback to fix configuration in
+ Mandrake 7.0
+
+2000-11-16 00:58 jaortega
+
+ * THANKS: pking acknowledgement
+
+2000-11-15 01:52 jaortega
+
+ * doc/html/: download.html, index.html, lists.html: site changes
+
+2000-11-14 00:29 jaortega
+
+ * mixlib/: mix_ins.h (tags: v0r1_1), mix_parser.c, mix_scanner.l:
+ corrected bug in stress3.mixal (pking)
+
+2000-11-07 23:44 jaortega
+
+ * doc/.cvsignore (tags: v0r1_1), samples/.cvsignore,
+ samples/stress4.mixal (tags: v0r1_1): sample file by pking
+
+2000-11-07 23:41 jaortega
+
+ * mixlib/mix_parser.c: fixed bug with SYM EQU VAL (pking)
+
+2000-11-07 05:32 jaortega
+
+ * mixlib/mix_parser.c, mixlib/mix_scanner.l, mixlib/xmix_parser.h,
+ po/ca.po: fixed bug with future EQU symbol refs (pking)
+
+2000-11-03 22:43 jaortega
+
+ * doc/html/: download.html, index.html, lists.html: added lists
+ info
+
+2000-11-03 00:20 jaortega
+
+ * doc/html/index.html (tags: v0r1): planned features section
+
+2000-11-02 01:12 jaortega
+
+ * THANKS (tags: v0r1): Acknowledgement to Darius Bacon
+
+2000-11-02 00:19 jaortega
+
+ * samples/Makefile.am (tags: v0r1): bug corrected
+
+2000-11-01 23:56 jaortega
+
+ * po/ca.po, samples/.cvsignore, samples/Makefile.am,
+ samples/hello.mixal, samples/primes.mixal: Initial revision
+
+2000-11-01 23:56 jaortega
+
+ * po/ca.po (tags: v0r1), samples/.cvsignore (tags: v0r1),
+ samples/Makefile.am, samples/hello.mixal (tags: v0r1_1, v0r1),
+ samples/primes.mixal (tags: v0r1_1, v0r1) (utags: start): [no log
+ message]
+
+2000-11-01 23:53 jaortega
+
+ * .cvsignore, AUTHORS, COPYING, ChangeLog, INSTALL, Makefile.am,
+ NEWS, README, THANKS, TODO, acconfig.h, aclocal.m4, autogen.sh,
+ configure.in, doc/.cvsignore, doc/Makefile.am, doc/gpl.texi,
+ doc/mdk.texi, doc/html/.cvsignore, doc/html/Makefile.am,
+ doc/html/download.html, doc/html/index.html, mixlib/.cvsignore,
+ mixlib/Makefile.am, mixlib/mix.c, mixlib/mix.h,
+ mixlib/mix_code_file.c, mixlib/mix_code_file.h,
+ mixlib/mix_device.c, mixlib/mix_device.h, mixlib/mix_file.c,
+ mixlib/mix_file.h, mixlib/mix_ins.c, mixlib/mix_ins.h,
+ mixlib/mix_io.c, mixlib/mix_io.h, mixlib/mix_parser.c,
+ mixlib/mix_parser.h, mixlib/mix_scanner.l,
+ mixlib/mix_symbol_table.c, mixlib/mix_symbol_table.h,
+ mixlib/mix_types.c, mixlib/mix_types.h, mixlib/mix_vm.c,
+ mixlib/mix_vm.h, mixlib/mix_vm_dump.c, mixlib/mix_vm_dump.h,
+ mixlib/xmix_io.c, mixlib/xmix_io.h, mixlib/xmix_parser.h,
+ mixlib/xmix_vm.c, mixlib/xmix_vm.h, mixlib/testsuite/.cvsignore,
+ mixlib/testsuite/Makefile.am, mixlib/testsuite/mix_device_t.c,
+ mixlib/testsuite/mix_ins_t.c, mixlib/testsuite/mix_parser_t.c,
+ mixlib/testsuite/mix_types_t.c, mixlib/testsuite/mix_vm_ins_t.c,
+ mixlib/testsuite/test.h, mixutils/.cvsignore, mixutils/Makefile.am,
+ mixutils/mixasm.c, mixutils/mixasm_comp.c, mixutils/mixasm_comp.h,
+ mixutils/mixvm.c, mixutils/mixvm_command.c,
+ mixutils/mixvm_command.h, mixutils/mixvm_loop.c, po/.cvsignore,
+ po/ChangeLog, po/POTFILES.in: Initial revision
+
+2000-11-01 23:53 jaortega
+
+ * .cvsignore (tags: v0r1), AUTHORS (tags: v0r1_1, v0r1), COPYING
+ (tags: v0r1_1, v0r1), ChangeLog (tags: v0r1), INSTALL (tags:
+ v0r1_1, v0r1), Makefile.am (tags: v0r1_1, v0r1), NEWS (tags:
+ v0r1_1, v0r1), README (tags: v0r1_1, v0r1), THANKS, TODO (tags:
+ v0r1), acconfig.h (tags: v0r1_1, v0r1), aclocal.m4 (tags: v0r1_1,
+ v0r1), autogen.sh (tags: v0r1_1, v0r1), configure.in (tags: v0r1),
+ doc/.cvsignore (tags: v0r1), doc/Makefile.am (tags: v0r1_1, v0r1),
+ doc/gpl.texi (tags: v0r1_1, v0r1), doc/mdk.texi (tags: v0r1),
+ doc/html/.cvsignore (tags: v0r1_1, v0r1), doc/html/Makefile.am
+ (tags: v0r1_1, v0r1), doc/html/download.html (tags: v0r1),
+ doc/html/index.html, mixlib/.cvsignore (tags: v0r1_1, v0r1),
+ mixlib/Makefile.am (tags: v0r1_1, v0r1), mixlib/mix.c (tags:
+ v0r1_1, v0r1), mixlib/mix.h (tags: v0r1_1, v0r1),
+ mixlib/mix_code_file.c (tags: v0r1), mixlib/mix_code_file.h (tags:
+ v0r1_1, v0r1), mixlib/mix_device.c (tags: v0r1_1, v0r1),
+ mixlib/mix_device.h (tags: v0r1_1, v0r1), mixlib/mix_file.c (tags:
+ v0r1_1, v0r1), mixlib/mix_file.h (tags: v0r1_1, v0r1),
+ mixlib/mix_ins.c (tags: v0r1_1, v0r1), mixlib/mix_ins.h (tags:
+ v0r1), mixlib/mix_io.c (tags: v0r1_1, v0r1), mixlib/mix_io.h (tags:
+ v0r1_1, v0r1), mixlib/mix_parser.c (tags: v0r1),
+ mixlib/mix_parser.h (tags: v0r1_1, v0r1), mixlib/mix_scanner.l
+ (tags: v0r1), mixlib/mix_symbol_table.c (tags: v0r1),
+ mixlib/mix_symbol_table.h (tags: v0r1), mixlib/mix_types.c (tags:
+ v0r1_1, v0r1), mixlib/mix_types.h (tags: v0r1_1, v0r1),
+ mixlib/mix_vm.c (tags: v0r1), mixlib/mix_vm.h (tags: v0r1_1, v0r1),
+ mixlib/mix_vm_dump.c (tags: v0r1_1, v0r1), mixlib/mix_vm_dump.h
+ (tags: v0r1_1, v0r1), mixlib/xmix_io.c (tags: v0r1_1, v0r1),
+ mixlib/xmix_io.h (tags: v0r1_1, v0r1), mixlib/xmix_parser.h (tags:
+ v0r1), mixlib/xmix_vm.c (tags: v0r1_1, v0r1), mixlib/xmix_vm.h
+ (tags: v0r1_1, v0r1), mixlib/testsuite/.cvsignore (tags: v0r1_1,
+ v0r1), mixlib/testsuite/Makefile.am (tags: v0r1_1, v0r1),
+ mixlib/testsuite/mix_device_t.c (tags: v0r1_1, v0r1),
+ mixlib/testsuite/mix_ins_t.c (tags: v0r1_1, v0r1),
+ mixlib/testsuite/mix_parser_t.c (tags: v0r1_1, v0r1),
+ mixlib/testsuite/mix_types_t.c (tags: v0r1_1, v0r1),
+ mixlib/testsuite/mix_vm_ins_t.c (tags: v0r1_1, v0r1),
+ mixlib/testsuite/test.h (tags: v0r1_1, v0r1), mixutils/.cvsignore
+ (tags: v0r1_1, v0r1), mixutils/Makefile.am (tags: v0r1_1, v0r1),
+ mixutils/mixasm.c (tags: v0r1_1, v0r1), mixutils/mixasm_comp.c
+ (tags: v0r1_1, v0r1), mixutils/mixasm_comp.h (tags: v0r1_1, v0r1),
+ mixutils/mixvm.c (tags: v0r1_1, v0r1), mixutils/mixvm_command.c
+ (tags: v0r1), mixutils/mixvm_command.h (tags: v0r1_1, v0r1),
+ mixutils/mixvm_loop.c (tags: v0r1_1, v0r1), po/.cvsignore (tags:
+ v0r1_1, v0r1), po/ChangeLog (tags: v0r1_1, v0r1), po/POTFILES.in
+ (tags: v0r1_1, v0r1) (utags: start): [no log message]
+
diff --git a/NEWS b/NEWS
index dc04c09..3c0f2c4 100644
--- a/NEWS
+++ b/NEWS
@@ -1,11 +1,11 @@
mdk -- History of visible changes.
-Copyright (C) 2000, jose antonio ortega ruiz <jaortega@acm.org>
+Copyright (C) 2000, 2001, jose antonio ortega ruiz <jaortega@acm.org>
See the end for copying conditions.
Please send mdk bug reports to jaortega@acm.org.
-*Version 0.2
+*Version 0.2 (07/01/01)
** mixvm provides virtual execution time statistics after each
invocation of run or next.
diff --git a/doc/.cvsignore b/doc/.cvsignore
index 81c4b05..cad9468 100644
--- a/doc/.cvsignore
+++ b/doc/.cvsignore
@@ -1,6 +1,7 @@
Makefile
Makefile.in
mdk-0.1
+mdk-doc-html-0.2.tar.gz
mdk-doc.tar.gz
mdk.html
mdk.info
diff --git a/doc/html/download.html b/doc/html/download.html
index 39f1e4c..4d93f91 100644
--- a/doc/html/download.html
+++ b/doc/html/download.html
@@ -1,11 +1,11 @@
-<!-- -*-html-*- -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MDK download</title>
</head>
- <body bgcolor="white" link="#ff0000" vlink="#a00000">
+ <body bgcolor="white" link="#ff0000" vlink="#a00000">
<a name="top"></a>
<table cellspacing="0" cellpadding="5" border="0" align="center">
<tr>
@@ -40,13 +40,12 @@
<p align="right"><font color="#000069" size="+1">
Download
</font></p>
- <p>The latest version (0.1.1) source tarball is available for
+ <p>The latest version (0.2) source tarball, as well as the
+ HTML documentation is available for
download
<a
href="http://sourceforge.net/project/showfiles.php?group_id=13897">
here.</a></p>
- <p>A tarball containing the HTML documentation is available
- <a href="mdk-doc.tar.gz">here.</a></p>
<p align="right"><font color="#000069" size="+1">
<a name="reqs">Requirements</a>
</font></p>
@@ -80,7 +79,12 @@
./configure
make
</pre>
- Finally, to install the binaries and documentation, type, as root
+ After the compilation finishes, you can find the MDK
+ executables, <b>mixasm</b> (the assembler) and <b>mixvm</b>
+ (the MIX virtual machine) in the subdirectory
+ <b>mixutils</b>. They can be run directly from that
+ directory, but, if you prefer to install the binaries and
+ documentation in standard locations, type, as root
<pre>
make install
</pre>
@@ -99,7 +103,7 @@
<tr>
<td bgcolor="#909090">&nbsp;</td>
<td colspan="2" bgcolor="#909090" align="right">
- &nbsp;
+ <i>last modified Sat Jan 6 00:24:39 CET 2001</i>
</td>
</tr>
</table>
diff --git a/doc/html/index.html b/doc/html/index.html
index 2fb7d26..e793296 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -41,6 +41,10 @@
Latest news
</font></p>
<ul>
+ <li>(08/01/01)
+ <i>MDK 0.2 release. </i>
+ New version of MDK.
+ <a href="news.html#new3">Read more...</a>
<li>(26/11/00) <i>Documentation update.</i>
<a href="news.html#new2">Read more...</a>
<li>(18/11/00)
@@ -49,30 +53,38 @@
<a href="news.html#new1">Read more...</a>
</ul>
<p align="right"><font color="#000069" size="+1">
- What is the MIX?
- </font></p>
- <b>MIX</b> is Donald Knuth's mythical computer as described
- in his monumental work <a
- href="http://Sunburn.Stanford.EDU/~knuth/taocp.html"> The
- Art Of Computer Programming</a>. As any of its real
+ What is the MIX?
+ </font>
+ </p>
+
+ <b>MIX</b> is Donald Knuth's mythical computer as
+ described in his monumental work <a
+ href="http://Sunburn.Stanford.EDU/~knuth/taocp.html"> The
+ Art Of Computer Programming</a>. As any of its real
counterparts, the MIX features registers, memory cells, an
- overflow toggle, comparison flags, input-output devices, and
- a set of binary instructions executable by its virtual
+ overflow toggle, comparison flags, input-output devices,
+ and a set of binary instructions executable by its virtual
CPU. You can programme the MIX using an assembly language
called <b>MIXAL</b>, the MIX Assembly Language.
- <p> So, what's the use of learning MIXAL? The MIX computer is a simplified
- version of real CISC computers, and its assembly language
- closely resembles real ones. You can learn MIX/MIXAL as an introduction
- to computer architecture and assembly programming:
- see the <a href="mdk.html">MDK documentation</a>
- for a <a href="mdk_2.html">tutorial</a> on MIX and MIXAL. </p>
+
+ <p> So, what's the use of learning MIXAL? The MIX computer
+ is a simplified version of real CISC computers, and its
+ assembly language closely resembles real ones. You can
+ learn MIX/MIXAL as an introduction to computer
+ architecture and assembly programming: see the <a
+ href="mdk.html">MDK documentation</a> for a <a
+ href="mdk_2.html">tutorial</a> on MIX and MIXAL.
+ </p>
+
&nbsp;<br>&nbsp;<br>
<p align="right"><font color="#000069" size="+1">
What is the MDK?
- </font></p>
- The <b>M</b>IX <b>D</b>evelopment <b>K</b>it offers an emulation of
- <b>MIX</b> and <b>MIXAL</b>. The <a href="download.html">
- current version</a> of MDK includes two applications:
+ </font>
+ </p>
+ The <b>M</b>IX <b>D</b>evelopment <b>K</b>it offers an
+ emulation of <b>MIX</b> and <b>MIXAL</b>. The <a
+ href="download.html"> current version</a> of MDK includes
+ two applications:
<ul>
<li><b><i>mixasm</i></b> A MIXAL compiler, which
translates your source files into binary ones, executable
@@ -86,26 +98,31 @@
<ul>
<li>write, compile and execute MIXAL programs,
<li>set breakpoints and run your programs step by step,
+ <li>collect execution timing statistics,
+ <li>trace executed instructions,
<li>inspect and modify the MIX registers, flags and memory
contents at any step,
<li>simulate MIX input-output devices using the standard
output and your file system.
</ul>
- See the MDK <a href="mdk.html">user's manual</a> for a complete
- description of the toolkit.
- The MDK utils will run on any GNU/Linux box (see
- <a href="download.html#reqs">requirements</a>) and, of course, are
- <a href="http://www.gnu.org/copyleft/gpl.html">free software</a>.
+
+ See the MDK <a href="mdk.html">user's manual</a> for a
+ complete description of the toolkit. The MDK utils will
+ run on any GNU/Linux box (see <a
+ href="download.html#reqs">requirements</a>) and, of
+ course, are <a href="http://www.gnu.org/copyleft/gpl.html">free
+ software</a>.
+
<p align="right"><font color="#000069" size="+1">
Planned features
- </font></p>
+ </font>
+ </p>
+
MDK is currently under active development, and there are some
planned additional features I have in mind, e.g.
<ul>
- <li> tracing of executed instructions in <b><i>mixvm</i></b>,
<li> allow MIXAL instructions as commands at the
<b><i>mixvm</i></b> prompt,
- <li> include execution timing statistics,
<li> ncurses based frontend,
<li> GTK++/GNOME support,
</ul>
@@ -124,7 +141,7 @@
<tr>
<td bgcolor="#909090">&nbsp;</td>
<td colspan="2" bgcolor="#909090" align="right">
- <i>last updated Mon Nov 27 00:30:40 </i>
+ <i>last updated Sat Jan 6 15:35:39 CET 2001</i>
</td>
</tr>
</table>
diff --git a/doc/html/news.html b/doc/html/news.html
index 87ce0cc..76bd701 100644
--- a/doc/html/news.html
+++ b/doc/html/news.html
@@ -39,27 +39,58 @@
<td >
<table>
<tr valign="top">
+ <td><a label="new1">08/01/01</a></td>
+ <td><i>MDK 0.1.1 release</i></td>
+ <td>
+ New version of MDK. This version provides the
+ following new functionalities:
+ <ul>
+ <li> <i>mixvm</i> provides virtual execution
+ time statistics after each invocation of run or
+ next.
+ <li> <i>mixvm</i> can trace instructions as
+ they are executed. <i>tron/troff</i>
+ commands turn off/off instruction tracing.
+ <li> <i>mixvm</i> accepts a new command,
+ w2d, which computes the decimal value of a MIX
+ word given as a series of bytes (e.g.
+ <i>- 01 00 34 32 22</i>).
+ <li> Symbols can be defined at the
+ <i>mixvm</i> prompt with the new command
+ <i>ssym</i>.
+ <li> <i>mixvm</i> accepts a new command,
+ <i>weval</i>, which allows the evaluation
+ of MIXAL w-expressions.
+ </ul>
+ In addition, some bugs have been fixed. The most
+ outstanding one is that expressions containing
+ strings of successive '*' are now correctly
+ evaluated.
+ </td>
+ </tr>
+ <tr valign="top">
<td><a label="new2">26/11/00</a></td>
<td><i>Documentation update</i></td>
<td>
- The <a href="mdk.html">MDK documentation</a> has been updated so
- that the description of MIX and MIXAL is self-contained and does
- not depend on TAOCP. Now, you can learn MIX/MIXAL reading the
- <a href="mdk_2.html">included tutorial</a>. You can also
- download the <a href="mdk-doc.tar.gz">HTML tarball</a>.
+ The <a href="mdk.html">MDK documentation</a> has
+ been updated so that the description of MIX and
+ MIXAL is self-contained and does not depend on
+ TAOCP. Now, you can learn MIX/MIXAL reading the <a
+ href="mdk_2.html">included tutorial</a>. You can
+ also download the <a href="mdk-doc.tar.gz">HTML
+ tarball</a>.
</td>
</tr>
<tr valign="top">
<td><a label="new1">18/11/00</a></td>
<td><i>MDK 0.1.1 release</i></td>
<td>
- New version of MDK. This is a bug-fix release which
- makes MDK fully compliant with Knuth's specification.
- In particular, local symbols are now properly handled
- in special cases such as
- <pre> 3H ORIG 3B </pre>
- instructions. See the <a href="ChangeLog">the change log</a>
- for details.
+ New version of MDK. This is a bug-fix release
+ which makes MDK fully compliant with Knuth's
+ specification. In particular, local symbols are
+ now properly handled in special cases such as
+ <pre> 3H ORIG 3B </pre> instructions. See the <a
+ href="ChangeLog">the change log</a> for details.
</td>
</tr>
</table>
@@ -73,7 +104,7 @@
<tr>
<td bgcolor="#909090">&nbsp;</td>
<td colspan="2" bgcolor="#909090" align="right">
- <i>last updated Mon Nov 27 01:05:52</i>
+ <i>last updated Sat Jan 6 15:34:16 CET 2001</i>
</td>
</tr>
</table>
diff --git a/po/ca.po b/po/ca.po
index 3f9fb85..3ada8f8 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -4,7 +4,7 @@
msgid ""
msgstr ""
"Project-Id-Version: mdk 0.1\n"
-"POT-Creation-Date: 2000-11-19 01:37+0100\n"
+"POT-Creation-Date: 2001-01-03 01:15+0100\n"
"PO-Revision-Date: 2000-02-28 01:37+01:00\n"
"Last-Translator: jose antonio ortega ruiz <jaortega@retemail.es>\n"
"Language-Team: jose antonio ortega ruiz <jaortega@retemail.es>\n"
@@ -83,259 +83,334 @@ msgstr "%s %s, Màquina virtual de MIX.\n"
msgid "Error loading %s file\n"
msgstr "*** Error: Fitxer font no trobat.\n"
-#: mixutils/mixvm_command.c:74
+#: mixutils/mixvm.c:138
+#, c-format
+msgid "** Execution time: %ld\n"
+msgstr ""
+
+#: mixutils/mixvm_command.c:80
msgid "Display this text"
msgstr "Aquest text"
-#: mixutils/mixvm_command.c:75
+#: mixutils/mixvm_command.c:81
msgid "Synonym for `help'"
msgstr "Sinònim de help"
-#: mixutils/mixvm_command.c:76
+#: mixutils/mixvm_command.c:82
msgid "Execute shell command"
msgstr "Executar comanda de shell"
-#: mixutils/mixvm_command.c:77
+#: mixutils/mixvm_command.c:83
msgid "Load a MIX code file"
msgstr "Carregar en memòria un fitxer compilat"
-#: mixutils/mixvm_command.c:78
+#: mixutils/mixvm_command.c:84
msgid "Run loaded or given MIX code file"
msgstr "Executar un fitxer de codi ja carregat o un donat"
-#: mixutils/mixvm_command.c:80
+#: mixutils/mixvm_command.c:86
msgid "Execute next instruction(s)"
msgstr "Executar la següent instrucció"
-#: mixutils/mixvm_command.c:82
+#: mixutils/mixvm_command.c:88
msgid "Print program counter value"
msgstr "Mostrar el valor actual del contador de programa"
-#: mixutils/mixvm_command.c:83
+#: mixutils/mixvm_command.c:89
msgid "Print symbol value"
msgstr "Mostrar el valor d'un símbol donat"
-#: mixutils/mixvm_command.c:84
+#: mixutils/mixvm_command.c:90
msgid "Print register value"
msgstr "Mostrar el valor d'un registre"
-#: mixutils/mixvm_command.c:86
+#: mixutils/mixvm_command.c:92
msgid "Print comparison and overflow flags"
msgstr "Mostrar el valor dels flags de comparació i overflow"
-#: mixutils/mixvm_command.c:88
+#: mixutils/mixvm_command.c:94
msgid "Print all registers and flags"
msgstr "Mostrar els valors de tots els registres i flags"
-#: mixutils/mixvm_command.c:89
+#: mixutils/mixvm_command.c:95
msgid "Print memory contents in address range"
msgstr "Mostrar el contingut de la memòria en un rang d'adreces"
-#: mixutils/mixvm_command.c:91
+#: mixutils/mixvm_command.c:97
msgid "Set register value"
msgstr "Donar un valor a un registre"
-#: mixutils/mixvm_command.c:93
+#: mixutils/mixvm_command.c:99
msgid "Set comparison flag value"
msgstr "Donar un valor al flag de comparació"
-#: mixutils/mixvm_command.c:94
+#: mixutils/mixvm_command.c:100
msgid "Set overflow flag value"
msgstr "Donar un valor al flag d'overflow"
-#: mixutils/mixvm_command.c:95
+#: mixutils/mixvm_command.c:101
msgid "Set memory contents in given address"
msgstr "Donar un valor al contingut d'una adreça de memòria"
-#: mixutils/mixvm_command.c:97
+#: mixutils/mixvm_command.c:103
+#, fuzzy
+msgid "Set a symbol's value"
+msgstr "Mostrar el valor d'un símbol donat"
+
+#: mixutils/mixvm_command.c:104
msgid "Set break point at given line"
msgstr "Establir un punt de ruptura"
-#: mixutils/mixvm_command.c:98
+#: mixutils/mixvm_command.c:105
msgid "Clear break point at given line"
msgstr "Esborrar un punt de ruptura"
-#: mixutils/mixvm_command.c:99
+#: mixutils/mixvm_command.c:106
#, fuzzy
msgid "Set break point at given address"
msgstr "Establir un punt de ruptura"
-#: mixutils/mixvm_command.c:101
+#: mixutils/mixvm_command.c:108
#, fuzzy
msgid "Clear break point at given address"
msgstr "Esborrar un punt de ruptura"
-#: mixutils/mixvm_command.c:103
+#: mixutils/mixvm_command.c:110
msgid "Clear all breakpoints"
msgstr "Esborrar tots els punts de ruptura"
-#: mixutils/mixvm_command.c:104
+#: mixutils/mixvm_command.c:111
msgid "Compile a source file"
msgstr "Compilar un fitxer font"
-#: mixutils/mixvm_command.c:105
+#: mixutils/mixvm_command.c:112
msgid "Edit a source file"
msgstr "Editar un fitxer font"
-#: mixutils/mixvm_command.c:106
+#: mixutils/mixvm_command.c:113
+#, fuzzy
+msgid "Evaluate a given W-expres sion"
+msgstr "expressió errònia"
+
+#: mixutils/mixvm_command.c:114
+msgid "Convert a MIX word to its decimal value"
+msgstr ""
+
+#: mixutils/mixvm_command.c:116
+msgid "Turn on instruction tracing."
+msgstr ""
+
+#: mixutils/mixvm_command.c:117
+msgid "Turn off instruction tracing."
+msgstr ""
+
+#: mixutils/mixvm_command.c:118
msgid "Quit the program"
msgstr "Sortir"
-#: mixutils/mixvm_command.c:199
+#: mixutils/mixvm_command.c:219
#, c-format
msgid "%s\t\t%s. Usage: %s\n"
msgstr "%s %s. Ús: %s\n"
-#: mixutils/mixvm_command.c:207
+#: mixutils/mixvm_command.c:227
#, c-format
msgid "No commands match `%s'. Possibilities are:\n"
msgstr "Cap comanda amb nom %s. Les possibilitats són:\n"
-#: mixutils/mixvm_command.c:232
+#: mixutils/mixvm_command.c:253
msgid "Missing file name\n"
msgstr "Especifiqueu nom de fitxer\n"
-#: mixutils/mixvm_command.c:235
+#: mixutils/mixvm_command.c:260
#, c-format
msgid "Cannot load %s: "
msgstr "No es pot carregar %s: "
-#: mixutils/mixvm_command.c:237
+#: mixutils/mixvm_command.c:262
msgid "Wrong file format\n"
msgstr "El fitxer no té un format correcte\n"
-#: mixutils/mixvm_command.c:242
+#: mixutils/mixvm_command.c:270
#, c-format
msgid "Program loaded. Start address: %d\n"
msgstr "Programa carregat. Adreça d'inici: %d\n"
-#: mixutils/mixvm_command.c:253
+#: mixutils/mixvm_command.c:322
+#, c-format
+msgid "Elapsed time: %ld /Total program time: %ld (Total uptime: %ld)\n"
+msgstr ""
+
+#: mixutils/mixvm_command.c:331
msgid "Running ..."
msgstr "Executant programa ..."
-#: mixutils/mixvm_command.c:257
+#: mixutils/mixvm_command.c:342
msgid "... done"
msgstr "... fet"
-#: mixutils/mixvm_command.c:263
+#: mixutils/mixvm_command.c:348
#, c-format
msgid "... stopped: breakpoint at line %ld (address %d)\n"
msgstr "... interromput: put de ruptura a la línia %ld (adreça %d)\n"
-#: mixutils/mixvm_command.c:266
+#: mixutils/mixvm_command.c:351
#, fuzzy, c-format
msgid "... stopped: breakpoint at address %d\n"
msgstr "... interromput: put de ruptura a la línia %ld (adreça %d)\n"
-#: mixutils/mixvm_command.c:271
+#: mixutils/mixvm_command.c:356
msgid "... error executing loaded file"
msgstr "... error executant el fitxer carregat"
-#: mixutils/mixvm_command.c:291 mixutils/mixvm_command.c:393
-#: mixutils/mixvm_command.c:454 mixutils/mixvm_command.c:521
-#: mixutils/mixvm_command.c:548 mixutils/mixvm_command.c:572
-#: mixutils/mixvm_command.c:626 mixutils/mixvm_command.c:656
-#: mixutils/mixvm_command.c:683 mixutils/mixvm_command.c:716
-#: mixutils/mixvm_command.c:741
+#: mixutils/mixvm_command.c:379 mixutils/mixvm_command.c:488
+#: mixutils/mixvm_command.c:549 mixutils/mixvm_command.c:616
+#: mixutils/mixvm_command.c:643 mixutils/mixvm_command.c:667
+#: mixutils/mixvm_command.c:750 mixutils/mixvm_command.c:780
+#: mixutils/mixvm_command.c:807 mixutils/mixvm_command.c:840
+#: mixutils/mixvm_command.c:865
#, c-format
msgid "Invalid argument: %s\n"
msgstr "Argument no vàlid: %s\n"
-#: mixutils/mixvm_command.c:302
+#: mixutils/mixvm_command.c:397
#, c-format
msgid "End of program reached at address %d\n"
msgstr "Fi del programa a l'adreça %d\n"
-#: mixutils/mixvm_command.c:308
+#: mixutils/mixvm_command.c:403
#, c-format
msgid "Error at address %d\n"
msgstr "Error a l'adreça: %d\n"
-#: mixutils/mixvm_command.c:338
+#: mixutils/mixvm_command.c:433
msgid "Symbol table not available\n"
msgstr "Taula de símbols no disponible\n"
-#: mixutils/mixvm_command.c:347
+#: mixutils/mixvm_command.c:442
#, c-format
msgid "%s: symbol not defined\n"
msgstr "El símbol %s no està definit\n"
-#: mixutils/mixvm_command.c:385
+#: mixutils/mixvm_command.c:480
#, c-format
msgid "Invalid I index: %d"
msgstr "Camp d'índex %d no vàlid"
-#: mixutils/mixvm_command.c:425
+#: mixutils/mixvm_command.c:520
msgid "Missing memory address\n"
msgstr "Especifiqueu l'adreça de memòria\n"
-#: mixutils/mixvm_command.c:459
+#: mixutils/mixvm_command.c:554
#, c-format
msgid "Invalid range: %ld-%ld\n"
msgstr "Rang %ld-%ld no vàlid\n"
-#: mixutils/mixvm_command.c:633
+#: mixutils/mixvm_command.c:718
+#, fuzzy
+msgid "Missing arguments\n"
+msgstr "Especifiqueu nom de fitxer\n"
+
+#: mixutils/mixvm_command.c:734
+msgid "Wrong argument number\n"
+msgstr ""
+
+#: mixutils/mixvm_command.c:757
#, c-format
msgid "Line number %ld too high\n"
msgstr "Número de línia %ld massa alt\n"
-#: mixutils/mixvm_command.c:636 mixutils/mixvm_command.c:666
-#: mixutils/mixvm_command.c:693
+#: mixutils/mixvm_command.c:760 mixutils/mixvm_command.c:790
+#: mixutils/mixvm_command.c:817
msgid "Could not set breakpoint. Internal error\n"
msgstr "Error intern intentant establir un punt de ruptura\n"
-#: mixutils/mixvm_command.c:639
+#: mixutils/mixvm_command.c:763
msgid "Could not set breakpoint. No debug info available\n"
msgstr "No es pot establir el punt de ruptura. No hi ha informació de debug\n"
-#: mixutils/mixvm_command.c:642
+#: mixutils/mixvm_command.c:766
#, c-format
msgid "Breakpoint set at line %ld\n"
msgstr "Punt de ruptura a la línia %ld establert\n"
-#: mixutils/mixvm_command.c:663 mixutils/mixvm_command.c:723
+#: mixutils/mixvm_command.c:787 mixutils/mixvm_command.c:847
#, fuzzy, c-format
msgid "Invalid address %ld\n"
msgstr "camp d'adreça no vàlid"
-#: mixutils/mixvm_command.c:669
+#: mixutils/mixvm_command.c:793
#, fuzzy, c-format
msgid "Breakpoint set at address %ld\n"
msgstr "Punt de ruptura a la línia %ld establert\n"
-#: mixutils/mixvm_command.c:690
+#: mixutils/mixvm_command.c:814
#, c-format
msgid "No breakpoint set at line %ld\n"
msgstr "No hi havia cap punt de ruptura a la línia %ld\n"
-#: mixutils/mixvm_command.c:696
+#: mixutils/mixvm_command.c:820
msgid "No debug info available\n"
msgstr "No hi ha informació de debug disponible\n"
-#: mixutils/mixvm_command.c:699
+#: mixutils/mixvm_command.c:823
#, c-format
msgid "Breakpoint cleared at line %ld\n"
msgstr "Punt de ruptura esborrat a la línia %ld\n"
-#: mixutils/mixvm_command.c:726
+#: mixutils/mixvm_command.c:850
#, fuzzy
msgid "Could not clear breakpoint. Internal error\n"
msgstr "Error intern intentant establir un punt de ruptura\n"
-#: mixutils/mixvm_command.c:729
+#: mixutils/mixvm_command.c:853
#, fuzzy, c-format
msgid "Breakpoint cleared at address %ld\n"
msgstr "Punt de ruptura esborrat a la línia %ld\n"
-#: mixutils/mixvm_command.c:765
+#: mixutils/mixvm_command.c:889
msgid "Successful compilation\n"
msgstr "La compilació s'ha completat amb éxit\n"
-#: mixutils/mixvm_command.c:820
+#: mixutils/mixvm_command.c:916
+msgid "Cannot find editor ("
+msgstr ""
+
+#: mixutils/mixvm_command.c:919
+#, fuzzy
+msgid "undefined)\n"
+msgstr "símbol no definit"
+
+#: mixutils/mixvm_command.c:953
+#, c-format
+msgid ""
+"\n"
+"Evaluation error: %s\n"
+msgstr ""
+
+#: mixutils/mixvm_command.c:978
+#, fuzzy, c-format
+msgid "Incorrect byte specification: %s\n"
+msgstr "especificació de camp ('f-spec') inesperada"
+
+#: mixutils/mixvm_command.c:991
+#, c-format
+msgid "The expression %s does not fit in a word\n"
+msgstr ""
+
+#: mixutils/mixvm_command.c:1010
+msgid "Instruction tracing has been turned ON.\n"
+msgstr ""
+
+#: mixutils/mixvm_command.c:1018
+msgid "Instruction tracing has been turned OFF.\n"
+msgstr ""
+
+#: mixutils/mixvm_command.c:1037
msgid "Failed initialisation (no memory resources)"
msgstr "Error inicialitzant programa (no hi ha memòria)"
-#: mixutils/mixvm_command.c:853
+#: mixutils/mixvm_command.c:1073
#, c-format
msgid "%s: No such command. Try 'help'\n"
msgstr "La comanda %s no existeix. Proveu 'help'\n"
@@ -436,16 +511,16 @@ msgstr ""
msgid "operand of ALF pseudo instruction has more than 5 chars"
msgstr ""
-#: mixlib/mix_parser.c:121 mixlib/mix_parser.c:139
+#: mixlib/mix_parser.c:133
msgid "No system resources"
msgstr "no hi ha recursos al sistema"
-#: mixlib/mix_parser.c:333
+#: mixlib/mix_parser.c:327
#, c-format
msgid "\t%s\t(line %d)\n"
msgstr " %s (línia %d)\n"
-#: mixlib/mix_parser.c:352
+#: mixlib/mix_parser.c:346
#, c-format
msgid ""
"*** %s%s: compilation summary ***\n"
@@ -454,11 +529,11 @@ msgstr ""
"*** %s%s: resum de la compilació\n"
"\n"
-#: mixlib/mix_parser.c:355
+#: mixlib/mix_parser.c:349
msgid "*** Address / Compiled word / Symbolic rep / Source file line\n"
msgstr "*** Adreça / Paraula compilada / Repr. simbólica / Núm. línia\n"
-#: mixlib/mix_parser.c:359
+#: mixlib/mix_parser.c:353
#, c-format
msgid ""
"\n"
@@ -467,7 +542,7 @@ msgstr ""
"\n"
"*** Adreça d'inici: %d\n"
-#: mixlib/mix_parser.c:361
+#: mixlib/mix_parser.c:355
msgid ""
"\n"
"*** Symbol table\n"
@@ -475,7 +550,7 @@ msgstr ""
"\n"
"*** Taula de símbols\n"
-#: mixlib/mix_parser.c:363
+#: mixlib/mix_parser.c:357
msgid ""
"\n"
"*** End of summary ***\n"
@@ -483,24 +558,23 @@ msgstr ""
"\n"
"*** Fi del resum ***\n"
-#: mixlib/mix_parser.c:500
-msgid "Unable to allocate memory"
-msgstr "Memòria dinàmica insuficient"
-
-#: mixlib/mix_parser.c:528
+#: mixlib/mix_parser.c:518
msgid "warning"
msgstr "advertència"
-#: mixlib/mix_parser.c:528
+#: mixlib/mix_parser.c:518
msgid "error"
msgstr "error"
-#: mixlib/mix_vm_dump.c:155
+#: mixlib/mix_vm_dump.c:153
#, c-format
msgid "Overflow: %s\n"
msgstr "Overflow: %s\n"
-#: mixlib/mix_vm_dump.c:179
+#: mixlib/mix_vm_dump.c:177
#, c-format
msgid "Cmp: %s\n"
msgstr "Cmp: %s\n"
+
+#~ msgid "Unable to allocate memory"
+#~ msgstr "Memòria dinàmica insuficient"
diff --git a/samples/.cvsignore b/samples/.cvsignore
index 9caf776..ebb2d73 100644
--- a/samples/.cvsignore
+++ b/samples/.cvsignore
@@ -23,6 +23,7 @@ stress3.mixal
stress3.mls
stress4.mix
stress4.mls
+stress5.mix
stress5.mixal
stress5.mls
tape0.dev