
ZedRipper: A 16-core Z80 laptop - pmarin
http://www.chrisfenton.com/the-zedripper-part-1/
======
DonHopkins
Sounds like 1/16th of a ZMOB! ("The computer of the future, using the
processor of the past.")

[https://www.ijcai.org/Proceedings/81-2/Papers/071.pdf](https://www.ijcai.org/Proceedings/81-2/Papers/071.pdf)

>ZMOB: A NEW COMPUTING ENGINE FOR AI. Chuck Rieger, Randy Trigg, Bob Bane

>ABSTRACT: A new research multiprocessor named ZMOB is described, and its
significance to AI research is surveyed and characterized. ZMOB, under current
construction and scheduled for completion late Fall 1981, is a 256 processor
machine with a high speed, interprocessor communications system called the
"conveyor belt", a non-blocking, 20 megabyte/second message switcher. Because
of its large number of processors, high computational throughput (100 million
instructions/sec), large cumulative high speed memory (16 megabytes), high
interprocessor communications bandwidth, and external communications and
sensing channels, ZMOB opens some new areas of exploration in object-oriented
modeling, knowledge-based and domain expert systems, intelligent sensing and
robotics, and distributed perceptual and cognitive modeling. The paper
attempts to blend a description of ZMOB's hardware with ideas about where and
how it fits into various types of AI research.

[https://retrocomputing.stackexchange.com/questions/5080/fast...](https://retrocomputing.stackexchange.com/questions/5080/fastest-
cp-m-z80-based-computer-ever-built)

>The fastest Z80 computer ever designed and built was almost certainly ZMOB, a
256 node Z80A cluster designed and built at University of Maryland as part of
NASA NSG-7253. That's a total of 1GHz of Z80 power.

~~~
fentonc
I had never heard of that machine until I posted this and someone sent me a
link to it. The architecture of the ZedRipper is actually incredibly similar -
each CPU has its own dedicated 64KB of memory and then an I/O mapped high-
speed synchronous ring bus connects them all. On a MHz * CPUs basis, mine
should actually be slightly faster =)

~~~
rootbear
That was probably me, I posted a link in the Hackaday comment section. Don, I
forgot about the colored LEDs. I need to find a picture!

~~~
DonHopkins
Sorry, the only photo I have is monochrome (linked above). Maybe Bob Bane has
some color photos! It ran a "Dining Philosophers" simulation that did a lot of
cool blinking, and I ported FIG-FORTH to it, which was great for writing LED
blinking programs.

[https://www.cs.umd.edu/sites/default/files/zelkowitz-
report....](https://www.cs.umd.edu/sites/default/files/zelkowitz-report.pdf)

Laboratory for Parallel Computation and Z-MOB Around 1980, Dr. Charles (Chuck)
Rieger (Figure 3.12) designed a computing system to run as a network of
processors. The initial design consisted of 256 Z80A processors. Each
contained 64K memory, linked together on a “conveyor belt” (a 48-bit wide
slotted ring architecture), as packets of information were passed from one
processor (or “moblet”) to another. This “mob of Z80s” soon became known as
Zmob. The system was programmed and controlled by a host VAX 11/780 computer.
An Air Force Office of Scientific Research grant was obtained for building the
basic Zmob hardware.

It was apparent to both Minker and Basili (after addressing the crush of
student majors) that to be a top department, we needed more equipment. Minker
was behind the acquisition of the VAX 11/780 (Mimsy) in 1980, which was a good
start, but was insufficient. We needed terminals on every desk, additional
machines like Mimsy, and a laboratory under our own control. Computers were
our technology and if we couldn’t have and control our own machines, our
research in this area would always be hampered.

In 1982 Basili organized a proposal team, consisting of Agrawala, Minker,
Rosenfeld, Stewart, and Weiser. They met and came up with the idea of a
parallel computation laboratory, using some of the ideas in Zmob as a starting
point. A Coordinated Experimental Research (CER) proposal was written to NSF,
and in 1983 it was funded as a 5-year $4.3M grant. This grant greatly expanded
the departmental laboratory, purchasing machines tove, gyre and gymble, as
discussed earlier.

PRISM, under the direction of Minker, was the core of the CER project. It was
conceived as the software system designed to run on Zmob, and was run as a
simulator on the VAX. It used Horn clause logic (similar to the design of
Prolog) to implement AND/OR parallelism. Users could specify the number of
problem solving machines (i.e., moblets) to use, the number of database
machines to use, and the number of machines to handle executable procedures.
Statistics were collected to determine how effective the search strategy was.
Users could also run PRISM in a sequential Prolog-like manner.

Continued Zmob research was funded by this grant and a version consisting of
128 moblets was built and installed in the Department laboratory (Figure
3.13). Moblets were accessed by physical address or by pattern matching.
Programming in Prolog like languages was seen as the mechanism for using Zmob.
Mobix was the operating system designed to run on Zmob, which would hide many
of the complexities of the Zmob hardware.

Due to inexperience in hardware design, Zmob ran, but not as reliably as
desired. The Z80s were 8-bit processors and became obsolete too soon. 16 bit
and 32 bit versions of Zmob were designed, and a 16 node ring of 16-bit
processors using the Motorola 68010 processor, called McMob, was built and
used for several years. Initial design work for a further advancement, called
Chessie, was started, but a prototype Chessie was never built. Work continued
for several years, but after the NSF grant that suppported most of the
development ended, work slowly stopped on that activity.

Mark Weiser’s foot “mole” of 1986 was another interesting idea that grew out
of the CER grant. Instead of using a mouse controlled by the hand, a foot
pedal was developed, eliminating the need to move the hands off the keyboard
in order to control the screen. Several variations were built and tested on
Sun workstations, but the concept never became fully operational.
Unfortunately for the Department, Weiser soon left for a research position at
Xerox Palo Alto Research Center and this activity also ended.

[https://en.wikipedia.org/wiki/Mark_Weiser](https://en.wikipedia.org/wiki/Mark_Weiser)

~~~
phy6
Funny story, in my undergrad I worked at UMIACS and we had to install a set of
foot pedal mice buttons in an office next to Minker's. The user would move the
mouse on their desk, but click with their feet.

~~~
dhosek
I used to joke that in the future, EMACS would require foot pedals to handle
all the different modifier keys it would want.

------
HocusLocus
I love the Z80 too, and Turbo Pascal! In 1980 I was writing custom comm
software for TRS-80 then Kaypro and Vector Graphic model 3. I wrote in
assembly a CP/M TSR that loaded, hooked BDOS and allowed any existing program
to transparently "encrypt" to and from disk by opening files matching a
selectable mask (like !???????.???) so you could save "encrypted" docs from
any app like WordStar. I use "encrypt" in scare quotes because it was only a
snake oil XOR proof of concept... I had DES flowcharted out but saw right away
that proper implementation would murder the TSR's size and throughput with
4MHz Z80 would be dismal.

Too bad, lost interest. Only a few years later with 16bit and MSDOS and faster
CPU it became practical and I could have been the first such product to market
but I was stupid.

I also had written a Turbo Pascal TSR program (using a 3rd party TSR toolkit)
that was like strace on linux, writing system calls to disk in the background.
I used it to troubleshoot many application program mysteries.

~~~
fit2rule
Get an Amstrad CPC6128, rig it out with an SD card, and experience the joy of
2019's releases for what is, arguably, one of the greater Z80 systems of the
era.

~~~
Starwatcher2001
Back in the 80s I had a TRS80 with 5 inch floppy drive, and an Amstrad CPC464
with built in cassette tape.

Having no patience to wait for games to load, I linked the two together via
the parallel printer interfaces and wrote some Z80 code on either end to allow
the TRS80 to store CPC464 programs.

I seem to remember only being able to use 6 of the bits for data, and using a
couple of the others to signal as "clear to send" between them. The transfer
was very quick, much faster than tape, but wasn't very reliable due to the
dodgy connectors on the TRS80.

Using an SD card with the old micros would be miles better.

------
mysterydip
As a lover of the Z80 and "what if" scenarios, I think this project is
fantastic. Hacking in the purest form, for no other reason than you could.
Someday I'd like to do something similar, but until then I'm just happy to
know it's possible and live vicariously through updates.

------
DonCarlitos
Disclaimer: Not a hardware engineer, nor a CP/M aficionado (though I
definitely remember Gary Kildall), but a former AST Research (later AST
Computer) employee. AST was an "expansion board" manufacturer turned systems
OEM. During the transition from memory and connectivity boards to desktops,
the company's top hardware engineers explored an architecture they based on an
"intelligent, arbitrated, multi-master bus." The notion was to speed up
operations and increase power by designing a bus that accommodated multiple
processors (on boards, of course) operating independently - arbitrated by a
central CPU. It never flew - but I always thought it an elegant model. This
was in the 1986 timeframe, long before GPU's became popular.

~~~
Bluecobra
Funnily enough, I just saw an old Computer Chronicles episode the other day
which talked about how slow the bus was and they had Dell showing off a 486 +
graphics board blowing away the same 486 and an ISA? graphics card.

If you haven’t seen it already, the 8 Bit Guy has a fun video about working in
AST’s tech support in the 90’s:

[https://youtu.be/2hdazA-VUf0](https://youtu.be/2hdazA-VUf0)

------
k_sze
Tangentially related question: how does one learn "computer architecture" or
"computer engineering" as a _hobbyist_? I'm actually not even sure what those
terms really mean.

I'm amazed that people can build homebrew computers using Z80, MOS 6502/6510,
or Motorola 68k series microprocessors.

I could buy one of those homebrew Z80 kits and assemble it, but I don't think
I'll gain much real _understanding_ just from the act of assembling the kit.

I have long wondered how things work down to the bare-metal level. What does
it take to be able to design (and program?) a homebrew computer? Let's say I
leave out the FPGA route and only focus on using real, off-the-shelf ICs.

I'm mostly just a software guy (I write Python, I've learned automata theory
at University) but I haven't learned any real electronics beyond things like
Ohm's law, KCL, KVL, capacitance, impedance as a complex number. I don't even
know my transistors or diodes.

~~~
the_pwner224
This book starts you off with NAND gates and then has you build an ALU, CPU,
assembler, and finally a Java-like-language compiler.

The Elements of Computing Systems / From NAND to Tetris
[https://www.nand2tetris.org/](https://www.nand2tetris.org/)

The first six textbook chapters (all the hardware stuff) are available on the
website in the 'Projects' tab, you should buy the book for the other six. All
12 chapter assignments are available on the website. The Software section has
a hardware simulator to test your designs.

~~~
jlevers
I'd like to second this -- I'm slowly making my way through Nand2Tetris
(currently building a VM -> assembly transpiler, and if you'd asked me to do
that a few months ago, I'd have had no idea what you were talking about), and
it's been really fun, taught me a lot about low-level computing, and given me
the opportunity to learn a new language (I'm building everything in C). I
highly recommend it!

------
cmrdporcupine
I'm pretty sure you don't need that beefy of an FPGA board to accomplish this;
there are cheap chinese Artix A7 100T boards with 100,000LUTs, almost 512k of
block RAM, and 256MB of DDR3 RAM available for under $100 USD; I doubt a Z80
core would take more than a couple thousand LUTs.

For my own project I have a PicoRV32 RISC-V core running at 150mhz, with HDMI
output, character set generator, sprite graphics generator, bitmap graphics
output, and a UART all in under 8000 LUTs...

~~~
eequah9L
From the article:

    
    
        > As I’ve mentioned before, all of the logic so far is 
        > pretty lightweight, occupying a mere 7% of on-chip 
        > logic resources
    

The author is well aware the board is overkill. He also mentions elsewhere he
used it because he happened to have it on hand, not because it's a
particularly good fit.

------
DonHopkins
The lovely plywood case reminds me of the luxurious Z80 based NorthStar
Horizon! (Nee "Kentucky Fried Computers".)

[https://en.wikipedia.org/wiki/North_Star_Horizon](https://en.wikipedia.org/wiki/North_Star_Horizon)

[https://en.wikipedia.org/wiki/North_Star_Computers](https://en.wikipedia.org/wiki/North_Star_Computers)

~~~
smacktoward
Nothing says “the 1970s” quite like wood paneling :-D

------
Tepix
This _really_ reminds me of TIS-100 which is a game by Zachtronics where you
inherit a weird computer with a bunch of minimalistic cores that you have to
program in assembly language. I really enjoyed playing it for a while until it
started feeling too much like real work.

------
jstanley
A small part of me was hoping this would contain 16x physical through-hole Z80
chips. Alas, 'tis FPGA.

~~~
anonymousiam
As far as I know, the fastest production Z-80 chip (the Z-80H) ran at 8MHz.
This one runs at 84MHz per CPU!

I switched from 8-bit (Z-80B) hardware to 16-bit (i386) hardware once the
16-bit PC could emulate the Z-80 faster than any physical Z-80 processor could
run. I feel fortunate to have skipped the 8088 and 80286 PCs which all ran
slower than my Z-80B for most things.

I kept one of my old CP/M machines in my parent's garage for 10 years, and
then tried to resurrect it. It was an IMSAI 8080 with CompuPro hardware that I
had modified to allow the front panel to work while allowing the system to run
at 4MHz. I had also implemented software configurable baud rate and
start/stop/parity selection by hacking the hardware and customizing the BIOS.

Unfortunately when I resurrected it, it booted and ran for only a short time
before the ST851 hard drives scraped the oxide coating from the system disks.
(I destroyed all of the backups while troubleshooting.)

I gave the whole system away before I discovered that they are actually still
quite valuable, but I have no regrets. I much prefer a more modern computer.

~~~
chipotle_coyote
If you expand that to Z80 _compatible_ chips, the fastest was (is, possibly,
as I think it's still being made) the Zilog eZ280 at 50 MHz -- which, given
that it runs at about three times as fast as the Z80 at the same clock
frequency, is like having a 150 MHz Z80.

[https://en.wikipedia.org/wiki/Zilog_eZ80](https://en.wikipedia.org/wiki/Zilog_eZ80)

My TRS-80 Model 4 back in the day (circa 1988, I think) had been upgraded with
a HD64180 CPU, which apparently could run at least at 10 MHz -- although I'm
pretty sure the third-party expansion board I was using ran it at 6.144 MHz.

~~~
Gracana
You may be aware, but to add to your comment...

Good ol' Z80s are still in active production as well, and you can buy a 20MHz
chip in a DIP, LQFP, or PLCC package.

Anyone who is interested should check out the RC2014 and retrocomp google
groups. Lots of discussion there, and there are a few people selling Z80 and
Z180 computer kits.

[https://groups.google.com/forum/#!forum/rc2014-z80](https://groups.google.com/forum/#!forum/rc2014-z80)
[https://groups.google.com/forum/#!forum/retro-
comp](https://groups.google.com/forum/#!forum/retro-comp)

------
andrewstuart
Nice - I've always wanted to run all Scott Adams adventure games at exactly
the same time.

~~~
anonymousiam
I think you meant Douglas Adams. Also, AFAIK he never released any for CP/M.
Those began in the PC era.

~~~
chipotle_coyote
No, he meant Scott Adams. Not the Dilbert guy.

[https://en.wikipedia.org/wiki/Scott_Adams_(game_designer)](https://en.wikipedia.org/wiki/Scott_Adams_\(game_designer\))

The Scott Adams adventure game series was published around 1978-83, and
started on the TRS-80 Model I. I don't know if there were ever official CP/M
ports, but they were certainly of that era.

~~~
anonymousiam
Thanks for the clarification! I hacked TRS-80 Model I hardware (for a friend),
but I never cared much for TRSDOS or Lifeboat so I have missed out on that
software experience.

I guess this was a port of the classic Adventure game to Tandy. I had the CP/M
version (550 point Colossal Cave Adventure). I had played it even earlier on
RT-11 where it took about half an hour to load from two 8" floppies.

------
userbinator
That is not a cheap FPGA --- I couldn't find the exact model but other Stratix
IV GX are in the $10k range.

~~~
arcticbull
Definitely, although they're using basically none of the logic resources. You
could probably get the bulk of the result with an Artix 7 and a memory
controller (instead of using all those large BRAMs). Or just an Artix 7 and
not allocating 64kB of BRAM for each core.

$129 for an Artix 7 development board is a steal [1].

[1] [https://store.digilentinc.com/arty-a7-artix-7-fpga-
developme...](https://store.digilentinc.com/arty-a7-artix-7-fpga-development-
board-for-makers-and-hobbyists/)

~~~
fentonc
Yeah, if you just replaced the 64KB of RAM with a 4KB cache backed by DRAM,
you could probably fit 64 cores in one of those no problem, but 1) the
performance wouldn't be quite as good, and 2) this project was mostly an
exercise in excess since I was trying to find something to do with my giant
FPGA board.

~~~
jandrese
I'm guessing that simple one-way ring IPC mechanism is going to be a
bottleneck in a hurry as you add more processors.

~~~
fentonc
It's current manifestation is very much a 'good enough' solution. I just
wanted a scheme for simple all-to-all connectivity to map the serial ports to,
and the only traffic it carries at the moment is either terminal traffic or
disk data from the SD card, so it's not even close to being taxed. The obvious
improvements are to add deep buffers to hide the latency of credit return,
crank up the clock and to make the bus wider. This board could probably handle
a 200-bit wide bus at 100 MHz+ speeds with no problems. Computer architecture
is a fun hobby =)

------
duelingjello
Interesting. The original Intel 8086/8088 (iAPX 86) manuals discussed multiple
processors too. Can't wait for a Concurrent CP/M-86 "NET" version done with
74ALS/ALVT/LVT/LVX glue. ;) Or get really fancy by shoving all the glue into
an FPGA.

[https://archive.org/details/bitsavers_inteldataBrsManual_570...](https://archive.org/details/bitsavers_inteldataBrsManual_57011881)

Awesome 74xx/40xx series logic quick reference

[https://www.mouser.com/catalog/supplier/library/pdf/STLogic....](https://www.mouser.com/catalog/supplier/library/pdf/STLogic.pdf)

------
doctor_eval
I’m just amazed at how many people dig the Z80 as much as I do. It’s so cool
seeing all these projects on my favourite CPU.

I mean this stuff would have seemed absolutely incredible to my 18 year old
self. And so very cool to see a reference to MP/M. Though I seem to recall
needing to use 8080 mnemonics to work on MP/M?

~~~
mywittyname
I bet a lot of us got our start doing low-level programming for the Z80. I
remember learning to program assembly from the manual for a TI calculator. I'm
pretty sure those things are still ubiquitous. It's probably the easiest way
to learn assembly programming on real hardware anymore.

~~~
downerending
Having no other resources, as a kid I sent Zilog a letter asking for a copy of
their Z80 docs. Probably wrote it in crayon.

Bless them, they sent it, and that's how I got started learning microprocessor
architecture.

~~~
tstout
This makes me smile!

~~~
downerending
Me too. It was essentially this, albeit a very early version:
[http://www.z80.info/zip/z80cpu_um.pdf](http://www.z80.info/zip/z80cpu_um.pdf)

May the gods help any kid that tries to learn Intel CPU architecture that way
these days. :-)

~~~
mysterydip
"Well Johnny, the first thing to understand is how time travel works. You see,
our CPUs guess at what you wanted to do next and start executing the pipeline
before they know for sure, and sometimes it's wrong, and..."

------
ilaksh
Only slightly related but I did a test of my emulator front end awhile ago
running several hundred ZX Spectrums
[https://youtu.be/BjeVzEQW4C8](https://youtu.be/BjeVzEQW4C8)

~~~
nineteen999
That is pretty amazing! I managed to get four emulator instances running CP/M
inside of Unreal Engine. Could have added more but I'd have needed to build a
bigger spaceship.

[https://imgur.com/Cv8HGIz](https://imgur.com/Cv8HGIz)

Close up of disk drives and an instance running Wordstar:

[https://i.imgur.com/rIY1he8.png](https://i.imgur.com/rIY1he8.png)

~~~
ilaksh
Is your project inspired by 0x10c? The graphics look amazing. I ended up using
Irrlicht which .. does not look amazing.. but it has support for dynamically
loading arbitrary 3D models which was more important to me for now since I am
focused on Lua scripting for it.

I added a physics engine and started working on a demo with a jet/ship thing
controlled with a C64 assembler program but it had a lot of work left and I
will have to go back to it after I get more basic stuff going.

~~~
nineteen999
Yes partially inspired by 0x10c, I used to post my updates on that subreddit a
year or two back. Thank you for the compliment.

I integrated color VT100/ANSI support into the terminal emulator and had basic
TCP/IP network working with a simple telnet+zmodem client as well. So you
could log into BBS's on the Internet and download files to the CP/M systems:

[https://i.imgur.com/6V97v57.png](https://i.imgur.com/6V97v57.png)

[https://i.imgur.com/fhqef4c.png](https://i.imgur.com/fhqef4c.png)

[https://i.imgur.com/K44GT1W.png](https://i.imgur.com/K44GT1W.png)

Mine was really a prototype, since then I've been working on a 68000 based
emulator and an OS for it which I might integrate back into UE4 day. The other
issue I ran into was how to go about simulating the spaceflight part of it.
Somebody gave me a pointer about that though earlier today so I might have to
get back into it.

------
jacquesm
This thread should be summarized and reposted as an article by itself. So much
interesting stuff here.

------
FeepingCreature
How does the speed measure up to theoretically emulating 16 Z80 cores on a
Raspberry Pi?

~~~
randomidiot666
[https://floooh.github.io/2017/12/10/z80-emu-
evolution.html](https://floooh.github.io/2017/12/10/z80-emu-evolution.html)
Based on this article I think RPi will not handle cycle accurate emulation at
this level of performance, but it could easily do instruction level emulation.

------
beders
Loved the Z80 on my Amstrad CPC 464! I used an assembler typed in by hand from
a magazine.

Geekiest accomplishment: A disk loader for Spindizzy. The game was too large
for the main memory with the disk driver loaded.

Had to use the video buffer to load the game in two parts and splice them
together (overwriting the disk driver). Fun times!

------
desireco42
I would love to have a computer based on Z80. One of my happiest times were
with ZX Spectrum. If I had a laptop with reasonable screen and keyboard, and
text mode, some kind of linux Arch or something. It would be perfect.

I would not pay $1000 for experience, but some more reasonable amount,
totally.

~~~
bloat
This is kind of what you are after... But it is 6502 not Z80.

[https://www.c64-wiki.com/wiki/Commander_X16](https://www.c64-wiki.com/wiki/Commander_X16)

------
siffland
Someone needs to recompile zork to make use of this, just image the time
assisted speed run you could get ;)

Zork TAS
[https://www.youtube.com/watch?v=cIXUSyC9dpM](https://www.youtube.com/watch?v=cIXUSyC9dpM)

------
mirekrusin
"Future Plans (...) Joystick-like pointing device" \- oh man, laptop with
joystick instead of trackpad would be so weirdly cool - like a gadget from
Kung Fury, awesome.

~~~
microcolonel
TrackPoint is basically a joystick.

~~~
DonHopkins
Ted Selker, who developed the Trackpoint at IBM Almaden Research Lab, always
calls it the "Joy Button", but IBM just wouldn't go with that. But at least
they made it red (thanks to industrial designer Richard Sapper)!

TrackPoint (2011) (microsoft.com) [Buxton Collection]:

[https://news.ycombinator.com/item?id=9437780](https://news.ycombinator.com/item?id=9437780)

[https://www.microsoft.com/buxtoncollection/detail.aspx?id=60](https://www.microsoft.com/buxtoncollection/detail.aspx?id=60)

Some stuff I wrote about the Trackpoint and relative input devices in general:

[https://news.ycombinator.com/item?id=18340403](https://news.ycombinator.com/item?id=18340403)

>Input devices should allow users to configure a velocity mapping curve (which
could be negative to reverse the motion). X-Widows had a crude threshold-based
mouse acceleration scheme, but it's better to have an arbitrary curve, like
the TrackPoint uses, that can be optimized for the particular user, input
device, screen size, and scrolling or pointing task at hand.

>[https://wiki.archlinux.org/index.php/Mouse_acceleration](https://wiki.archlinux.org/index.php/Mouse_acceleration)

>One of the patented (but probably expired by now) aspects of the Trackpoint
is that it has a very highly refined pressure=>cursor speed transfer function,
that has a couple of plateaus in it that map a wide range of pressures to one
slow or fast but constant speed. The slow speed notch is good for precise
predictable fine positioning, and the fast speed notch is tuned to be just
below eye tracking speed, so you don't lose sight of the cursor. But you can
push even harder than the fast plateau to go above the eye tracking plateau
and flick the cursor really fast if you want, or push even lighter than the
slow plateau, for super fine positioning. (The TrackPoint sensor is
outrageously more sensitive than it needs to be, so it can sense very soft
touches, or even your breath blowing on it.)

Ted Selker demonstrated an early version of the "pointing stick" in 1991:

[https://www.youtube.com/watch?v=6hhnlaUxsL8](https://www.youtube.com/watch?v=6hhnlaUxsL8)

Ted always reminds me of another distinguished "Button Man": Mr. Lossoff from
Nero Wolfe's "Mother Hunt". Those Button Men can be pretty intense!

[https://youtu.be/UBOG5556_0g?t=12m5s](https://youtu.be/UBOG5556_0g?t=12m5s)

~~~
microcolonel
> _it 's better to have an arbitrary curve, like the TrackPoint uses, that can
> be optimized for the particular user_

Maybe you could even learn the curve by counting pointing error (measure the
overshoot before clicking), and maybe make it two dimensional (i.e. the
sensitivity and acceleration are different based on the direction).

I use a program called BrightML to do automatic screen brightness control.
It's innovative in that it accounts not only for time of day, location, and
ALS if you have it; but also considers which application is focused when you
set the brightness. If there is an application which you always turn down the
brightness for when it's focused, it'll turn it down in anticipation.

A similar thing could probably be done for the TrackPoint acceleration.

~~~
DonHopkins
That's a great idea, especially since the ideal profile would differ between
different apps (or different parts of the same app, like drawing area -vs-
toolbar -vs- text editor).

Ted wrote some amazing stuff about adaptive curves and other cool ideas he
tried, at the end of his whirlwind exposition to Bill Buxton:

[https://www.microsoft.com/buxtoncollection/detail.aspx?id=60](https://www.microsoft.com/buxtoncollection/detail.aspx?id=60)

>The ones that got away are more poignant. I designed adaptive algorithms we
were exploring- we were able to raise the tracking plateau by 50% for some
people, and if we had had the go ahead we could have made that stable and
increased performance tremendously. It seems some people used tendon flex to
improve pointing- we found this looked like overshoot and we had trouble
making the adaptive algorithms stable in the time box we gave it. We made a
special application that was a game people played to improve their pointing
–as their game play improved the transfer function improved too! We made a
surgical tool that used a Trackpoint to allow tremor-free use of a camera from
a laparoscope. We made a selector for the FAA to do ground traffic control
that saved a multihundred million dollar contract for IBM with the government.
I would have loved the product to change cursor movement approach for form
filling, text editing and graphical applications; again that could probably
double performance. Yes, I s till want to do it NOW. We built a gesture
language into the Trackpoint that can be accessed in the firmware; the only
aspect the driver exposes is Press to Magnify or Press to Select. We created
probably two dozen haptic feedback Trackpoint designs. They improved novice
performance and were loved by the special needs community. I did a preliminary
study that showed how novices selected faster with it; the product group saw
no need to spend the money for that. We made a science experimental test bed
to teach physics that never shipped; we made many versions of multi-Trackpoint
keyboards that never shipped. We made many other things too- a versatile
pointing device for the table called Russian tea mouse allowed for full hand,
thumb, finger, or in-the-palm use. We made pen like stalks that allowed
selection without taking hands off the keyboard. We made devices that used one
set of sensors to run two input devices. We made an electormechanical design
used by one special user. We found that brushing th e top instead of pressing
it could give amazing dynamic range, at the expense of having to cycle the
finger for long selections. The joystick for this had no deadband, it had an
exquisite sensitivity and control … we never made an inkeyboard device that
shipped with this alternative set of algorithms and scenario. I designed
better grippy top ideas that never made it; also better sensitivity solutions
that never made it too. And I hate to say it but there are many other
improvements that I made or would like to make that I could elaborate further
on but will stop here…..

------
jbverschoor
Supercool.. I like how basic the setup is for multiple cores, and how it can
show you how accessing shared memory can work. It's very concrete, and
visible.

------
jsjohnst
Wish I had US$5000 FPGAs to just have fun with like this!

~~~
rasz
you can have one by buying Chinese dev boards from aliexpres
[https://www.eevblog.com/forum/fpga/a-xilinx-
kintex-7-board-o...](https://www.eevblog.com/forum/fpga/a-xilinx-
kintex-7-board-on-aliexpress/)

------
archi42
Would be nice on the Pano G2 (100k/150k Spartan 6), which is a lot more
affordable than this board ;-)

 _Mentally adds the ZedRipper right after Leon and RiscV_

------
ChuckMcM
well that sounds like tons of fun. The ring bus sounds a bit like the
communication channel in some disk channel controllers where each disk would
get the instruction and pass it on to the next one on the chain if it wasn't
for it.

I definitely want to see if I can bring something like this up on one of the
many FPGA boards I have in my junk drawer!

~~~
jacquesm
There is a Smalltalk derived machine by one Jecel Assumpcao that uses this
architecture as well.

[https://www.researchgate.net/publication/309254446_Adaptive_...](https://www.researchgate.net/publication/309254446_Adaptive_compilation_for_an_object-
oriented_and_reconfigurable_architecture)

~~~
jecel
My design used a 2D mesh built from register insertion ring networks. But that
is a small implementation detail - the general idea is the same.

~~~
jacquesm
Hah! Thank you for the correction.

------
tr352
This is a new art form. I love it.

------
miesman
Like. Want.

------
_Codemonkeyism
A. Wow B. I don't want to put the creator in any way down, but always feel a
little bit cheated by FPGA use.

