Giter Club home page Giter Club logo

pydrivewire's Introduction

pyDriveWire v0.6

Python Implementation of DriveWire 4 and EmCee Protocols

PyDriveWire is a nearly complete DriveWire4 Server written in Python. The goal is to eventually implement all of the features available. The server also implements additional features that are not available in DriveWire4.

PyDriveWire also has support for the EmCee Protocol for use with MCX Basic on the TRS-80 MC-10.

DriveWire 4 and EmCee Procotols can be used simultaneously on the server without reconfiguration.

Table of Contents

  1. Features
  2. Getting Started

1. Features

Notable Missing Features

  • MIDI
  • OS9 /Z console windows
  • MShell Support

Back to top

2. Getting Started

(new for v0.5c) pyDriveWire has two Easy Installtion Methods: Binary Package and Docker. These options are designed for Ease Of Use and do not require a complex series of installation steps. pyDriveWire can also be run directly from any pypy or python install if it meets the appropriate requirements.

In terms of performance, the Python and Binary Package installation methods are fully functional but have the lowest performance. Docker provides a medium level of performance. pypy should be used to get the maximum performance out of pyDriveWire.

2.1 Binary Package Installation

Binary packages are available at the following location:

https://github.com/n6il/pyDriveWire/releases/latest

Packages are available for the following operating systems:

  • linux-x86_64 -- Any modern 64-bit Linux
  • win-x64 -- 64-bit Windows (Windows 7 or later)
  • win32 -- 32-bit Windows (Windows 7 or later)
  • rpi3 -- Raspberry Pi 3 (Raspbian Buster)
  • rpi4 -- Raspberry Pi 4 (Raspbian Jesse)
  • macOs -- macOs (High Sierra or later)

Using a Binary Package is very simple:

  1. Download the package for your operating system
  2. Unzip the package
  3. The package contains two executable programs pyDriveWire and pyDwCli and a copy of this manual.
  4. Run the pyDriveWire executable. See next section for examples:
  5. Full details of the command line options are in the Command Line and Config File Options section.

2.2 Running a Binary Package

Example: Run pyDriveWire with the HTTP UI on port 6800 and use a serial port:

pyDriveWire --ui-port 6800 --port /dev/ttyUSB0 --speed 460800

Example: Run pyDriveWire with the HTTP UI on port 6800 and use a serial port and mount two disk images:

pyDriveWire --ui-port 6800 --port /dev/ttyUSB0 --speed 460800 \
	/demo/test1.dsk /demo/test2.dsk

Example: Run pyDriveWire with the HTTP UI on port 6800 and the Becker port connection on port 65504:

pyDriveWire --ui-port 6800 --accept --port 65504

2.3 Docker

  1. Install Docker Desktop
  2. Clone the container: docker pull mikeyn6il/pydrivewire
  3. Run the container. See next section for examples.
  4. Full details of the command line options are in the Command Line and Config File Options section.

2.4 Running The Docker Container

Example: Run pyDriveWire with the HTTP UI on port 6800 and use a serial port:

docker run -i -p 6800:6800/tcp -p 65504:65504/tcp \
	--device /dev/ttyUSB0:/dev/ttyUSB0 mikeyn6il/pydrivewire:latest \
	--ui-port 6800 --port /dev/ttyUSB0 --speed 460800

For Windows use the following --device option:

--device COM4:/dev/ttyUSB0

Example: Run pyDriveWire with the HTTP UI on port 6800 and use a serial port and use a HTTP disk image:

docker run -i -p 6800:6800/tcp -p 65504:65504/tcp \
	--device /dev/ttyUSB0:/dev/ttyUSB0 mikeyn6il/pydrivewire:latest \
	--ui-port 6800 --port /dev/ttyUSB0 --speed 460800 \
	http://www.ocs.net/~n6il/DWTERM.dsk

Example: Run pyDriveWire with the HTTP UI on port 6800 and the Becker port connection on port 65504:

docker run -i -p 6800:6800/tcp -p 65504:65504/tcp \
	mikeyn6il:pydrivewire/latest \
	--ui-port 6800 --accept --port 65504

2.4 Installation Requirements

  • pypy -- For maximum performance it is recommended to run the server with pypy. pypy is a Python interpreter that does JIT compilation and results in greatly increased speed
  • pyserial -- Install using pip

2.5 Supported Operating Systems

  • Any OS where you can run Python, including but not limited to:
  • Linux
  • macOS
  • Windows

2.5 Installation Details

Please see The pyDriveWire Manual - Chapter 2 for detailed installation instructions

pydrivewire's People

Contributors

digitalbytes avatar n6il avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pydrivewire's Issues

raspberry pi 4 buster install error

I am trying to install this to raspberry pi 4 rasbian buster 64 bit. I have tried to run both the rpi4 and rpi3 versions of pydrivewire and I get the error libz.so.1 not found error.I have tried to locate this library but no luck.

Indentation issue: dwcommand.py line 447

Mike,

After I pulled the updates from github today, dwcommand.py has "unreachable code" on line 447. (this is the line number of the "unreachable code" in my editor. But when I look at offending line number in Github, it's completely different.

dwcommand_indentation_issue

It also looks like there's an indentation issue throughout the file.
Didn't we have some indentation issues previously- when I first got involved with the project?

pyDriveWire not saving config

When trying to save config with the follow it gives errors:

pyDriveWire(0)>  dw config save
ERROR:: [Errno 2] No such file or directory: '~/.pydrivewirerc'
Traceback (most recent call last):
  File "/home/dladd/src/pyDriveWire/dwcommand.py", line 860, in doRepl
    r = self.parser.parse(wdata, True)
  File "/home/dladd/src/pyDriveWire/dwcommand.py", line 811, in parse
    res = v.call(callData)
  File "/home/dladd/src/pyDriveWire/dwcommand.py", line 82, in call
    return self.fn(*args)
  File "/home/dladd/src/pyDriveWire/dwcommand.py", line 758, in doConfigSave
    with open(outFile, 'w') as f:
IOError: [Errno 2] No such file or directory: '~/.pydrivewirerc'
pyDriveWire(0)>


One session and quit

If the underlying communication channel supports carrier (tcp/dcd), can we have a program option to exit the server when this comm channel closed? This could make scripting the server easier, and help speed up dev cycles (for me at least)

Default file extension in Emcee server?

In the "official" Emcee server on macOS, you can type load"file" on the MC-10 and the server will add the .c10 extension for you. Could we have that for pyDriveWire as well?

Add LICENCE file

Just a reminder to add a licence file (GPL or else) after proper consideration.

My suggestion is GPL v3.

Current status

What is the status of this project? I noticed that the most recent activity was on the develop branch, but I'd be interested to find out what the current plans are (if any, just askin' ...), for example regarding Python 3 support. Some required changes are quite straightforward, e.g. print() iso print, and things like import urllib.parse.

Is this project being used as of today? Is it simply a matter of sticking to Python 2 for now?

AttributeError: class DWServer has no attribute 'mcErr'

Recieved this when I did an LLIST on my MC-10 (MCX BASIC)

Traceback (most recent call last):
File "./pyDriveWire.py", line 104, in
dws.main()
File "/home/njc/dev/git/pyDriveWire/dwserver.py", line 907, in main
f(self,cmd)
File "/home/njc/dev/git/pyDriveWire/dwserver.py", line 853, in doEmCeeCmd
f(self, mccmd)
File "/home/njc/dev/git/pyDriveWire/dwserver.py", line 852, in
f= lambda s,x: DWServer.mcErr(s,x)
AttributeError: class DWServer has no attribute 'mcErr'

I think you might need to change mcErr to cmdErr
dwserver.py line 852 mcErr change to cmdErr

Feature Request: DLOAD Server?

Is it possible for pyDriveWire to host a DLOAD server so that an initial program load to a CoCo2 could happen over serial rather than having to have a ROM or load over cassette...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.