Giter Site home page Giter Site logo

jedimatt42 / tipi Goto Github PK

View Code? Open in Web Editor NEW
58.0 58.0 12.0 16.98 MB

TI-99/4A to Raspberry PI messaging through console sideport

License: Other

Python 62.18% Shell 4.37% Verilog 5.08% Makefile 0.72% C 16.79% HTML 7.06% XSLT 0.68% CSS 1.25% Assembly 1.78% Batchfile 0.09%

tipi's People

Contributors

arcadeshopper avatar electriclab avatar jedimatt42 avatar jgparker avatar msplett avatar peberlein 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tipi's Issues

We can reduce the output pins to the RPI as by using a register select.

The RPi side doesn't need 16 GPIO pins dedicated to reading 2 8-bit registers. We can reduce the number of pins on the target CPLD and leave pins open on the RPi.

Use 1 register select pin, if HIGH, the TI Data register is selected, if LOW the TI Control register is selected. then 8 pins for the parallel output of the register.

That's a 7 pin reduction.

Use shift registers and free up pins on RPi

Output pins on the RPi are all used up. And we only get 4 bits for control output.

If we used 2 shift registers, we could trade 12 pins from 4, and get 16 actual output bits for PI data and control signals.

Clk-d, clk-c, data, le.

This could be synthesized inside the CPLD.

Sector IO is not supported, but Direct-Input and Direct-Output are.

Maybe someday disk images will be supported, and allow sector IO... but the goal of TIPI is to get away from disk images... so sector IO just doesn't make sense.

However, I would like to catalog things that are known not to work. And if there is an alternative for the same program that does work.

WebUI: Upload filename conversions

For specific filename characters that we convert from the DSR, we should also convert on upload:

Uploaded files with the '/' or '' in their name should be replaced with '.' instead before saving to TIPI.

WebUI: assign and clear DSK?_DIR mappings

When traversing to a directory in the WebUI, it would be handy to be able to assign them to
DSK1_DIR
DSK2_DIR
or DSK3_DIR right there.

It would also be handy to be able to clear the assignments.

More wire reduction

I want to reduce the 2x 8 bit<->gpio sets, to one set, and one selector bit. So the RPIO, when reading a data byte, would set the selector bit LOW, and then read the single set of 8 gpio pins. When reading the control byte, it would set the selector bit HIGH, and then read the same gpio pins. The CPLD/FPGA/Logic will have to control which latched data is presented based on the selector bit.

With this, the RPi interface drops from 22 to 15 wires. And the burden being on the RPi side, I wouldn't expect any performance loss.

EMPTY DV80 file is not cataloged.

EMPTY.zip

The attached file contains a DV80 file with zero records... created by:
$ touch empty.txt
$ xdm99.py -T empty.txt -f "DIS/VAR80" -n EMPTY -o EMPTY

I can successfully load it into editor/assembler (Fred Kaal's EA5) but the CatalogFile is omitting it... I must have broken something.

Need to stop using symlinks for DSK1-3 mapping, too messy.

  1. I don't like that the DSK1 link ends up listing when you list TIPI.
  2. see 1.
  3. state management is messy... need to be able to overwrite, and remove, as well as create...

I propose a TIPI.CONFIG special file.
regardless of what record number is written, it fronts a map, the data in a record should be in the format:
=

The configuration should be able to be opened as a DV80 file, and written... So, any TI editor can load the entire configuration map, and see the available setting/keys and their values.
value may be:

for no mapping of DSK1
DSK1=
or for any mapping to a directory beneath tipi:
DSK1=TIPI.bas.WHATEVER

This TIPI.CONFIG should only contain mutable settings. For immutable details continue to use TIPI.STATUS ( which I would propose also be changed to a = format.

creating softlinks is dumb

Let's just configure the software to be a git clone directly in /home/tipi/tipi so there are no strange softlink steps.

PI.http should support status for at least eof detection.

reading as display variable 80 from web doesn't support BASIC well, because you cannot test for eof without the status opcode. Reading to end causes an error, and that is harder to work with.

on error should be a viable work-around - for now.

back off the gpio when not being used.

At it is now, the RPi is running at 1 full core load constantly... It is never backing off of the cpu when waiting for the TI to ask for something.

I want to put a yield ( time.sleep(0.01) ) in the 'reset' loop, which will slow down initial command response, but the test here, will be if the mouse performance doesn't notice, then it is probably fine.

I'd like to see the RPi down to around 0.05 load when the TI isn't using it.

DSK?_DIR should represent the volume name somehow

DEADLINE loader expects and validates the volume name of the disk...

Suggestion is that the last part of the path name should be reported as the volume name when directories are mapped to DSK?_DIR entries.

Reset switch

There should be a soft reset for the TI related services on the RPi, controlled by one of the GPIO pins.

The 4A could also trigger this with a powerup routine so things are in known state with every reboot.

Request: CALL TIPION

Add CALL TIPION() CALL TIPIOFF() to enable CRU Bit, and keep the hardware in the memory map so TI BASIC can use it.

Might require 2 cru bits, to decouple from the OS ROM code turning it off right after the call is made.

Filenames on host os with / \ are not handled correctly

They are presented to the TI as the name with 2 unprintable characters...

They should be presented instead in the 'long-filename' format of SIXCHR`15C

Example was the SFIRST/O and SLAST/O files with EA.

And make sure that naming them SFIRST.O and SLAST.O presents to the TI as SFIRST/O etc.

list files in webui too slow

Greg loaded the root of tipi up with 256 tifiles, and though the thing crashed... it eventually finished.

Should add a spinner first, so we know it is busy... maybe... then find a faster way to identify the TI'ness of files.

request: upload multiple files at once.

This is the first thing Greg tried to do... I've changed the sd-card image to enable the samba share by default. But, since we want to support file type conversion through upload, multi-select/batch upload would be a big time saver for the user.

tipi.service can't access some resources

The latest version of tipi.service has tipi.sh running as user: tipi. Is this correct? If so, did you chmod the following devices to be readable/writeable by the tipi user:
/dev/mem
/dev/gpiomem
Or maybe you addded 'tipi' to kmem and gpio groups?
The service won't start otherwise.

Automount USB

INSTALL.md documentation on creating the SD card image needs to include steps to configure raspbian to automount USB storage, ideally under /home/tipi/tipi_disk/USBx

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.