[zvm] 2 new revisions pushed by david.jc.anderson on 2009-05-27 22:36 GMT

0 views
Skip to first unread message

codesite...@google.com

unread,
May 27, 2009, 6:37:59 PM5/27/09
to zvm...@googlegroups.com
2 new revisions:

Revision: bd634b3d1f
Author: David Anderson <da...@natulte.net>
Date: Wed May 27 13:24:17 2009
Log: Add an hg ignore file to ignore all the compiled python files.
http://code.google.com/p/zvm/source/detail?r=bd634b3d1f

Revision: 9d7fd29841
Author: David Anderson <da...@natulte.net>
Date: Wed May 27 15:36:21 2009
Log: Implement the output_stream opcode....
http://code.google.com/p/zvm/source/detail?r=9d7fd29841

==============================================================================
Revision: bd634b3d1f
Author: David Anderson <da...@natulte.net>
Date: Wed May 27 13:24:17 2009
Log: Add an hg ignore file to ignore all the compiled python files.
http://code.google.com/p/zvm/source/detail?r=bd634b3d1f

Added:
/.hgignore

=======================================
--- /dev/null
+++ /.hgignore Wed May 27 13:24:17 2009
@@ -0,0 +1,9 @@
+.*\.pyc
+.*~$
+.*\#$
+.*\.os$
+.*\.so$
+.*\.log$
+\.sconsign\.dblite
+/\.\#
+

==============================================================================
Revision: 9d7fd29841
Author: David Anderson <da...@natulte.net>
Date: Wed May 27 15:36:21 2009
Log: Implement the output_stream opcode....
http://code.google.com/p/zvm/source/detail?r=9d7fd29841

Modified:
/zvm/zcpu.py
/zvm/zmachine.py
/zvm/zstreammanager.py

=======================================
--- /zvm/zcpu.py Mon Jul 21 22:29:27 2008
+++ /zvm/zcpu.py Wed May 27 15:36:21 2009
@@ -30,12 +30,14 @@
"Opcode not yet implemented"

class ZCpu(object):
- def __init__(self, zmem, zopdecoder, zstack, zobjects, zstring, zui):
+ def __init__(self, zmem, zopdecoder, zstack, zobjects, zstring,
+ zstreammanager, zui):
self._memory = zmem
self._opdecoder = zopdecoder
self._stackmanager = zstack
self._objects = zobjects
self._string = zstring
+ self._streammanager = zstreammanager
self._ui = zui

def _get_handler(self, opcode_class, opcode_number):
@@ -77,17 +79,18 @@

def _make_signed(self, a):
"""Turn the given 16-bit value into a signed integer."""
+ assert a < 2**16
# This is a little ugly.
bf = bitfield.BitField(a)
if bf[15]:
- a = bf[0:15] - 65536
+ a = a - 2**16
return a

def _unmake_signed(self, a):
"""Turn the given signed integer into a 16-bit value ready for
storage."""
if a < 0:
- a = 65536 + a
+ a = 2**16 + a
return a

def _read_variable(self, addr):
@@ -618,13 +621,21 @@

self._ui.screen.buffer_mode = bool(flag)

- def op_output_stream(self, *args):
- """TODO: Write docstring here."""
- raise ZCpuNotImplemented
-
- def op_output_stream_v5(self, *args):
- """TODO: Write docstring here."""
- raise ZCpuNotImplemented
+ def op_output_stream(self, stream_num):
+ """Enable or disable the given stream.
+
+ This is the v3/4 implementation of the opcode, which just
+ delegates to the backwards compatible v5 implementation.
+ """
+ self.op_output_stream_v5(stream_num)
+
+ def op_output_stream_v5(self, stream_num, table=None):
+ """Enable or disable the given output stream."""
+ stream_num = self._make_signed(stream_num)
+ if stream_num < 0:
+ self._streammanager.output.unselect(-stream_num)
+ else:
+ self._streammanager.output.select(stream_num)

def op_input_stream(self, *args):
"""TODO: Write docstring here."""
=======================================
--- /zvm/zmachine.py Wed May 14 11:14:39 2008
+++ /zvm/zmachine.py Wed May 27 15:36:21 2009
@@ -11,6 +11,7 @@
from zstackmanager import ZStackManager
from zobjectparser import ZObjectParser
from zcpu import ZCpu
+from zstreammanager import ZStreamManager
import zlogging

class ZMachineError(Exception):
@@ -29,8 +30,10 @@
self._opdecoder = ZOpDecoder(self._mem, self._stackmanager)
self._opdecoder.program_counter = self._mem.read_word(0x06)
self._ui = ui
- self._cpu = ZCpu(self._mem, self._opdecoder, self._stackmanager,\
- self._objectparser, self._stringfactory, self._ui)
+ self._stream_manager = ZStreamManager(self._mem, self._ui)
+ self._cpu = ZCpu(self._mem, self._opdecoder, self._stackmanager,
+ self._objectparser, self._stringfactory,
+ self._stream_manager, self._ui)

#--------- Public APIs -----------

=======================================
--- /zvm/zstreammanager.py Sun Jun 15 23:46:08 2008
+++ /zvm/zstreammanager.py Wed May 27 15:36:21 2009
@@ -91,3 +91,8 @@

return self._streams[self._selectedStream]

+class ZStreamManager(object):
+ def __init__(self, zmem, zui):
+ self.input = ZInputStreamManager(zui)
+ self.output = ZOutputStreamManager(zmem, zui)
+

Reply all
Reply to author
Forward
0 new messages