WIP implementing Pat80 IO device
TODO: allow to dynamically load io devices modules to not override the original one
This commit is contained in:
		| @@ -17,7 +17,7 @@ class Interruptable(object): | |||||||
|         pass |         pass | ||||||
|      |      | ||||||
| class Console(QTextEdit, IO): | class Console(QTextEdit, IO): | ||||||
|     _addresses = [0x80, 0x81] |     _addresses = [0x00, 0x01] | ||||||
|     _wrt_sgnl = Signal(int, int) |     _wrt_sgnl = Signal(int, int) | ||||||
|     def __init__(self, interruptable): |     def __init__(self, interruptable): | ||||||
|         #assert isinstance(interruptable, Interruptable ) |         #assert isinstance(interruptable, Interruptable ) | ||||||
| @@ -37,17 +37,15 @@ class Console(QTextEdit, IO): | |||||||
|          |          | ||||||
|     def read(self, address): |     def read(self, address): | ||||||
|         print ("READ ", address) |         print ("READ ", address) | ||||||
|         if address == 0x80: |         # Sono invertiti? Per colpa dell'emulatore? | ||||||
|             v =  ((1 << 1) | # RTS |         if address == 0x01: | ||||||
|                   ((self._send_queue is not None) << 0) | # interrupt? |             pass | ||||||
|                   0 ) |         elif address == 0x00: | ||||||
|             return v |  | ||||||
|         elif address == 0x81: |  | ||||||
|             if self._send_queue is not None: |             if self._send_queue is not None: | ||||||
|                 val = self._send_queue |                 val = self._send_queue | ||||||
|                 self._send_queue = None |                 self._send_queue = None | ||||||
|                 return val |                 return val | ||||||
|         return 0x13 |         return 0x0 | ||||||
|      |      | ||||||
|      |      | ||||||
|     @Slot(int, int) |     @Slot(int, int) | ||||||
| @@ -56,15 +54,10 @@ class Console(QTextEdit, IO): | |||||||
|         self._wrt_sgnl.emit(address, value) |         self._wrt_sgnl.emit(address, value) | ||||||
|          |          | ||||||
|     def _write(self, address, value): |     def _write(self, address, value): | ||||||
|         if address == 0x80: |         if address == 0x01: | ||||||
|             pass |             pass | ||||||
|         elif address == 0x81: |         elif address == 0x0: | ||||||
|             if value <  128 and value > 10: |             self.setText(self.toPlainText()+chr(value)) | ||||||
|                 self.setText(self.toPlainText()+chr(value)) |  | ||||||
|             else: |  | ||||||
|                 self.setText(self.toPlainText()+".") |  | ||||||
|         else: |  | ||||||
|             raise Exception("Trying Console IO with wrong address") |  | ||||||
|          |          | ||||||
|     def keyPressEvent(self, event): |     def keyPressEvent(self, event): | ||||||
| #        print ("Event:", event) | #        print ("Event:", event) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user