>
>Subject: Re: Anyone playing with the 8x300
> From: shoppa_classiccmp at trailing-edge.com
> Date: Fri, 13 May 2005 21:36:10 -0400
> To: cctalk at classiccmp.org
>
>> also must have done a bitslice designs at one time or another
>
>I always thought of the 8x300 as a near-bitslice processor... bipolar,
>data port, etc. While it doesn't chain together to make bigger
>wordsizes like AMD2901/Intel 3002, it really was a programmable
>sequencer very much like those bitslice parts.
>
>Tim.
think of it as two 2901s and a 2911 with fixed sequencing
and instruction decode rom. Fast, but strange to program.
Allison
>
>Subject: Re: Anyone playing with the 8x300
> From: "Dwight K. Elvey" <dwight.elvey at amd.com>
> Date: Fri, 13 May 2005 14:57:09 -0700 (PDT)
> To: cctalk at classiccmp.org
>
>>
>>Ah the classic first of the fast microcontrollers.
>>I'd have to dig but I vaguely remember the 8x300
>>as a disk controller apnote. Nasty beast to program.
>>
>>Allison
>>
>
>Hi
> Don't know why you'd say this, it only has 8 instructions!
>I've got the spec posted to Al's site.
> This controller application is a little interesting in that
>who ever designed this board, also must have done a bitslice
>designs at one time or another. To save a machine cycle, all
>I/O addresses are selected by a ROM tied to the instruction
>addressing. Normally it would take two cycles, one to write
>the I/O address and one to transfer the data. With the
>ROM, the address is understood by the program's execution
>address location.
>Dwight
It's more of a sequencer or state machine with a crude ALU.
As to those 8 instructions, looks at what the fields are
for each one. I've done horizontal microcode and that is
similar. Due to it's very harvard design it's not one you
will do constans in rom much. Also the IO devices are
really IO specific as in the address of each is coded
into the part.
One use for it was an 8bit wide DSP. I have a real one here
of the later 8x305 I2L that was a bit faster.
Allison
> Since I dont' really know much about HP equipment, is
> this a worthwhile system to play with?
It can't be that good as I couldn't even give mine away.
Lee.
.
___________________________________________________________
Yahoo! Messenger - want a free and easy way to contact your friends online? http://uk.messenger.yahoo.com
> >> A lot of reaction against excessive GOTOs was from the horrible
> >> things early FORTRANs made you do, and macho programmers who
> >> stopped learning early. I have to wonder what the cultures of
> >> optimization that sprung up around drum machines did too.
>
> On Fri, 13 May 2005, woodelf wrote:
>
> > Well it has come back to haunt us since random access memory
> > has got replaced by cashe and deep pipelined cpu's. Try writing
> > a loop and see what happens ... No wait a loop has the dreaded GOTO.
One of my first programming projects in college was write a program to
printout 26 hands of Bridge ... I was a Bridge major :). Not knowing
enough, I exited one of the Fortran IV loops with a goto. Big mistake!
Finally one of the professors found the problem on a second or third
look after I had shown the code to almost everyone in the department
with no success.
I still like the goto ... just not to exit loops :).
In the next two weeks, we must dispose of the Honeywell DPS-6 mainframe -
somehow. So far two possiblities have fallen through.
Therefore, be it Known to All by these Presentments:
There is a fee DPS-6 in Carson City, Nevada, that is going to have to be
reduced to scrap, unless someone can step up to the plate, as they say, and
speak those rare words: "I'll take that..."
System will fit in a std-sized pick-up truck, forklift and loading assistance
is provided.
Sombody adopt this machine before we are forced to KILL it.
Cheers
(Hopefully Not The Grim Computer Reaper) John
My guess is a Honeywell tape channel control. The stuff on the left is
for a tape drive, and it sort of looks like the panels in the Computer
Museum's Multics machine.
I found this today <http://www.classiccmp.org/hp/panels/all.jpg>.
Anybody know what it's for? It's obviously for some kind of computer or
computer based systems since it talks about ROM Address and the like. But
it has some terms that I don't recognize, TU Status, Romar/Bromar, etc.
This thing is almost three foot wide so I had to take three pictures in
order to get closeups of the legends. See
<http://www.classiccmp.org/hp/panels/> for more pictures. BTW this is all
of the system that I found and this is exactly the way that I found the
panel except for wiping some dust and dirt off of it.
The HP 700i isn't part of it, it's picture just happened to be on the
same disk.
Joe
>> Officially this type of code (that which modifies an Lvalue multiple times
>> within the same sequence interval) invokes "undefined behaviour", which
>> means that the compiler can do "anything" - although highly unlikely, the
>> compiler can happily return 6 6 6 in this case, and leave the value of i
>> at 31415 (or anything else) ... and be performing in a perfectly legal sense
>> - undefined operation is exactly that. The function performed is not
>> defined by the standard.
>
>I think the functions to be performed are defined, and only their order is
>undefined.
Thats is the expected result, however since we are performing multiple modifications
to an Lvalue within one sequence interval, the behaviour is "undefined" according to
the C standard - this means that "anything goes", and there is no guarantee that it
will be the expected result, or even one of several expected results (although this
will be almost always the case).
Although highly unlikely that the compiler writer would go to lengths to detect
this happening and produce non-intuitive results, other factors in the compilation
process might cause results you didn't expect - for example, a compiler may defer the
increments until the next sequence point, and just do a single addition of 3 - a simple optimization, allowed by the definition of the language, but it would cause the three
intermediate results to be 0 0 0 - not what you expected (as described above), yet
perfectly reasonable to a compiler writer.
This is perfectly legal in this case because the effect of the '++' is a side
effect, and does not have to be applied until the next sequence point.
>> On other words, it's not valid 'C' (although it is syntactically correct,
>> and most compilers will accept it without a diagnostic).
>
>Which would make this an overstatement. I think it is perfectly valid C,
>and the compiler has (after much deliberation) been allowed to generate the
>most efficient code.
It is not a valid conforming C program (or fragment thereof). Any C program
which relies on undefined behaviour is non-conforming. This does not mean that
it doesn't work, or even that it does not happen to do what you expect - it
does mean that it is not guaranteed by the C standard to do what you expect
(or any particular thing).
Sometimes a compiler may choose one particular approach over another for the
sake of efficency, however often the exact ordering of operations performed
within sequence points have more to do with details of the compiler architecture
and not necessarily in a given case to do with efficiency.
>> I think the OP's point has been completely missed (that a valid program is
>> a inherently very definitive and detailed specification).
>
>I thought the point was that, at the margins, the "valid program" is *not*
>as detailed a specification as was claimed/expected. (Though I still don't
>know of anything more detailed. In fact, I think most programs are
>over-specifications of the desired behavior. That is, they require a lot of
>specific behavior that is actually unimportant to the correct result.)
IIRC the original posters point was as I stated (more or less), and it was in
a followup that someone contrived an example of how to use undefined behaviour
to make a specific program which was non-deterministic (at least between various
compilers).
In any case, it doesn't matter - there is no reason to invoke undefined behaviour
in your program. If you wish to print the value of i, i+1 and i+2 and leave i
advance by three, use: printf("%d %d %d", i, i+1, i+2); i += 3;
Your program will now be deterministic across all conforming implementations.
Now, tell me what will be printed:
int i = 0;
i = i++;
printf("%d\n", i);
Regards,
Dave
--
dave04a (at) Dave Dunfield
dunfield (dot) Firmware development services & tools: www.dunfield.com
com Collector of vintage computing equipment:
http://www.parse.com/~ddunfield/museum/index.html