java interpreter/compiler hosted with Spur?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
39 messages Options
12
Reply | Threaded
Open this post in threaded view
|

multiple bytecode sets (was: java interpreter/compiler hosted with Spur?)

Jecel Assumpcao Jr
Eliot,

> Cog already supports multiple bytecode sets.  The current
> compiled method header format has only space for a single
> bit so Cog currently supprts two bytecode sets.  [...]

Interesting. I don't know why, but I had an impression that the plan was
to add an offset as some bits in each method header that you would then
add to each "logical" bytecode to get the "physical" bytecode. I guess
one bit is equivalent to having the offset be either 0 or 256. Allowing
other values would make it possible to share bytecodes between sets (but
with different values), but this would be too complicated for practical
use.

> Why is it costly?

The instruction ("microcode") cache has a 4KB area that is loaded by the
hardware and a 4KB area that is loaded under software control. This
second area is a table with 256 entries of 16 bytes each, with each
entry holding the native code to interpret a particular bytecode. So to
switch to another bytecode set you have to reload this 4KB area with
different contents, and that will probably cause the rest of the cache
to miss a lot for a while.

Adding a flag and either growing that part of the cache to 8KB or
reducing each entry from 16 to 8 bytes each would allow two bytecode
sets. But with several cores, each with its separate cache, this
probably isn't worth it.

-- Jecel


Reply | Threaded
Open this post in threaded view
|

Re: java interpreter/compiler hosted with Spur?

Robert Withers
In reply to this post by Eliot Miranda-2
Hi Eliot, 

On Jan 29, 2014, at 11:53 AM, Eliot Miranda <[hidden email]> wrote:

Hi Charli,


On Tue, Jan 28, 2014 at 5:54 PM, charlie robert <[hidden email]> wrote:
I was thinking that handle may be a capability ref, mutable in the scope of the ref state machine.

Perhaps you're assuming much more knowledge about Cap'n Proto than I have.  Could you explain the above?  I have no idea which state machine you're talking about.  Sorry :-(


In Elib, the refs are involved in a reference state machine, as promises eventually resolve or break, or a remote ref breaks.  Here’s the Elib page on this, with diagram: http://www.erights.org/elib/concurrency/refmech.html.  

I would prefer to get java going with promise-pipelining, but without a wrapper.  That requires a JVM that allows reference mutation.   I’ve always thought of Cog and building a SqueakJDK.

- Robert



smime.p7s (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: java interpreter/compiler hosted with Spur?

Frank Shearar-3
In reply to this post by Robert Withers
On 29 January 2014 18:39, Robert Withers <[hidden email]> wrote:

>
> On Jan 29, 2014, at 7:41 AM, Frank Shearar <[hidden email]> wrote:
>
>> On 29 January 2014 14:16, Robert Withers <[hidden email]> wrote:
>>
>>> The other reason is that I wanted the returned promise to be typed as the real return and let the inferencer do its thing and rewrite send sites from dynamic lookup to direct calls.  I was told that Hindley-Milner was what I wanted.  *shrug*
>>
>> Um, that sounds a bit weird, to be honest. A promise surely _can't_ be
>> typed as the real return since there _is_ no real return: a promise
>> can break! In Scala-ish terms (I've not written any Scala for about
>> two years...), a Promise[Int] is fundamentally different to an Int
>> because the latter is just a value whereas the former may or may not
>> result at some point in a value. It's only once a Promise has resolved
>> that things get interesting. And it sounds here like this is when
>> you'd like to optimise the Promise wrapper away, right?
>
> I was under the impression that Hindley-Milner was able to construct union types, which is why it was recommended to me.

Just to be clear, when you say "union" what do you mean? Union like
the C structure, where you can interpret some chunk of memory in
several ways? Or do you mean sum types, where "this variable may
contain a Left or a Right"?

frank

>>> The strategy behind my request is to see if Cog could support multiple languages and modern languages - i.e. broadly used languages.  It seems a dynamic runtime is better than a static vm to support both flavors of languages, though runtime feedback type inferencing seems important, in my gut.  Maybe it is just cool tech, great for ops.
>>
>> Cog _does_ support multiple languages: Squeak and Newspeak. Given that
>> Ruby can run on top of Gemstone (Maglev), there shouldn't be an issue
>> with running other languages on top of Cog... assuming there's someone
>> sufficiently interested/available to actually _do_ that. (Oh, and of
>> course IBM ran Java on top of a Smalltalk VM in Visual Age for Java.)
>
> It may be clearer for me to say that it would be awfully nice if Cog allowed for bytecode virtualization.  In 64-bit values, a couple of bits for bytecode index (have a cache of 4 bytecode sets, so 4 different languages, concurrently executing).  Add a bit for a capability/promise for pipelining.  All at the expense of the range of the immediates, but maybe that’s ok, I do not know.
>
>
> - Robert

Reply | Threaded
Open this post in threaded view
|

Re: java interpreter/compiler hosted with Spur?

Robert Withers

On Jan 30, 2014, at 8:22 AM, Frank Shearar <[hidden email]> wrote:

> On 29 January 2014 18:39, Robert Withers <[hidden email]> wrote:
>>
>> On Jan 29, 2014, at 7:41 AM, Frank Shearar <[hidden email]> wrote:
>>
>>> On 29 January 2014 14:16, Robert Withers <[hidden email]> wrote:
>>>
>>>> The other reason is that I wanted the returned promise to be typed as the real return and let the inferencer do its thing and rewrite send sites from dynamic lookup to direct calls.  I was told that Hindley-Milner was what I wanted.  *shrug*
>>>
>>> Um, that sounds a bit weird, to be honest. A promise surely _can't_ be
>>> typed as the real return since there _is_ no real return: a promise
>>> can break! In Scala-ish terms (I've not written any Scala for about
>>> two years...), a Promise[Int] is fundamentally different to an Int
>>> because the latter is just a value whereas the former may or may not
>>> result at some point in a value. It's only once a Promise has resolved
>>> that things get interesting. And it sounds here like this is when
>>> you'd like to optimise the Promise wrapper away, right?
>>
>> I was under the impression that Hindley-Milner was able to construct union types, which is why it was recommended to me.
>
> Just to be clear, when you say "union" what do you mean? Union like
> the C structure, where you can interpret some chunk of memory in
> several ways? Or do you mean sum types, where "this variable may
> contain a Left or a Right”?
I think the first, although it is a union of types, not a union of data with types.  I think we need a multiplicity of types, or composite of types, like a mixing of types.  This way, you can call Account methods or you can call promise methods.  It may not be a big deal, just a problem of my mind, in anticipation.  Got it get it running, then get it running right.  

- Robert

>
> frank
>
>>>> The strategy behind my request is to see if Cog could support multiple languages and modern languages - i.e. broadly used languages.  It seems a dynamic runtime is better than a static vm to support both flavors of languages, though runtime feedback type inferencing seems important, in my gut.  Maybe it is just cool tech, great for ops.
>>>
>>> Cog _does_ support multiple languages: Squeak and Newspeak. Given that
>>> Ruby can run on top of Gemstone (Maglev), there shouldn't be an issue
>>> with running other languages on top of Cog... assuming there's someone
>>> sufficiently interested/available to actually _do_ that. (Oh, and of
>>> course IBM ran Java on top of a Smalltalk VM in Visual Age for Java.)
>>
>> It may be clearer for me to say that it would be awfully nice if Cog allowed for bytecode virtualization.  In 64-bit values, a couple of bits for bytecode index (have a cache of 4 bytecode sets, so 4 different languages, concurrently executing).  Add a bit for a capability/promise for pipelining.  All at the expense of the range of the immediates, but maybe that’s ok, I do not know.
>>
>>
>> - Robert
>



smime.p7s (3K) Download Attachment
tty
Reply | Threaded
Open this post in threaded view
|

for the operation MAP := B bitOr:( M bitShift:3) given MAP how do I derive B and M?

tty
In reply to this post by Eliot Miranda-2
To reverse a MorphicEvent into an primitive event I need to unmap the buttons and modifiers.
In a primitive event, the fifth element (buttons) can be 1,2 or 4 and the sixth element (modifiers)  1,2,4 or 8.

HandMorph >> generateMouseEvent combines them into one field as such:


    buttons := evtBuf fifth.
    modifiers := evtBuf sixth.
    buttons := buttons bitOr: (modifiers bitShift: 3).

I need to reverse that   "buttons bitOr: (modifiers bitShift: 3)" back into the original values to recreate the primitive event.
Here are the possible values of B(uttons) and M(odifiers) under that operation:


B           M                 MAP
1 bitOr:(1 bitShift:3 ) 9
1 bitOr:(2 bitShift:3 ) 17
1 bitOr:(4 bitShift:3 ) 33
1 bitOr:(8 bitShift:3 ) 65


2 bitOr:(1 bitShift:3 )  10
2 bitOr:(2 bitShift:3 )  18
2 bitOr:(4 bitShift:3 )  34
2 bitOr:(8 bitShift:3 )  66


4 bitOr:(1 bitShift:3 )   12
4 bitOr:(2 bitShift:3 )   20
4 bitOr:(4 bitShift:3 )   36
4 bitOr:(8 bitShift:3 )   68

So, given a MAP on the right, I need to derive a B and a M.

I can figure something out, but it will probably be ugly. Hence, this email to the list.
Any bit-fiddlers on the board who know an elegant method?

thx.

tty.



Reply | Threaded
Open this post in threaded view
|

Re: for the operation MAP := B bitOr:( M bitShift:3) given MAP how do I derive B and M?

David T. Lewis
On Tue, Feb 11, 2014 at 06:05:30PM -0800, gettimothy wrote:

> To reverse a MorphicEvent into an primitive event I need to unmap the buttons and modifiers.
> In a primitive event, the fifth element (buttons) can be 1,2 or 4 and the sixth element (modifiers)  1,2,4 or 8.
>
> HandMorph &gt;&gt; generateMouseEvent combines them into one field as such:
>
>
>     buttons := evtBuf fifth.
>     modifiers := evtBuf sixth.
>     buttons := buttons bitOr: (modifiers bitShift: 3).
>
>  
> I need to reverse that   "buttons bitOr: (modifiers bitShift: 3)" back into the original values to recreate the primitive event.
> Here are the possible values of B(uttons) and M(odifiers) under that operation:
>
>
> B           M                 MAP
> 1 bitOr:(1 bitShift:3 ) 9
> 1 bitOr:(2 bitShift:3 ) 17
> 1 bitOr:(4 bitShift:3 ) 33
> 1 bitOr:(8 bitShift:3 ) 65
>
>
> 2 bitOr:(1 bitShift:3 )  10
> 2 bitOr:(2 bitShift:3 )  18
> 2 bitOr:(4 bitShift:3 )  34
> 2 bitOr:(8 bitShift:3 )  66
>
>
> 4 bitOr:(1 bitShift:3 )   12
> 4 bitOr:(2 bitShift:3 )   20
> 4 bitOr:(4 bitShift:3 )   36
> 4 bitOr:(8 bitShift:3 )   68
>
> So, given a MAP on the right, I need to derive a B and a M.
>
> I can figure something out, but it will probably be ugly. Hence, this email to the list.
> Any bit-fiddlers on the board who know an elegant method?
>

M is (MAP >> 3) and B is (MAP bitAnd: 7).


MAP M := MAP >> 3 B := MAP bitAnd: 7
9 1 1
17 2 1
33 4 1
65 8 1

10 1 2
18 2 2
34 4 2
66 8 2

12 1 4
20 2 4
36 4 4
68 8 4



Reply | Threaded
Open this post in threaded view
|

RE: for the operation MAP := B bitOr:( M bitShift:3) given MAP how do I derive B and M?

Ron Teitelbaum
In reply to this post by tty

Hello,

 

B= map bitAnd: 7.

M= map bitShift: -3.

 

All the best,

 

Ron Teitelbaum

 

 

From: [hidden email] [mailto:[hidden email]] On Behalf Of gettimothy
Sent: Tuesday, February 11, 2014 9:06 PM
To: The general-purpose Squeak developers list
Subject: [squeak-dev] for the operation MAP := B bitOr:( M bitShift:3) given MAP how do I derive B and M?

 

To reverse a MorphicEvent into an primitive event I need to unmap the buttons and modifiers.
In a primitive event, the fifth element (buttons) can be 1,2 or 4 and the sixth element (modifiers)  1,2,4 or 8.

HandMorph >> generateMouseEvent combines them into one field as such:

    buttons := evtBuf fifth.
    modifiers := evtBuf sixth.
    buttons := buttons bitOr: (modifiers bitShift: 3).


I need to reverse that   "buttons bitOr: (modifiers bitShift: 3)" back into the original values to recreate the primitive event.
Here are the possible values of B(uttons) and M(odifiers) under that operation:


B           M                 MAP
1 bitOr:(1 bitShift:3 ) 9
1 bitOr:(2 bitShift:3 ) 17
1 bitOr:(4 bitShift:3 ) 33
1 bitOr:(8 bitShift:3 ) 65


2 bitOr:(1 bitShift:3 )  10
2 bitOr:(2 bitShift:3 )  18
2 bitOr:(4 bitShift:3 )  34
2 bitOr:(8 bitShift:3 )  66


4 bitOr:(1 bitShift:3 )   12
4 bitOr:(2 bitShift:3 )   20
4 bitOr:(4 bitShift:3 )   36
4 bitOr:(8 bitShift:3 )   68

So, given a MAP on the right, I need to derive a B and a M.

I can figure something out, but it will probably be ugly. Hence, this email to the list.
Any bit-fiddlers on the board who know an elegant method?

thx.

tty.



tty
Reply | Threaded
Open this post in threaded view
|

RE: for the operation MAP := B bitOr:( M bitShift:3)    given MAP how do I derive B and M?

tty
David and Ron.

Thank you.

Its been decades since I have done any bit manipulation and I froze up (:

The answer came to me last night when I half-asleep.

It is clear now what was going on. Somebody needed the data in one field, so they scooched the modifiers up to the next three bits and then tacked on the button.

To reverse this I need to unscooch and un-tack.

When I posted  the question, I was looking at MAP and thinking, "Ok, its close to 64 that means its this, so do that" which is way off base.


Sorry for the noise; I am better now (:


humbly.


tty




---- On Tue, 11 Feb 2014 19:49:12 -0800 Ron Teitelbaum<[hidden email]> wrote ----

Hello,

 

B= map bitAnd: 7.

M= map bitShift: -3.

 

All the best,

 

Ron Teitelbaum

 

 

From: [hidden email] [mailto:[hidden email]] On Behalf Of gettimothy
Sent: Tuesday, February 11, 2014 9:06 PM
To: The general-purpose Squeak developers list
Subject: [squeak-dev] for the operation MAP := B bitOr:( M bitShift:3) given MAP how do I derive B and M?

 

To reverse a MorphicEvent into an primitive event I need to unmap the buttons and modifiers.
In a primitive event, the fifth element (buttons) can be 1,2 or 4 and the sixth element (modifiers)  1,2,4 or 8.

HandMorph >> generateMouseEvent combines them into one field as such:

    buttons := evtBuf fifth.
    modifiers := evtBuf sixth.
    buttons := buttons bitOr: (modifiers bitShift: 3).


I need to reverse that   "buttons bitOr: (modifiers bitShift: 3)" back into the original values to recreate the primitive event.
Here are the possible values of B(uttons) and M(odifiers) under that operation:


B           M                 MAP
1 bitOr:(1 bitShift:3 ) 9
1 bitOr:(2 bitShift:3 ) 17
1 bitOr:(4 bitShift:3 ) 33
1 bitOr:(8 bitShift:3 ) 65


2 bitOr:(1 bitShift:3 )  10
2 bitOr:(2 bitShift:3 )  18
2 bitOr:(4 bitShift:3 )  34
2 bitOr:(8 bitShift:3 )  66


4 bitOr:(1 bitShift:3 )   12
4 bitOr:(2 bitShift:3 )   20
4 bitOr:(4 bitShift:3 )   36
4 bitOr:(8 bitShift:3 )   68

So, given a MAP on the right, I need to derive a B and a M.

I can figure something out, but it will probably be ugly. Hence, this email to the list.
Any bit-fiddlers on the board who know an elegant method?

thx.

tty.





Reply | Threaded
Open this post in threaded view
|

RE: for the operation MAP := B bitOr:( M bitShift:3)    given MAP how do I derive B and M?

Ron Teitelbaum

Yep.  That is exactly right. 

 

It’s all just 1’s and 0’s J

 

Ron

 

From: [hidden email] [mailto:[hidden email]] On Behalf Of gettimothy
Sent: Wednesday, February 12, 2014 6:44 AM
To: The general-purpose Squeak developers list    
Subject: RE: [squeak-dev] for the operation MAP := B bitOr:( M bitShift:3)    given MAP how do I derive B and M?

 

David and Ron.

Thank you.

Its been decades since I have done any bit manipulation and I froze up (:

The answer came to me last night when I half-asleep.

It is clear now what was going on. Somebody needed the data in one field, so they scooched the modifiers up to the next three bits and then tacked on the button.

To reverse this I need to unscooch and un-tack.

When I posted  the question, I was looking at MAP and thinking, "Ok, its close to 64 that means its this, so do that" which is way off base.


Sorry for the noise; I am better now (:


humbly.


tty



---- On Tue, 11 Feb 2014 19:49:12 -0800 Ron Teitelbaum<[hidden email]> wrote ----

 

Hello,

 

B= map bitAnd: 7.

M= map bitShift: -3.

 

All the best,

 

Ron Teitelbaum

 

 

From: [hidden email] [[hidden email]] On Behalf Of gettimothy
Sent: Tuesday, February 11, 2014 9:06 PM
To: The general-purpose Squeak developers list
Subject: [squeak-dev] for the operation MAP := B bitOr:( M bitShift:3) given MAP how do I derive B and M?

 

To reverse a MorphicEvent into an primitive event I need to unmap the buttons and modifiers.
In a primitive event, the fifth element (buttons) can be 1,2 or 4 and the sixth element (modifiers)  1,2,4 or 8.

HandMorph >> generateMouseEvent combines them into one field as such:

    buttons := evtBuf fifth.
    modifiers := evtBuf sixth.
    buttons := buttons bitOr: (modifiers bitShift: 3).


I need to reverse that   "buttons bitOr: (modifiers bitShift: 3)" back into the original values to recreate the primitive event.
Here are the possible values of B(uttons) and M(odifiers) under that operation:


B           M                 MAP
1 bitOr:(1 bitShift:3 ) 9
1 bitOr:(2 bitShift:3 ) 17
1 bitOr:(4 bitShift:3 ) 33
1 bitOr:(8 bitShift:3 ) 65


2 bitOr:(1 bitShift:3 )  10
2 bitOr:(2 bitShift:3 )  18
2 bitOr:(4 bitShift:3 )  34
2 bitOr:(8 bitShift:3 )  66


4 bitOr:(1 bitShift:3 )   12
4 bitOr:(2 bitShift:3 )   20
4 bitOr:(4 bitShift:3 )   36
4 bitOr:(8 bitShift:3 )   68

So, given a MAP on the right, I need to derive a B and a M.

I can figure something out, but it will probably be ugly. Hence, this email to the list.
Any bit-fiddlers on the board who know an elegant method?

thx.

tty.

 

 



Reply | Threaded
Open this post in threaded view
|

Re: for the operation MAP := B bitOr:( M bitShift:3)    given MAP how do I derive B and M?

timrowledge

On 12-02-2014, at 12:27 PM, Ron Teitelbaum <[hidden email]> wrote:

> Yep.  That is exactly right.
>  
> It’s all just 1’s and 0’s

Which is all well and good until you run out of 1’s, like we sometimes used to when I was a young’un trudging to school barefoot in the snow, uphill both ways.


tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Klingon Code Warrior:- 7) "You question the worthiness of my Code?! I should kill you where you stand!"



Reply | Threaded
Open this post in threaded view
|

Re: for the operation MAP := B bitOr:( M bitShift:3) given MAP how do I derive B and M?

Colin Putney-3



On Wed, Feb 12, 2014 at 8:58 PM, tim Rowledge <[hidden email]> wrote:

On 12-02-2014, at 12:27 PM, Ron Teitelbaum <[hidden email]> wrote:

> Yep.  That is exactly right.
>
> It’s all just 1’s and 0’s

Which is all well and good until you run out of 1’s, like we sometimes used to when I was a young’un trudging to school barefoot in the snow, uphill both ways.

Really? We always had so many 1s we ran out of storage. Reels and reels of nothing but 1s, and the tape drive smoking 'cause we were running it at double speed to try to keep up. 


Reply | Threaded
Open this post in threaded view
|

Re: for the operation MAP := B bitOr:( M bitShift:3) given MAP how do I derive B and M?

timrowledge

On 12-02-2014, at 6:08 PM, Colin Putney <[hidden email]> wrote:

>
>
>
> On Wed, Feb 12, 2014 at 8:58 PM, tim Rowledge <[hidden email]> wrote:
>
> On 12-02-2014, at 12:27 PM, Ron Teitelbaum <[hidden email]> wrote:
>
> > Yep.  That is exactly right.
> >
> > It’s all just 1’s and 0’s
>
> Which is all well and good until you run out of 1’s, like we sometimes used to when I was a young’un trudging to school barefoot in the snow, uphill both ways.
>
> Really? We always had so many 1s we ran out of storage. Reels and reels of nothing but 1s, and the tape drive smoking 'cause we were running it at double speed to try to keep up.
>
Oh come on; surely everyone knew how to renormalize and convert them all to halves ?

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Strange OpCodes: RCM: Randomly Corrupt Microcode



Reply | Threaded
Open this post in threaded view
|

RE: for the operation MAP := B bitOr:( M bitShift:3)    given MAP how do I derive B and M?

Ron Teitelbaum
In reply to this post by timrowledge
> tim Rowledge
>
>
> On 12-02-2014, at 12:27 PM, Ron Teitelbaum <[hidden email]> wrote:
>
> > Yep.  That is exactly right.
> >
> > It’s all just 1’s and 0’s
>
> Which is all well and good until you run out of 1’s, like we sometimes
used to
> when I was a young’un trudging to school barefoot

You had FEET?

>in the snow, uphill both
> ways.
>
>
> tim
>



Reply | Threaded
Open this post in threaded view
|

Re: for the operation MAP := B bitOr:( M bitShift:3) given MAP how do I derive B and M?

Eliot Miranda-2



On Wed, Feb 12, 2014 at 7:23 PM, Ron Teitelbaum <[hidden email]> wrote:
> tim Rowledge
>
>
> On 12-02-2014, at 12:27 PM, Ron Teitelbaum <[hidden email]> wrote:
>
> > Yep.  That is exactly right.
> >
> > It’s all just 1’s and 0’s
>
> Which is all well and good until you run out of 1’s, like we sometimes
used to
> when I was a young’un trudging to school barefoot

You had FEET?

yes, but there was only the one pair to share between all 17 siblings...
 

>in the snow, uphill both
> ways.
>
>
> tim
>






--
best,
Eliot


Reply | Threaded
Open this post in threaded view
|

Re: for the operation MAP := B bitOr:( M bitShift:3) given MAP how do I derive B and M?

Jecel Assumpcao Jr
Tim Rowledge observed:
> Which is all well and good until you run out of 1's, like we sometimes
> used to when I was a young'un trudging to school barefoot
> in the snow, uphill both ways.

Ron Teitelbaum exclaimed:
> You had FEET?

Eliot Miranda clarified:
> yes, but there was only the one pair to share between all 17 siblings... 

You guys are being silly, but when I was in the first year of the
university I actualy kept a bag full of 1s. The computer was a Burroughs
B6700 and students had to use punched cards to program it (this was
replaced with terminals the following year). While on normal days the
both the card reader/printer room and the keypunch room were deserted,
on the due dates for student projects the lines were Disney-level long.
To have a faster turn-around for small edits, I had previously collected
a bag full of chad from the keypunch machine (the 1s), had typed a card
with all characters to have a reference for the codes and had a razor
blade for cutting new holes (the 0s). There was no need for tape or
anything like that to keep the chad in the covered up holes as the card
went through the reader: both the hole and the chad had rough borders
and rubbing a fingernail on them on a smooth surface would expand them
slightly.

-- Jecel
p.s: the 1s and 0s in this story are probably inverted - just apply XOR
1 and it will be true


Reply | Threaded
Open this post in threaded view
|

for the operation MAP := B bitOr:( M bitShift:3)    given MAP how do I derive B and M?

Louis LaBrunda
In reply to this post by timrowledge
Hi tim,

>Which is all well and good until you run out of 1’s, like we sometimes used to when I was a young’un trudging to school barefoot in the snow, uphill both ways.

I think we went to the same school.  We are having one of those snow storms
right now here in New Jersey.

Lou
-----------------------------------------------------------
Louis LaBrunda
Keystone Software Corp.
SkypeMe callto://PhotonDemon
mailto:[hidden email] http://www.Keystone-Software.com


tty
Reply | Threaded
Open this post in threaded view
|

Re: for the operation MAP := B bitOr:( M bitShift:3) given MAP how do I derive B and M?

tty
In reply to this post by Eliot Miranda-2
LOL!

Thanks for the support and laughs.

tty

---- On Wed, 12 Feb 2014 20:42:19 -0800 Eliot Miranda <[hidden email]> wrote ----




On Wed, Feb 12, 2014 at 7:23 PM, Ron Teitelbaum <[hidden email]> wrote:
> tim Rowledge
>
>
> On 12-02-2014, at 12:27 PM, Ron Teitelbaum <[hidden email]> wrote:
>
> > Yep.  That is exactly right.
> >
> > It’s all just 1’s and 0’s
>
> Which is all well and good until you run out of 1’s, like we sometimes
used to
> when I was a young’un trudging to school barefoot

You had FEET?

yes, but there was only the one pair to share between all 17 siblings...
 

>in the snow, uphill both
> ways.
>
>
> tim
>






--
best,
Eliot




Reply | Threaded
Open this post in threaded view
|

RE: for the operation MAP := B bitOr:( M bitShift:3) given MAP how do I derive B and M?

Ron Teitelbaum
In reply to this post by Eliot Miranda-2


> Jecel Assumpcao Jr.
>
> Tim Rowledge observed:
> > Which is all well and good until you run out of 1's, like we sometimes
> > used to when I was a young'un trudging to school barefoot in the snow,
> > uphill both ways.
>
> Ron Teitelbaum exclaimed:
> > You had FEET?
>
> Eliot Miranda clarified:
> > yes, but there was only the one pair to share between all 17
> > siblings...
>
> You guys are being silly, but when I was in the first year of the
university I
> actualy kept a bag full of 1s. The computer was a Burroughs
> B6700 and students had to use punched cards to program it (this was
replaced
> with terminals the following year). While on normal days the both the card
> reader/printer room and the keypunch room were deserted, on the due dates
> for student projects the lines were Disney-level long.
> To have a faster turn-around for small edits, I had previously collected a
bag full
> of chad from the keypunch machine (the 1s), had typed a card with all
characters
> to have a reference for the codes and had a razor blade for cutting new
holes
> (the 0s). There was no need for tape or anything like that to keep the
chad in the
> covered up holes as the card went through the reader: both the hole and
the
> chad had rough borders and rubbing a fingernail on them on a smooth
surface
> would expand them slightly.
>

That's pretty funny.

> -- Jecel
> p.s: the 1s and 0s in this story are probably inverted - just apply XOR
> 1 and it will be true
>



Reply | Threaded
Open this post in threaded view
|

RE: for the operation MAP := B bitOr:( M bitShift:3) given MAP how do I derive B and M?

David T. Lewis
Of course we have Bob Arnings' wonderful punched card morph at
http://www.squeaksource.com/PunchedCards, so it sounds like we are going
to need an enhancement to provide a ChadMorph and and ScotchTapeMorph now.

Dave

>
>
>> Jecel Assumpcao Jr.
>>
>> Tim Rowledge observed:
>> > Which is all well and good until you run out of 1's, like we sometimes
>> > used to when I was a young'un trudging to school barefoot in the snow,
>> > uphill both ways.
>>
>> Ron Teitelbaum exclaimed:
>> > You had FEET?
>>
>> Eliot Miranda clarified:
>> > yes, but there was only the one pair to share between all 17
>> > siblings...
>>
>> You guys are being silly, but when I was in the first year of the
> university I
>> actualy kept a bag full of 1s. The computer was a Burroughs
>> B6700 and students had to use punched cards to program it (this was
> replaced
>> with terminals the following year). While on normal days the both the
>> card
>> reader/printer room and the keypunch room were deserted, on the due
>> dates
>> for student projects the lines were Disney-level long.
>> To have a faster turn-around for small edits, I had previously collected
>> a
> bag full
>> of chad from the keypunch machine (the 1s), had typed a card with all
> characters
>> to have a reference for the codes and had a razor blade for cutting new
> holes
>> (the 0s). There was no need for tape or anything like that to keep the
> chad in the
>> covered up holes as the card went through the reader: both the hole and
> the
>> chad had rough borders and rubbing a fingernail on them on a smooth
> surface
>> would expand them slightly.
>>
>
> That's pretty funny.
>
>> -- Jecel
>> p.s: the 1s and 0s in this story are probably inverted - just apply XOR
>> 1 and it will be true
>>
>
>
>



12