QSIC update

2018-03-06 Thread Noel Chiappa via cctalk
Hey, all, a quick update on recent progress.

I now have a working prototype to match Dave's (although he's still doing all
the real work), and we've made a minor improvement in them (re-wired things so
we can use shorter cables to the FPGA daughter-card).

I got my indicator panel working, it looks quite nice:

  http://ana-3.lcs.mit.edu/~jnc/tech/QSIC/jpg/DasBlinken2F.jpg
  http://ana-3.lcs.mit.edu/~jnc/tech/QSIC/jpg/DasBlinken2NF.jpg

The inlay is an original from a TS08 that I happened to have lying around; Rod
S has made us a large batch of new blanks, but silk-screening of the captions
on the front of those is yet to happen. The bezel is also an original. (I have
a large stock of those, so it'll be a while before we need to work out how to
make new ones - probably resin casting, although 3D printing will be an option
too.) However, the guts are all new, and as you can see, the result looks just
like the real originals.


Dave has also worked out how to connect up the RKV12 (our name for the 22-bit
RK controller, by analogy with the RLV11/RLV12) to the internal 'block' RAM in
the FPGA, and then did the stuff to connect it to both the uSD card and the
internal RAM at the same time, with one drive connected to the RAM, so things
like swapping, etc don't 'waste' uSD writes.

Both of these are working quite reliably; the exciser/tester runs until we get
tired of the noise, and turn the machines off! :-)


His current project is to work out how to talk to the larger external RAM on
the FPGA daughter-board (the internal RAM isn't large enough for even a single
complete RK pack). I'm so looking forward to putting swapping, /tmp, pipes,
etc all on different platters, so as the system (Unix V6, natch :-) runs I can
watch the lights and see _exactly_ what's going on!

After that: turning the RK into an 'RPV12' (which should be pretty easy, the
RK11 and RP11 are very similar), and adding a mux so that the two controllers
can share the storage devices, etc. Those should both be done soon after the
external RAM (and maybe before, if Dave needs a break from that :-).

We also intend to do an 'extended RP11' (name not yet chosen, although I like
'RPV-12D - DEC's last was the RP11-C), which extends all the disk address
fields in the register to use the unused bits, giving us pretty massive
storage capability. With 16 bits of cylinder (up 7), 8 bits of surface (up 3),
4 bits of sector, that gives 28 bits of block number per drive; and with 8
drives per extended RP11, that's a total of 31 bits of block number per
controller. Convert the blocks to bytes, that's 9 bits more, so 2^40 bytes per
extended RP11, or 1TB!

Very shortly now we'll need to turn to starting on the design of the
'production' hardware.

Noel


Re: QSIC update - v6 Unix boots and runs

2018-01-29 Thread Paul Koning via cctalk


> On Jan 29, 2018, at 6:03 PM, Noel Chiappa via cctalk  
> wrote:
> 
> ...
>> (actually, this should work with Q18 QBUS systems as well)
> 
> Goodness, never thought of that. Hmmm.. it's probably enough hassle to mod
> the software (who ever heard of a 'QBUS map' on a QBUS -11 - but you'd need
> it to give DMA devices access to high memory) ...

No, there is no such thing as a QBUS map.  Q18 systems are like 18 bit Unibus 
systems such as the 11/45: they have a max of 124 kW of memory so 18 bits 
address all available memory.

paul



Re: QSIC update - v6 Unix boots and runs

2018-01-29 Thread Noel Chiappa via cctalk
> From: David Bridgham

> Our plan is to produce a Unibus board as well, we just chose the QBUS
> first.

For no particularly strong reasons; I had working QBUS machines, and
prototyping cards, etc, etc.


> (actually, this should work with Q18 QBUS systems as well)

Goodness, never thought of that. Hmmm.. it's probably enough hassle to mod
the software (who ever heard of a 'QBUS map' on a QBUS -11 - but you'd need
it to give DMA devices access to high memory) that it's probably just easier
to go out and get Q22 hardware. Does anyone even have a Q18 /23? I think that
was only the A model, right? I've never seen one.

> we plan to also implement the Able ENABLE+ functionality

In other words, a 'USIC' with Able ENABLE functionality added in.

> This will, of course, require you to modify your OS to support this
> non-standard memory.

We should be programming compatible with the ENABLE, so for OS's where
ENABLE support already exists, it should be a compile-and-go.


> Noel has already done so for v6 Unix.

Back in the day, with a real hardware ENABLE. PWB1, actually (pretty much
V6).

It wasn't too much work; one just changes the address definitions for the
User and Kernel PARs from the DEC addresses to the Able ones, and recompiles
all the kernel modules that touch them. One then has to set up the DEC User
and Kernel PARs (which I did in the assembler startup, which was the only
source module that took any serious changes).

(If your OS uses Supervisor mode, well, err... :-)

There are some other minor tweaks needed, e.g. this comment:

  / these routines are used to access /dev/kmem and look at possible
  / NXM locations in the system. The reason it uses this mechanism
  / is that some locations to be examined are on the bus before the
  / ABLE map, and thus cannot be examined by playing with the ABLE
  / map regs, e.g. using the standard u access routines

  .globl_fkbyte, _skbyte
  .globl_fkword, _skword


Noel



Re: QSIC update - v6 Unix boots and runs

2018-01-29 Thread David Bridgham via cctalk

> That sounds pretty awesome.  Good job there!

Thanks.  Feeling good today after a bit of frustration with development
not going faster.

> Do you know how hard it would be to take this design and make a UNIBUS
> version?  I have an 11/34 languishing under the bench in my hardware
> lab and one of the principal reasons for the languishing is that I
> don't have any drives to go with it.

Our plan is to produce a Unibus board as well, we just chose the QBUS
first.  A Unibus version of the hardware ought to be a fairly
straightforward adaptation of the QBUS board while the QBUS modules in
Verilog will just have to be replaced with Unibus versions.  The busses
work pretty similarly so we're expecting that to also be relatively
straightforward.  Yeah, I've told myself that before.  :-)

For the Unibus (actually, this should work with Q18 QBUS systems as
well), we plan to also implement the Able ENABLE+ functionality which
would give 11/70 size memory.  We'll have some SDRAM onboard that we'll
use for RAM disks but we'll carve out 4MB of that for machine memory and
include mapping tables to access it.  This will, of course, require you
to modify your OS to support this non-standard memory.  Noel has already
done so for v6 Unix.



Re: QSIC update - v6 Unix boots and runs

2018-01-29 Thread Guy Sotomayor Jr via cctalk


> On Jan 29, 2018, at 1:57 PM, Phil Blundell via cctalk  
> wrote:
> 
> On Mon, 2018-01-29 at 16:06 -0500, David Bridgham via cctalk wrote:
>> For those of you who are following along with our QSIC project, today
>> we
>> booted v6 Unix successfully for the first time.  We'd first tried
>> this a
>> week or two back but discovered that Unix does use partial block
>> reads
>> and writes after all and I hadn't implemented those yet.  We're
>> running
>> this on an 11/23 using the QSIC with an SD card emulating a couple
>> RK05s.
> 
> That sounds pretty awesome.  Good job there!
> 
> Do you know how hard it would be to take this design and make a UNIBUS
> version?  I have an 11/34 languishing under the bench in my hardware
> lab and one of the principal reasons for the languishing is that I
> don't have any drives to go with it.

It’s the UMF11 (or some derivative thereof) that I’ve been working on/off for
several (many?) years.  It’s been languishing at the moment because work
has demanded most of my time.

I had gotten to the point where most of it was working in simulation and I have
almost all of the uCode written for it and debugged.  The uCode is written in 
Forth.

TTFN - Guy



Re: QSIC update - v6 Unix boots and runs

2018-01-29 Thread Phil Blundell via cctalk
On Mon, 2018-01-29 at 16:06 -0500, David Bridgham via cctalk wrote:
> For those of you who are following along with our QSIC project, today
> we
> booted v6 Unix successfully for the first time.  We'd first tried
> this a
> week or two back but discovered that Unix does use partial block
> reads
> and writes after all and I hadn't implemented those yet.  We're
> running
> this on an 11/23 using the QSIC with an SD card emulating a couple
> RK05s.

That sounds pretty awesome.  Good job there!

Do you know how hard it would be to take this design and make a UNIBUS
version?  I have an 11/34 languishing under the bench in my hardware
lab and one of the principal reasons for the languishing is that I
don't have any drives to go with it.

p.



Re: QSIC update - v6 Unix boots and runs

2018-01-29 Thread David Bridgham via cctalk

> FWIW, so does RT11, and in the case of writes, it requires the rest of the 
> block to be zero-filled.  Not everything depends on this, but some parts do; 
> I think Fortran is one.

I did implement that too.  Unix doesn't need it but I had to fill the
block with something and it wasn't that hard to zero out the value.  I
figured something would come along that required it.  There is still a
whole lot of the RK11 functionality I need to implement, much having to
do with handling and properly reporting error conditions.  It's still
pretty cool to boot up Unix and type commands at it.  Doubly cool to
watch the indicator panel blink away while I run programs.

By the way, that indicator panel has been ridiculously valuable for
debugging this thing.  I did it initially just because I thought it
would be fun and I needed to take a break from some frustrating bug but
it's turned out to be far easier to use than the logic analyzer (which
I've never hooked up).  I just generate a custom FPGA load that displays
some register I think will tell me what's going on or even sometimes
create additional counters with specific triggers that can monitor the
internals of my implementation.



Re: QSIC update - v6 Unix boots and runs

2018-01-29 Thread Paul Koning via cctalk


> On Jan 29, 2018, at 4:06 PM, David Bridgham via cctalk 
>  wrote:
> 
> For those of you who are following along with our QSIC project, today we
> booted v6 Unix successfully for the first time.  We'd first tried this a
> week or two back but discovered that Unix does use partial block reads
> and writes after all and I hadn't implemented those yet. 

FWIW, so does RT11, and in the case of writes, it requires the rest of the 
block to be zero-filled.  Not everything depends on this, but some parts do; I 
think Fortran is one.

I remember this because I had to handle it in the driver for the RC11, since it 
has a 64 byte blocksize.

paul




Re: QSIC update - v6 Unix boots and runs

2018-01-29 Thread Noel Chiappa via cctalk
> From: David Bridgham

> today we booted v6 Unix successfully for the first time.

As in, the OS image was loaded from the SD card, then started up using only
the SD card for 'disk'. So this is a pretty major milestone. It's been a long
road (I just looked, and we started on this in the summer of 2015), but we're
finally getting there!

The Unix file system, including the OS and all the various bits and pieces
needed, like /bin/sh, etc, was prepared on a simulator (stock V6 won't run on
a /23, which has no switch register), and then loaded into the SD card using
'dd' running on a Linux box.

Our emulated RK11 doesn't do a perfect job of emulating an RK11 yet (e.g. for
some reason we haven't yet looked into, the BDV11 ROM code won't load the
bootstrap off the 'disk'; Dave had to manually load in an RK bootstrap using
ODT), but enough is now working to let Unix load and run.

> Unix does use partial block reads and writes after all

For swapping, not for file-system I/O (which is all block-based).

> We're getting close to the time when we need to think about making our
> own circuit board rather than using the wire-wrap prototype we've been
> having fun with so far.

At which point we'll be able to supply them to anyone who wants one...

It will be a while yet, but I think we are 'over the hump' on the project,
with the OS booting and running properly.

Noel


QSIC update - v6 Unix boots and runs

2018-01-29 Thread David Bridgham via cctalk
For those of you who are following along with our QSIC project, today we
booted v6 Unix successfully for the first time.  We'd first tried this a
week or two back but discovered that Unix does use partial block reads
and writes after all and I hadn't implemented those yet.  We're running
this on an 11/23 using the QSIC with an SD card emulating a couple RK05s.

Moving on to a small RAM disk next so we don't have to swap off the
flash memory.  After that, either a larger RAM disk using the SDRAM or
an RP11 to get larger disks than RK05s.

We're getting close to the time when we need to think about making our
own circuit board rather than using the wire-wrap prototype we've been
having fun with so far.




Re: QSIC update and request, 11/04 microcode

2018-01-03 Thread emanuel stiebler via cctalk

On 2018-01-01 13:42, David Bridgham via cctalk wrote:


I'd rather not get diverted by yet another substantial development
project so I'm looking for a decent little FPGA implementation of a
PDP-11 that I could just pick up use for this purpose.  Something that's
already debugged.  I'm thinking closer to an 11/04 than an 11/70 and
likely just running out of block RAM on the FPGA.


is the 11/04 microcode somewhere as a binary? So far I found only the 
print in the MPS ...


Re: QSIC update and request

2018-01-02 Thread David Bridgham via cctalk
On 1/2/18 15:38, Toby Thain via cctalk wrote:

> Err.. could be my mistake... I meant wherever you posted your last
> technical note about QBus quirks. (I didn't look up the reference)

Oh, that paper I wrote about how bus arbitration works on the Unibus and
QBUS.  I'd thought of it as just a way of passing on information I'd
learned to the community about something I thought was interesting but
you're right, it also serves to document some of the internals of the
QSIC since that's where I took it from.



Re: QSIC update and request

2018-01-02 Thread Toby Thain via cctalk
On 2018-01-02 3:00 PM, David Bridgham via cctalk wrote:
> On 01/02/2018 02:05 PM, Toby Thain via cctalk wrote:
> 
>>> Oh, I hadn't thought of Toby possibly meaning that.  Yeah, I'm unlikely
>>> to write up much documentation on the internals of the QSIC for people
>>> who want to add other devices.  However, not only will the source be
>> Yes, that's what I meant. In fact I thought that was the point of the
>> device :)
> 
> Well, I guess I thought the point was to produce a working replacement
> for the disk drives that are nearly unobtainable but if it turns out
> that lots of people are seriously interested in developing for the QSIC
> itself, then I'll have to revisit that supposition.  In that case, I'd
> probably write up more internals documentation than I would otherwise.
> 
>> Hope so. And there's always the blog?
> 
> Blog?  Is there a blog about the QSIC that I don't know about?  I'm not
> much of a blogger but if you get me started talking about things that
> interest me I tend to rattle on to excess.
> 
> 

Err.. could be my mistake... I meant wherever you posted your last
technical note about QBus quirks. (I didn't look up the reference)

--Toby


Re: QSIC update and request

2018-01-02 Thread David Bridgham via cctalk
On 01/02/2018 02:05 PM, Toby Thain via cctalk wrote:

>> Oh, I hadn't thought of Toby possibly meaning that.  Yeah, I'm unlikely
>> to write up much documentation on the internals of the QSIC for people
>> who want to add other devices.  However, not only will the source be
> Yes, that's what I meant. In fact I thought that was the point of the
> device :)

Well, I guess I thought the point was to produce a working replacement
for the disk drives that are nearly unobtainable but if it turns out
that lots of people are seriously interested in developing for the QSIC
itself, then I'll have to revisit that supposition.  In that case, I'd
probably write up more internals documentation than I would otherwise.

> Hope so. And there's always the blog?

Blog?  Is there a blog about the QSIC that I don't know about?  I'm not
much of a blogger but if you get me started talking about things that
interest me I tend to rattle on to excess.



Re: QSIC update and request

2018-01-02 Thread Toby Thain via cctalk
On 2018-01-02 1:17 PM, David Bridgham via cctalk wrote:
> On 01/02/2018 01:13 PM, Noel Chiappa via cctalk wrote:
> 
> 
>> If you mean the 'software' for additional controllers - that would be a _lot_
>> harder (plus to which it's an entirely different tool-chain, yadda-yadda).
>> 'Use the source, Luke!', I'm probably afraid...
> 
> Oh, I hadn't thought of Toby possibly meaning that.  Yeah, I'm unlikely
> to write up much documentation on the internals of the QSIC for people
> who want to add other devices.  However, not only will the source be

Yes, that's what I meant. In fact I thought that was the point of the
device :)

> available, I'll be around (hopefully) and will be quite willing to
> answer questions.  Shoot, if anyone shows interest I'll probably talk
> their ear off about it.
> 
> 

Hope so. And there's always the blog?

--Toby


Re: QSIC update and request

2018-01-02 Thread David Bridgham via cctalk
On 01/02/2018 01:13 PM, Noel Chiappa via cctalk wrote:


> If you mean the 'software' for additional controllers - that would be a _lot_
> harder (plus to which it's an entirely different tool-chain, yadda-yadda).
> 'Use the source, Luke!', I'm probably afraid...

Oh, I hadn't thought of Toby possibly meaning that.  Yeah, I'm unlikely
to write up much documentation on the internals of the QSIC for people
who want to add other devices.  However, not only will the source be
available, I'll be around (hopefully) and will be quite willing to
answer questions.  Shoot, if anyone shows interest I'll probably talk
their ear off about it.



Re: QSIC update and request

2018-01-02 Thread Noel Chiappa via cctalk
> From: Toby Thain

> If the documentation is good enough, people in the community will be
> able to provide the software.

You mean, host drivers?

Yeah, that documentation will be pretty trivial: 'there's this extra
register, just like the one in the RLV12; the top 6 bits of the DMA memory
address go in there - the bottom two bits are mirrored into the two extended
memory bits in the CSR'. For the 'extended' RP11, not much more than that.

If you mean the 'software' for additional controllers - that would be a _lot_
harder (plus to which it's an entirely different tool-chain, yadda-yadda).
'Use the source, Luke!', I'm probably afraid...

Noel


Re: QSIC update and request

2018-01-02 Thread David Bridgham via cctalk
On 01/02/2018 12:45 PM, Toby Thain via cctalk wrote:

> If the documentation is good enough, people in the community will be
> able to provide the software.

The quick answer is that it's pretty simple.  We take the
cylinder/head/sector addresses and consider them a Linear Block
Address.  Then we look around the device registers and pick up a few
more bits that were unused in the RP11 and we end up with a 28-bit
Linear Block Address which works out to a ridiculously huge disk for any
PDP-11 ever conceived.  But yeah, we'll document it.

There will also be an entirely new programming interface into the QSIC
itself, mainly having to do with configuration (like whether or not the
RP11 implementation is stock or extended and how portions of the SD
cards are mapped to various disk packs mounted on the emulated disk
drives).  I intend to write that up too so that people are able to write
programs for their favorite OS that drive the device however they wish. 
I may joke about pointing people to the source to figure out how it
works (it was hard to write, it should be hard to read) but I actually
quite like well-done documentation and will endeavor to produce some.



Re: QSIC update and request

2018-01-02 Thread Toby Thain via cctalk
On 2018-01-02 9:01 AM, Noel Chiappa via cctalk wrote:
> > From: Mark J. Blair
> 
> > I wonder if it might also be useful in any of the QBUS MicroVAXen?
> 
> Hardwarewise, it should be fine. Softwarewise... well...
> ...
> Anyway, you can see where this is going. For people who can tweak their
> drivers, no biggie. The changes aren't major - a line or two. For people who
> want to run stock software...

If the documentation is good enough, people in the community will be
able to provide the software.

> 
> ...
> Getting around this is all, of course, a SMOP (Small Matter of Programming),
> since a new FPGA load, with support for more emulations, can be installed on
> an existing QSIC at any time.

It seems that you aimed at producing a "platform" all along, so that's
just a natural effect.

--T

> 
> Now, whether Dave would be interested in supporting later devices, or whether
> someone else could be convinced to emulate something more modern ... who 
> knows?
> 
>   Noel
> 



Re: QSIC update and request

2018-01-02 Thread Noel Chiappa via cctalk
> From: Mark J. Blair

> I wonder if it might also be useful in any of the QBUS MicroVAXen?

Hardwarewise, it should be fine. Softwarewise... well...


The issue is that we're currently only planning to emulate the RK11 and RP11,
because we're not up for the hassle involved in emulating more recent
controllers. (That's not an issue for the systems we want to run.)

We looked at the RP04, and _full_ emulation even of that one is a significant
amount of work. (I stress the 'full' because a partial, simple emulation
might not be too bad, but since we have no idea what various OS's will expect
to be there, it's not clear how much use such a partial emulation would be.)

However, that presents a problem. There are no 22-bit versions of either (in
fact, there's no QBUS RP11 at all; and the QBUS RK11 is restricted to Q16,
for reasons that surpass me). 22-bit operation is needed to make them really
useable as mass storage under Unix, for swapping (because all file system
access is buffered through low memory, purely file system use would be OK
without Q22 support) - at least on -11's with more than 256KB of memory.
(Probably DEC OS's too, but I know nothing of them.)

So, in addition to the dead-stock emulations of the two, we will also support
slightly 'adjusted' versions of the controllers, to have an 'address
extension' register (in exactly the same way the RLV12 has an extra register
over the RLV11).

(And we're also going to have an adjusted version of the RP11, which extends
the size of the disk, using unused bits/values in the disk address registers,
to allow up to 1TB on an 'RP11-D', as we're calling it. Hey, if you're going
to change the controller _at all_... But I digress.)

Anyway, you can see where this is going. For people who can tweak their
drivers, no biggie. The changes aren't major - a line or two. For people who
want to run stock software...


I don't know enough about how the QBUS VAX systems use their disks. Will uVAX
OS's run with only an RKV11-D for mass storage? Somehow I doubt it..

I assume on the later ones (the ones with the private memory bus so they can
have more than 4MB of memory) there's some sort of QBUS map, to map from the
QBUS' 22-bit address space, to the full memory. But does the hardware and
software expect to use the entire 22-bit address space, or are they prepared
to limit it (e.g. for working with an RKV11-D), or what?

I suppose we could add the RLV12 to the list of things we emulate; that's not
_that_ complicated a controller. The problem is that RL's aren't that big
(10MB), and that gets to be an issue with later OS's. And even then VAX OS's
might not run off an RLV12 - I just don't know.


Getting around this is all, of course, a SMOP (Small Matter of Programming),
since a new FPGA load, with support for more emulations, can be installed on
an existing QSIC at any time.

Now, whether Dave would be interested in supporting later devices, or whether
someone else could be convinced to emulate something more modern ... who knows?

Noel


Re: QSIC update and request

2018-01-01 Thread Mark J. Blair via cctalk
This looks pretty interesting! I think I've managed to miss previous discussion 
of it. I wonder if it might also be useful in any of the QBUS MicroVAXen?

-- 
Mark J. Blair, NF6X 
http://www.nf6x.net/



Re: QSIC update and request

2018-01-01 Thread Noel Chiappa via cctalk
> From: David Bridgham

> I could ask for a lot more really but that's pretty good.

IMO we're 'over the hump' on the prototype phase of the project. The complete
QBUS interface (including DMA and interrupts) are done, and very thoroughly
tested, and now we have the SD interface up and running too. Once we get all
this running reliably, IMO the remaining work (configuration, simulating the
RP11, etc) will be relatively simple and straightforward.

Then we get to the next major lump - turning out the production unit.

> Here's a picture to my test setup:

Looking at that brings up another piece of progress to report; that paper
version of the indicator panel inlay is just about obsolete; we have produced
blank inlays (the correct shape to fit into the bezel, but with just the back
black layer with all the holes), and the next move is to produce ones with
the white captions silk-screened on the front, just like the originals:

  http://ana-3.lcs.mit.edu/~jnc/tech/DECIndicatorPanels.html

So 'very soon' we should have a complete working indicator panel!


A lot slower, overall, than we had hoped, but we're getting there!

Noel


QSIC update and request

2018-01-01 Thread David Bridgham via cctalk
Even though I've been quiet, I have been making slow progress on the
QSIC in the background.  For those who've forgotten what the QSIC
project is about, here's the description:

http://pdp10.froghouse.org/qsic/html/overview.html

We've been working away on getting communications with the SD card
working and that's basically there now.  It initializes and reads and
writes blocks.  I've also connected it through an async FIFO to the
minimal RK11 controller I had working before and that's mostly working. 
That is, it can read and write blocks under control from the QBUS PDP-11
as if it were a real RK11/RK05.  What more could you ask for?

Well, I could ask for a lot more really but that's pretty good.  There's
a lot of RK11 functionality that I haven't implemented yet and all sorts
of configuration options we need to get in there.  Also, there's a bug
where it sometimes scrambles data so it's not quite ready to boot and
run a real OS yet but it's getting awfully close.

Here's a picture to my test setup:

http://pdp10.froghouse.org/qsic/qsic-setup.jpg

And a picture of a test of some spray-on glass frosting used as a light
diffuser on the indicator panel.  In this picture you can also see the
new LEDs I found that are a much better color match to the old
incandescent bulbs than the LEDs I picked for my first attempt.

http://pdp10.froghouse.org/qsic/frosting.jpg


Now for the request.  I've decided that I'd like to put a soft-processor
in the FPGA to handle a bunch of things (configuration duties and the
USB protocol being two of the big ones).  My preference would be for
this soft-processor to be a PDP-11.  Surely there's hack value in using
a PDP-11 as the I/O processor for a PDP-11 but there are practical
advantages to this as well.  For one, we're already familiar with it and
have a suite of development tools.  Also, I can re-arrange the I/O
devices I intend to give to this soft-11 and put them directly on the
QBUS instead and do initial development there.

I'd rather not get diverted by yet another substantial development
project so I'm looking for a decent little FPGA implementation of a
PDP-11 that I could just pick up use for this purpose.  Something that's
already debugged.  I'm thinking closer to an 11/04 than an 11/70 and
likely just running out of block RAM on the FPGA.

Thanks for any pointers to such an implementation and thanks to everyone
who's given support and assistance as Noel and I have poked along on
this project.

Dave




QSIC Update

2017-06-22 Thread David Bridgham via cctalk
It's been a while since I've sent an update on the QSIC project and
since work is currently on-hold while I'm in Alaska for my summer job,
this is a good time.  With the QBUS protocol pieces all working from the
previous winter, last winter's work was to get some sort of storage
medium working.  SD cards seemed the right first choice so that was the
task.

After a few months of staring at a state machine implementation and
having nothing click for me, I set that aside and considered the idea of
building a micro-coded machine.  Noel and I kicked it around, came up
with a design, he wrote up a micro-assembler and I did the Verilog. 
This was my first micro-machine but it worked out pretty well, I think.

Anyway, we got the design running the SD card through its initialization
sequence.  Pretty pleased with that.  The next step is transferring data
blocks but I ran out of time.

Also this winter I finally got myself a Github account and moved the
code up there.  Look for dabridgham/QSIC if you're interested.

The webpage describing the QSIC project is
http://pdp10.froghouse.org/qsic/html/overview.html.

In related news, as we were working through the QBUS implementation Noel
and I had a bunch of discussions about bus arbitration.  I think we
ended up with a decent understanding and so I decided to write it up for
anyone else playing around with QBUS or Unibus designs.  Yeah, I know,
there aren't likely to be too many of us.

Anyway, the paper is here:
http://www.froghouse.org/~dab/papers/bus-arbitration/bus-arbitration.html

There's a pdf version too but the formatting left off the overbar over Q
in one section so it might be a bit confusing.

Dave




Re: QSIC update

2016-03-10 Thread Noel Chiappa
> From: Henk Gooijen

>> He's now starting in on interrupt cycles; once those work, he
>> effectively has emulation of a minimal small RK

> sounds very good - nice progress!

Interrupts are now working, and as of yesterday (when I finally managed to
get all the bugs out of my diagnostic - we can't use the DEC ones since it
doesn't yet emulate a full RK drive) it will sit and read and write blocks as
long as we let it, interrupting after each transfer.

I'm about to upgrade the diagnostic to test more features, such as
multi-block transfers, etc. Dave is about to start work on SD card support.

> When you get to it, that will be a fast swap drive ;-)

Indeed! It seems to transfer a complete sector in about 600 usec, when running
a 'disk' in RAM - it's only even that 'slow' because for some reason, which
Dave is investigating, the CPU (an 11/73) seems to take about 1usec to do a
DMA grant after the previous cycle, even when it and the QBUS are idle (the
CPU is in a WAIT instruction while the transfer is happening, with my
diagnostic). Each individual word seems to take about 900 nsec; not great, but
not bad. Dave's going to look at that in some detail, too.

And of course there are zero seek and rotational delays, so it will be pretty
zoomy (although of course the SD 'disk' will also have that characteristic,
but we don't yet know if the SD will support the full QBUS bandwidth, the way
the RAM certainly will).

But even if it is that fast, it's still probably worth having the RAM disk,
because it will avoid putting write cycles on the SD card memory. (I myself
plan to put /tmp, and pipes, on a RAM disk, for just that reason. In V6 Unix,
at least, a system call to move pipes off the root disk is one line of
code... :-)

Noel


Re: QSIC update

2016-03-05 Thread Henk Gooijen
-Oorspronkelijk bericht- 
From: Noel Chiappa

Sent: Saturday, March 05, 2016 2:01 PM
To: cctalk@classiccmp.org
Cc: j...@mercury.lcs.mit.edu
Subject: Re: QSIC update

   > So here's a quick update on where Dave Bridgham and I are with the
   > QSIC ... We have the first of two wire-wrap prototype QBUS 
motherboards
   > more or less (see below) done .. the hardware is 'mostly' working; 
most

   > of the work from here on out will be FPGA, etc, programming. There
   > _are_ a few additional QBUS lines used for bus master (DMA) and
   > interrupts which we haven't used yet, and one of the first things done
   > now is to get those two kind of bus cycles working
   > ...
   > With that in hand, we can do the first controller (RK11), using memory
   > in the FPGA to simulate a small disk.

Well, Dave has made a big step down that road; he has DMA working (both the
bus arbitration cycle for DMA, as well as master-mode transfers to and from
QBUS slave memory).

He's now starting in on interrupt cycles; once those work, he effectively 
has

emulation of a minimal small RK (he already has all the registers, since he
needs them to control the DMA to and from the RAM disk). At that point I
should be able to test it by making it the swap drive on a Unix V6 load.

Noel

-
sounds very good - nice progress!
When you get to it, that will be a fast swap drive ;-)

- Henk 



Re: QSIC update

2016-03-05 Thread Noel Chiappa

> So here's a quick update on where Dave Bridgham and I are with the
> QSIC ... We have the first of two wire-wrap prototype QBUS motherboards
> more or less (see below) done .. the hardware is 'mostly' working; most
> of the work from here on out will be FPGA, etc, programming. There
> _are_ a few additional QBUS lines used for bus master (DMA) and
> interrupts which we haven't used yet, and one of the first things done
> now is to get those two kind of bus cycles working
> ...
> With that in hand, we can do the first controller (RK11), using memory
> in the FPGA to simulate a small disk. 

Well, Dave has made a big step down that road; he has DMA working (both the
bus arbitration cycle for DMA, as well as master-mode transfers to and from
QBUS slave memory).

He's now starting in on interrupt cycles; once those work, he effectively has
emulation of a minimal small RK (he already has all the registers, since he
needs them to control the DMA to and from the RAM disk). At that point I
should be able to test it by making it the swap drive on a Unix V6 load.

Noel


Re: QSIC update

2016-02-15 Thread Noel Chiappa
> From: Al Kossow

> Have you guys thought about a panel that would connect to the KM11
> connector slots of real rk11/tc11 controllers?

Umm, Guy sells KM11 clones? (I just bought a pair, they look really nice.) Or
did you mean something else?

Speaking of things Guy has, Dave is talking about adding a switch that would
turn a QSIC+indicator panel into a QAV-11... :-)

Noel


Re: QSIC update

2016-02-15 Thread Al Kossow



On 2/15/16 5:05 AM, Noel Chiappa wrote:

Anyway, we think getting slave cycles working was a major milestone (for a
couple of software guys :-)


yay!

Have you guys thought about a panel that would connect to the KM11
connector slots of real rk11/tc11 controllers? At one point, I thought about
a cable that would let you run virtual KM11's on a laptop screen.






QSIC update

2016-02-15 Thread Noel Chiappa
So here's a quick update on where Dave Bridgham and I are with the QSIC, since
I think we have reached a significant milestone.


We have the first of two wire-wrap prototype QBUS motherboards more or less
(see below) done, and working to do slave cycles on the QBUS. (I.e. we
implemented a simple register, and can write it, and read the contents back.)
A test program to write all 2^16 possible values, and read them back and check
them, ran several thousand complete passes with no errors.

To get there, we (Dave, really - he bore the brunt of the work on this
problem, and finally conquered it) had to tackle and fix some major noise
issues: the way the prototype is done (a wirewrap QBUS mother-board with bus
transceivers, level converters, etc, connected to an FPGA prototyping card
with flat cables), we think we had cross-talk problems in the cables (since
the connector pinout on the FPGA card, which we can't change, didn't alternate
ground and signal lines).

Anyway, it's working now; that means the hardware is 'mostly' working; most of
the work from here on out will be FPGA, etc, programming. There _are_ a few
additional QBUS lines used for bus master (DMA) and interrupts which we
haven't used yet, and one of the first things done now is to get those two
kind of bus cycles working; a) we have to get them done anyway, and b) that
will verify that the QBUS interface hardware is full working.


With that in hand, we can do the first controller (RK11), using memory in the
FPGA to simulate a small disk. We'll then try and get to the larger RAM on the
FPGA, to do full-size RAM disks. Next up after that is probably to hook up
some SD cards (we already have produced the small PCB daughter-cards, which
will mount on sockets on the wire-wrap mother-board, to hold the SD cards - we
still need to add those sockets and wire them up, hence the comment that the
wire-wrap mother-boards are "almost done"), at which point we'll have a
fully-functional prototype.

Dave has also produced prototype PCB's for the indicator panel, and one has
been stuffed, and Dave's about to try and hook that up, and get it running;
that will require yet a bit more work on the mother-board (install 3 sockets
to hold the driver chips for the signal lines in the interface to the
indicator panel). Blinkenlitz are a priority because, i) just because ;-), and
ii) being able to display data from inside the FPGA will be a big debugging
help.


Anyway, we think getting slave cycles working was a major milestone (for a
couple of software guys :-), And we think (_hope_ :-) that progress will now
be pretty rapid, so hopefully more soon.

Noel