EmbeddedRelated.com
Forums
Memfault Beyond the Launch

Why no Multitasker in C compilers?

Started by grahamgollings June 24, 2003
On Thu, 26 Jun 2003 22:08:13 -0700, you wrote:

>Hey man, I should take some blame for those phrases
like that to begin 
>with. Sorry about that.

Hehe.  Yes, it was you I got that phrase from.  Andrew has my
apology for it, for what it's worth.  I honestly had no
nefarious intent, though.  And I am honestly confused by his
reaction.  But I accept that he had one and I do apologize for
my part in that.

>Jonathan, business decision is obviously a complex
process. Whether a 
>vendor decides to work with another supporter or not depends on a great 
>number of factors. In this example, if we were to get involved with Andrew, 
>obviously it will be because we think it makes sense for us to do so. 

Completely agreed.

>Whether Andrew uses his income to "feed his
children" or to buy a nice 
>fancy sports car, or whatever, is immaterial.

hehe.  Abolutely.  I was only a metaphor to me.  Not a real
thing.

>IOW, my decision will solely 
>be based on its beneficial factors to me, and not to him. Obviously he will 
>make his decision in similar vein. An agreement will only come about when 
>both parties think it is beneficial to them in their own ways. Nothing more 
>and nothing less.

Indeed.  Nothing I said disagrees with this.  I was just
exploring it, myself -- thinking out loud, so to speak.  And I
think I've a right to do that much and neither of you are
obligated in any way to clarify anything to me.

But I can still talk out loud.

Anyway, apologies to Andrew.  No slights were intended.

Jon


Beginning Microcontrollers with the MSP430

--- In msp430@msp4..., Jonathan Kirwan <jkirwan@e...> wrote: 
> Anyway, apologies to Andrew.  No slights were
intended.

Apology accepted.

--Andrew


Hi John,

It feels like 35 years !

I woke up this morning, read your post. This got me thinking about 
the history - dates -etc. I can now be a bit more precise.

The first system I got involved in for embedded use was an Intel SBC, 
a great big PCB, complete with an ICE. I don't remember if the ICE 
was part of the SBC or a seperate box. - This was the period that I 
used the telex machine for HMI.

Later we purchased STD bus parts, adopted the Z80, bought another 
ICE, upgraded to a VT100 terminal and floppies,I suspect that this 
was the time that CPM came into the picture.

This all happened while I was in Great Yarmouth - UK, when I was 
involved in the oil business. The equipment was used to do underwater 
internal pipe profile measurements.

I was there for 1969-1977. So this fits in with what you said.

I wish I had the money (with compound interest) that we spent then!

Graham.

> 35 years ago?  I don't think CP/M was around
in 1968.  More like 
late 1975, 
> early 1976, based on the CPM 1.0 manuals I'm
familiar with.  CP/M 
2.2 was 
> 1978, IIRC.  http://sneezy.usu.edu/~ivie/cpm2
> 
> 	--John


Hi Jonathan,

Gosh you make me feel bad now. At the time I was in the then 
fledgling UK oil business and money wasn't really the issue.

This is the first time for many years that I have tried to recall the 
events. I have just made another post with a bit more stuff that I 
remembered. It was 34 years ago, but as a couple of people point out 
the Z80 didn't come along till later. I just remember that latter 
part of the history better!

I only wish that I had kept some of the hardware, especially the 
early parts. I remember we used Mostek too.

Anyway back to reality - I have to do some quotes.

Graham.




Tim,

Here is some nonsense code and the disassembler output. If you want 
the results of some real code post it and I will compile - return.
Note. R7 top of data stack, R5 is data stack pointer

Graham.

: add3 ( n n n - n )  + + ;
: give3 ( - n )  $11 $22 $33 add3 ;
: Mult ( - n )  give3 give3 * ;


[ ADD3 ]
E000    ADD @+R5  , R7
E002    ADD @+R5  , R7
E004    RET ok

[ GIVE3 ]
E006    SUB #2  , R5
E008    MOV R7  , 0000(R5)
E00C    MOV #0011 , R7
E010    SUB #2  , R5
E012    MOV R7  , 0000(R5)
E016    MOV #0022 , R7
E01A    SUB #2  , R5
E01C    MOV R7  , 0000(R5)
E020    MOV #0033 , R7
E024    CALL #[ ADD3 ]
E028    RET ok
see mult
[ MULT ]
E02A    CALL #[ GIVE3 ]
E02E    CALL #[ GIVE3 ]
E032    CALL #[ * ]
E036    RET ok




Jonathan Kirwan wrote:
> 
> On Thu, 26 Jun 2003 17:23:56 -0000, you wrote:
> 
> >I will keep you guessing agewise! (for now anyway)
> 
> Younger than me, it looks.
> 
> >The 1st micro that
> >I got involved with was a CPM machine,
> 
> My first micro was the one I soldered and assembled myself, my
> Altair 8800.  My recollection is that I couldn't think of
> anything else when I first read the article in Popular
> Electronics -- memory tells me that this was in December of
> 1974.  (I got a new job which started Jan 6th, 1975, which I
> expected to have pay for this.)  I think it was a two-parter
> article, with the 2nd installation in January, 1975 -- the month
> I ordered my about $400 kit.
> 
> However, prior to that, I'd been using such computers as the
> PDP-8 and the IBM 1130.
> 
> My very first computer was the Bell Labs Cardiac, developed in
> 1969.  It was a "paper computer" and you moved a little
"bug"
> around from slot to slot and executed the instructions manually.
> My first exposure to the Cardaic was in 1971.
> 
> >It had 32k ram
> 
> Egads.  It wasn't for many years before I ever got to see
> anything with that darned much memory -- my Altair came with 256
> bytes (exactly one static ram chip) and the front panel board
> had four sockets for them, so three were empty.  I think it was
> almost another year before I purchased two 4K dynamic ram cards
> from Altair -- and they didn't even work, after building them.
> Getting them to work took me more than another month and a lot
> of learning.  Just about in time for Altair to send me a nice
> little notice telling me about their bad design and the
> "patches" I needed to make.  Downside was that I'd already
> figured them out and it cost me a lot of time.  Upside was that
> I had figured them out and I'd learned a lot about electronics
> which would help me.
> 
> I think it wasn't until 1979 before I actually owned something
> with 32k ram.  And it was "high cotton," to me, believe you me.
> 
> >a Z80 (don't remember clock speed),
> 
> Yeah, you lucky slob.  You have *no* idea how much easier it was
> to design a circuit with the Z80 in it, as compared with the
> 8080A (or even the 8085.  And the extra instructions were nice.

I hated the Z80, I liked the 8080/5, I loved the 6800, and the 6502 but
i LURVVVED the 6809. Back in the UK, in my Mums attic I've got a neat
collection opf unused 4004's and 8008's. One of my first
'computers' was
built with discrete logic RTL, and a small magnetic core memory.
(courtesy of the ARMY) It's most useful task was as a foot warmer. One
of the most fun programs I wrote was Star Wars tacked onto the end of a
ladder logic program running the Cat regen tower on the worlds largest
gas processing plant in Saudi (1981). There was space, and the stupid
thing actually ran through the whole core anyway (yes CORE 8X briefcase
sized chunks of magnetic core memory). It amused the operators on long
boring shifts. The most compact high level language program was probably
an ACOL bidding system in 128 words on a CASIO pocket programmable. IIRC
that was stack oriented reverse polish style.

In 1981 it was the closest thing around to a truly portable computer, I
actually had a version in a watch, picked up in Bahrain, and never seen
since. I mourn their passing. They were simple devices without the PDA
crap you don't need, and great for simple programs. Yes, I know I could
get an HP, but I don't know why, I've never liked HP.

Al

Tim, a bit more info, This is the GIVE3 word dissembly from another 
compiler, ( ADD3 and MULT are very similar so I leave them out ). 
With optimisation on, it gets smarter, and doesn't bother calling 
ADD3.


G.

: give3 ( --n) $11 $22 $33 add3 ;

Optimiser = OFF

dis give3 
GIVE3
( 0000.8BB8 34800600 )      SUB       # 0006  R4
( 0000.8BBC B44022000000 )  MOV       # 0022  0000 (R4)
( 0000.8BC2 B44011000200 )  MOV       # 0011  0002 (R4)
( 0000.8BC8 84450400 )      MOV       R5 0004 (R4)
( 0000.8BCC 35403300 )      MOV       # 0033  R5
( 0000.8BD0 B012AE8B )      CALL      # 8BAE        ADD3
( 0000.8BD4 3041 )          RET/NEXT
30 bytes, 7 instructions.

OPTIMISER = ON

dis give3 
GIVE3
( 0000.8BAE 2483 )          SUB       # 2 R4
( 0000.8BB0 84450000 )      MOV       R5 0000 (R4)
( 0000.8BB4 35406600 )      MOV       # 0066  R5
( 0000.8BB8 3041 )          RET/NEXT
12 bytes, 4 instructions.
 ok





Memfault Beyond the Launch