Shop OBEX P1 Docs P2 Docs Learn Events
Propeller based demo to be released at Breakpoint. - Page 7 — Parallax Forums

Propeller based demo to be released at Breakpoint.

123457

Comments

  • kuronekokuroneko Posts: 3,623
    edited 2009-05-07 01:50
    It is said...
    The complete source code for Turbulence will be released when somebody has reverse engineered the binary enough to provide a detailed description of the techniques used in the greetings part (rotating face with text overlays).
    That's where we want to end up. Let's get there step by step. It was suggested to brush the following topics:
    • bootstrap/unpacker
    • demo sequence (who does what)
    • workings of the rotozoomer
    • workings of the overlay/transparency
    Well, starting with the infamous JMP #7 from an unusual location we end up straight in the decoder (I prefer that word, call it what you want) which picks up data from 0x0C24 and writes its first payload to 0x00D4. Note that all addresses are hub addresses (unless stated otherwise). Once finished, the cog will restart with coginit outb. How does the decoder work? The payload is stored reversed in a bit stream which interleaves data and control information.

    units = read(11);
    while (units--) {
        if (read(1)) {
            tmp = dst - read(8);
            len = read(6) + 2;
            for (i = 0; i < len; i++)
                hub[noparse][[/noparse]++dst] = hub[noparse][[/noparse]tmp++];
    
            continue;
        }
        len = read(4) + 1;
        for (i = 0; i < len; i++)
            hub[noparse][[/noparse]++dst] = read(8);
    }
    


    The read() function returns the requested number of bits in the correct order. Note that the destination address is specified one below the actual location (0x00D3 for the first block). The single bit consumed at the beginning of the loop decides whether we do a plain copy from the stream (0) or refer to data we already unpacked (1).

    Let's have a look at the first 4 units:

    c 00D4: 6E EC BF 68 38 5C FC 50 70 00 7C 5C F1 6F BC A0 
    c 00E4: 28 6E FC 80 36 48 3C 86 59 00 68 5C 5E DA FC 5C 
    c 00F4: 50 6E FC F8 6E E8 BF 68 18 
    r 00FD: 6E FC F8
    


    The first three simply copy bytes from the stream to the destination. Unit 4 refers back to location 0x00F5 from where it copies 3 bytes.

    Once decoding of the first block is complete the hub memory looks like this turbulence.pass_1.eeprom. Disassembling this file with your favourite tool will show that the coginit outb disappeared (only to come back later [noparse]:)[/noparse] We now have access code for the EEPROM, some initial setup (video: cog 6/7, audio: cog 5), the hidden part check is done (IIRC 40+ negative edges on P31) as well as whether the demo is resident in EEPROM. After that, we get a final code update for cog 0 (written to 0x01C0) and one more coginit outb which drops us - eventually - into the demo sequence loop.

    Which I will explain tomorrow as I have some real work to do as well [noparse]:)[/noparse] For those who can't wait, here are some entry points which can be fed into the decoder.

    hidden sequence
    3485, 4940, 1fef, 16e0, 7504
    
    normal sequence
    16e0, 1fef, 6f43, 1d5d, 2699, 23b9, 312e, 2af7, 2f6f, 2c1c, 1991, 61cd, 3485, 509c
    3b66, 37f3, 3c57, 6fbb, 3e8c, 7443, 4319, 408b, 4a8c, 3b3f, 4616, 39f0, 5343, 47d2
    

    Post Edited (kuroneko) : 5/8/2009 12:14:01 AM GMT
  • jazzedjazzed Posts: 11,803
    edited 2009-05-07 02:32
    Kudos so far kuroneko !

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    --Steve


    Propalyzer: Propeller PC Logic Analyzer
    http://forums.parallax.com/showthread.php?p=788230
  • kuronekokuroneko Posts: 3,623
    edited 2009-05-08 01:47
    Disclaimer: Descriptions (especially for commands) may not exactly match their intended purpose. However, it tells me what I need to know [noparse]:)[/noparse]
    • bootstrap/unpacker
    • demo sequence (who does what)
    • workings of the rotozoomer
    • workings of the overlay/transparency
    Depending on whether you found the hidden part or not (the hidden part enabled by default was posted in this thread) you end up with two sequence descriptors located at 0x7D28 and 0x7D68. These are WORD tables with a header and bit stream locations (fit for the decoder). The fourth entry in the header describes the location of the command bit stream (0x7B96 and 0x7D11). Let's have a look at the hidden part as it's the shorter one.

    7: init: primary/secondary
    
    3: set palette
       c 7C00: 00 04 0C 0C 3F 
       r 7C05: 3F 3F 3F 
    
    1:  src: 7 (1FEF)
    2:  dst: 1 (7400)
    4:  cog: 2 (0) init
    
    1:  src: 6 (16E0)
    2:  dst: 1 (7400)
    4:  cog: 4 (0) init
    
    1:  src: 5 (3485)
    2:  dst: 1 (7400)
    4:  cog: 1 (1) init
    
    1:  src: 4 (4940)
    2:  dst: 1 (7400)
    4:  cog: 3 (0) init
    
    1:  src: 8 (7504)
    2:  dst: 1 (7400)
    
    0: wait:   0 ==== (0 - infinite ) ============= 00:00.00 (0000)
    


    This should be rather easy to follow. A bit stream is selected, then decoded to a given address and one out of 4 cogs (1-4) has to do the work. The last stream doesn't represent code but the scroller message (posted in this thread) which is picked up by cog 3 (started last). I could go into more detail as to what is done in the other 3 cogs but our main focus should stay on the greeting part. Besides, at this point it should be a piece of cake to figure out what's going on.

    The normal part is rather long (5min, I'll attach the whole sequence as a file) so I show only the required fragment.

    ...
    0: wait:  64 ==== (0 - infinite ) ============= 02:50.10 (0A00)
    5:  cog: 1 stop
    5:  cog: 2 stop
    7: init: primary/secondary
    3: set palette
       c 7C00: 00 
       r 7C01: 00 00 00 
    1:  src: 14 (61CD)
    2:  dst: 0 (0000)
    3: set palette
       c 7C00: 00 10 34 3D 
    1:  src: 13 (2F6F)
    2:  dst: 1 (7400)
    4:  cog: 4 (0) init
    0: wait:  63 ==== (0 - infinite ) ============= 02:54.13 (0A3F)
    5:  cog: 3 stop
    0: wait: 129 ==== (0 - infinite ) ============= 03:03.07 (0AC0)
    3: set palette
       c 7C00: 00 10 34 3D 00 
       r 7C05: 00 10 34 
       c 7C08: 3F 
       r 7C09: 3F 3F 3F 3F 3F 3F 3F 
    1:  src: 25 (4319)
    2:  dst: 1 (7400)
    4:  cog: 1 (0) init
    4:  cog: 2 (0) init
    4:  cog: 3 (0) init
    0: wait: 314 ==== (0 - infinite ) ============= 03:24.06 (0BFA)
    ...
    


    A blob of data is decoded from 0x61CD to 0x0000. This contains the face image (16K, 128x128) and the greeting messages. Then cog 4 is started (payload at 0x2F6F) which does the whole rotozoomer business. The latter is running on its own for about 10s, after that a new palette is loaded and the text overlay code (payload at 0x4319) extracted and distributed among cogs 1-3. The code splits up internally based on cogid which results in:
    • cog 3 driving colour index bit 3 for all 6 text rows
    • cog 1 driving colour index bit 2 for rows 1, 3 and 5
    • cog 2 driving colour index bit 2 for rows 2, 4 and 6
    FYI, cog 4 drives colour index bits 1 and 0 giving a total of 16 colours for this part.

    More details to follow. If anyone has a particular question, maybe I know the answer. Don't hesitate to ask.

    Post Edited (kuroneko) : 5/8/2009 2:00:14 AM GMT
  • ShazzShazz Posts: 52
    edited 2009-05-08 07:53
    For the lazy guys, here is an implementation of the decoder/depacker as you wish.

    tmpstore.free.fr/propeller/LoaderDecrypter_v0.2.zip

    usage:
    -r : source offset
    -w : write offset
    -o : outputfile
    -e : output only decoded data
     
    java -jar ../dist/LoaderDecrypter.jar -o newpass.eeprom -r 0x07504 -w 0x00 turbulence.eeprom
    
    
  • BEEPBEEP Posts: 58
    edited 2009-05-08 16:03
    Shazz said...
    Beep, can you explain us what triggers the hidden part ? As I found it by mistake it is still a mystery for me...
    No longer, I hope smile.gif

    For us dummies. If you do a serial communication to the Propeller in the beginning of the Demo, it will trigger the hidden part.

    I have disassembly a little bit of the eeprom file smilewinkgrin.gif
    CON
    _clkmode = xtal1 + pll16x
    _clkfreq = $5C7C0007
  • BEEPBEEP Posts: 58
    edited 2009-05-08 16:30
    kuroneko said...
    It is said...
    the hidden part check is done (IIRC 40+ negative edges on P31) as well as whether the demo is resident in EEPROM.
    Okay!, set pin 31 low, start the Demo and the Hidden part shows up smile.gif

    Edit:
    I turned the connector wrong (pin 31 was floating) so with right connections it didn't work so I have to set the pin high/low(?) a moment after start up of the Propeller.

    Post Edited (BEEP) : 5/8/2009 5:33:48 PM GMT
  • SapiehaSapieha Posts: 2,964
    edited 2009-05-08 19:59
    Hi Linus
    Watch my movie and see if you find what differentiates it from your
    And why?

    Ps. can't atach my video Sorry It is to big (279 MB)

    If You have one e-mail address I can send it to You



    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nothing is impossible, there are only different degrees of difficulty.
    For every stupid question there is at least one intelligent answer.
    Don't guess - ask instead.
    If you don't ask you won't know.
    If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


    Sapieha

    Post Edited (Sapieha) : 5/8/2009 8:17:37 PM GMT
  • kuronekokuroneko Posts: 3,623
    edited 2009-05-09 02:02
    Sapieha said...
    Watch my movie and see if you find what differentiates it from your
    And why?
    Can't you post screen shots? Or would that give away too much [noparse];)[/noparse]
  • SapiehaSapieha Posts: 2,964
    edited 2009-05-09 05:51
    Hi kuroneko.

    Screen shoits give no clues.
    Only if You watch entire video You can see al problems

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nothing is impossible, there are only different degrees of difficulty.
    For every stupid question there is at least one intelligent answer.
    Don't guess - ask instead.
    If you don't ask you won't know.
    If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


    Sapieha
  • kuronekokuroneko Posts: 3,623
    edited 2009-05-09 07:56
    • bootstrap/unpacker
    • demo sequence (who does what)
    • workings of the overlay/transparency
    • workings of the rotozoomer
    • VGA driver
    Having mentioned colour bit indexes and palettes in the last part, I'll explain quickly how the (transparent) text overlay is done. Having dropped so many clues already it borders on stating the obvious but anyway ...

    Effectively we are dealing with 3 sources (rotozoomer, primary (top) and secondary (middle) text layer). The palette is arranged like this:

    %00--: 00 10 34 3D
    %01--: 00 00 10 34
    %1---: 3F 3F 3F 3F 3F 3F 3F 3F
    


    The primary text layer controls bit 3, meaning any colour looking like %1--- resolves to white. The secondary (bit 2) comes into effect for %01-- which gives us a slightly darker appearance of %00-- which is covered by the rotozoomer. That's about it really. If the text bits are not driven high then you get the background image, otherwise either transparent (shadow) or opaque (main) text. I'll attach the background image with two rectangles applied on top (instead of text) to demonstrate the effect.

    Let's have a quick look at the rotozoomer next. While it might look complicated it isn't really that difficult. It obviously helps if your picture is using a power of two for width and height to deal with wraps (c mod 2^n is equivalent to c & (2^n - 1)). What happens?
    • start with the top left corner (x, y)
    • calculate the address inside your image data (e.g. y mul width + x)
    • plot this pixel
    • find the next location, x = (x + dx) mod width, y = (y + dy) mod height
    • repeat for each column (and subsequently row)
    Now try that in PASM, in say 7 instructions! Here is what the inner loop looks like:

    loop    MOV       $096, $098        ' (x, y): VUTS.RQPO.NMLK.JIHG.FEDC.BA98.7654.3210
            MOVI      $096, $096        '         8765.4321.0MLK.JIHG.FEDC.BA98.7654.3210
            SHL       $096, #2          '         6543.210M.LKJI.HGFE.DCBA.9876.5432.10--
            SHR       $096, #18         '         ----.----.----.----.--65.4321.0MLK.JIHG        16K address
            RDBYTE    OUTA, $096        ' feed pixel value to the video driver
            ADDX      $098, $09a wc     ' apply dx and dy
            DJNZ      $094, #loop       ' repeat for all columns
    


    Which is quite impressive. If you follow the bit pattern on the right you'll see that the start coordinates come along as x << 16 + y. The increments are arranged in a slightly different way as they are applied in what I believe is 3.8 fixed point format (but IIRC only 2.8 is effectively used). Note also how an overflow from the dy fraction is applied (one sample late though) to the integer part (ADDX).

    dx/dy: yyyy.yyyy.----.-XXX.xxxx.xxxx.----.-YYY
    


    Incidentally, Linus, what is the lonely TEST linecount, #3 wz doing just after the loop?

    Post Edited (kuroneko) : 5/9/2009 8:06:35 AM GMT
    256 x 256 - 14K
  • kuronekokuroneko Posts: 3,623
    edited 2009-05-09 08:46
    BEEP said...
    Okay!, set pin 31 low, start the Demo and the Hidden part shows up smile.gif
                    MOV     CTRA, :ctra
                    MOV     FRQA, #1              
                    ADD     CNT, :delay
                    WAITCNT CNT, #0              
                    CMP     :target, PHSA WZ,WC
            IF_C    RDWORD  $006, #$096              ' sequence table
            IF_C    ADD     $006, #$040              ' switch to hidden sequence
            IF_C    WRWORD  $006, #$096              ' update
    
    :ctra           long    $3800001f
    :delay          long    $10000000
    :target         long    $00000028
    
    
  • Linus AkessonLinus Akesson Posts: 22
    edited 2009-05-10 05:08
    Excellent work! Not much left now before I'll publish the source code.
    kuroneko said...
    Incidentally, Linus, what is the lonely TEST linecount, #3 wz doing just after the loop?

    That's a good question. I've traced this instruction back through the version control system, but it doesn't make sense back when it was written either. Except that it was checked in late at night. My best guess is that it was used for 4:3 aspect ratio correction, but that I later figured out that I'd perform the correction via dy instead.
  • kuronekokuroneko Posts: 3,623
    edited 2009-05-11 12:11
    • bootstrap/unpacker
    • demo sequence (who does what)
    • workings of the overlay/transparency
    • workings of the rotozoomer
    • VGA driver
    We are nearly done. To be honest, it's slightly worse than taking the rotozoomer apart [noparse];)[/noparse] Not so much about its general structure - which is obvious enough - but getting every detail right. What does each cog do:
    • generate a vsync pulse
    • generate the back porch, while doing so read in the palette from 0x7C00 and store it in the first 256 longs
    • spend 2 horizontal lines to sample video data from INA (240 pixels) into a line buffer
    • output the line buffer twice
    • repeat last two steps 120 times (2 lines collect, 2 lines emit)
    • front porch
    The difference between cog 6 and 7 being that the latter outputs 2 back porch lines less (and 2 front porch lines more) which nicely interleaves both video signals. Let's have a look at how the data is collected and assembled:

            MOV     VSCL, $16d               
            WAITVID $172, #%1010             ' HSYNC pulse
            WAITVID $172, $174               ' $00010203:$FFFFFFFF -> HSYNC = VSYNC = 0
            MOV     VSCL, $171               
            WAITVID $172, $174               
    
            MOVD    :line, #$183             ' line buffer - 1
            MOV     $17e, #60                ' 60 * 4 bytes -> 240 pixels
    
    :loop   MOVS    :b0, INA                 ' read colour index from INA and use this as palette source register
    :line   MOV     $0-0, colour
    :b0     MOV     colour, $0-0
            ADD     :line, $175              ' $200, next long in line buffer
    
            MOVS    :b1, INA                
            SHL     colour, #8
    :b1     OR      colour, $0-0
            NOP
    
            MOVS    :b2, INA                
            SHL     colour, #8              
    :b2     OR      colour, $0-0               
            NOP                                      
    
            MOVS    :b3, INA                
            SHL     colour, #8
    :b3     OR      colour, $0-0               
            DJNZ    $17e, #:loop
    
            MOV     $1bf, colour             ' store last 4 pixels
    
            ... emit line buffer 2x
    


    I mentioned before that fetching 240 pixels takes the time of two scan lines. So why do we only have a single HSYNC pulse and why is HSYNC/VSYNC = 0 for the entire time? It's not as bad as it looks but it had me puzzled for a while until I realised that the other cog emits two normal scan lines during that time. As the I/O pins are ORed together we get our second HSYNC pulse and don't have to worry about VSYNC being low. Colour byte assembly is fairly normal stuff here. Nothing much to see really. I think it's quite a nice design, especially the per frame palette update [noparse]:)[/noparse]

    That's it from my side. If anything needs more detail, let me know.

    Thanks for providing that challenge, Linus!

    Post Edited (kuroneko) : 5/11/2009 12:19:32 PM GMT
  • Linus AkessonLinus Akesson Posts: 22
    edited 2009-05-11 14:49
    kuroneko said...
    That's it from my side. If anything needs more detail, let me know.

    Thanks for providing that challenge, Linus!

    Great work, kuroneko! Thanks for putting up with my little game. =) And thanks to Shazz and everyone else who worked on it as well!

    Here is the source code as promised: www.linusakesson.net/scene/turbulence/source.php. You will find some documentation there as well.
  • KPRKPR Posts: 189
    edited 2009-05-11 21:31
    hop.gifhop.gifhop.gifhop.gif

    Wow.. I know what I'll be doing for the next few days...

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    New ICON coming, gotta wait for the INK to heal, now we have colour!
  • ShazzShazz Posts: 52
    edited 2009-05-12 07:15
    Linus Akesson said...
    Great work, kuroneko! Thanks for putting up with my little game. =) And thanks to Shazz and everyone else who worked on it as well!

    Here is the source code as promised: www.linusakesson.net/scene/turbulence/source.php. You will find some documentation there as well.

    Thanks YOU Linus ! I had some great fun too, I tried to help Kuroneko as much as I can but basically he did most of the job and wasted his time to explain me a lot of stuff [noparse]:)[/noparse]
    At least it gave me the motivation to write some tools and yep I really discovered interesting things.... And thanks to Jazzed, MagIO2, Ale, Potatohead and friends who really helped at the beginning !

    Now time to make good use of this wonderful demo sourcecode and why not coding a new demo wink.gif A Forum Community demo for next BP would be great wink.gif And I'm curious to see what Kuroneko would be able to achieve.... a good challenger for Linus ! [noparse]:D[/noparse]

    Linus, 2 questions :
    - what is the format of your raw images ? (yes raw.. but... [noparse]:)[/noparse])
    - did you write a PC based tracker as you did for Craft ? Would be nice to have one plus a song player for the propeller, no ? [noparse]:)[/noparse]

    And if I forgot to say it, congrats again... amazing work in less than one year.... plasma looks very cool [noparse]:)[/noparse] Especially the automated constant pool management !

    Post Edited (Shazz) : 5/12/2009 7:20:16 AM GMT
  • Ahle2Ahle2 Posts: 1,179
    edited 2009-05-13 20:51
    Sorry Linus, i couldn't find the time to join these guys in their reverse engineering quest [noparse]:([/noparse]
    But Interestingly enough, almost all my assumption were right... as you might have seen in some early posts.

    Are you going to make another demo using the propeller or are you going to use yet another micro controller for your next release ?

    Anyway, it's nice to have another guy from Sweden at the same age as me here in the forum [noparse];)[/noparse]
  • Linus AkessonLinus Akesson Posts: 22
    edited 2009-05-14 18:59
    Ahle2 said...
    But Interestingly enough, almost all my assumption were right... as you might have seen in some early posts.

    Yeah, I remember. =) But I didn't want to confirm anything at the time, since that was more of an educated guess than reverse engineering.
    Ahle2 said...
    Are you going to make another demo using the propeller or are you going to use yet another micro controller for your next release ?

    I'm not planning another propeller demo for the time being. I've got some ideas for other propeller projects, though.
  • hinvhinv Posts: 1,255
    edited 2009-05-31 11:02
    Hi Linus,

    I just tried it out on my demo board, and I was quite impressed!

    I had a problem though. I have a microSD interface on pins 1through 4. If I left the card in it didn't look right. Are you passing data through those pins from cog to cog?

    Thanks,
    Doug
  • Toby SeckshundToby Seckshund Posts: 2,027
    edited 2009-05-31 11:30
    Doug

    It was noticed within minutes of its release that the i/o pins were being used. One person noted that it wouldnt run at all on his bd that had broken ports. On my early bd, which has the poor Prop that I reverse voltsed, the "Turbulance" banner glitches but the demo runs on ok. Something had to happen to the poor little beasy, I suppose blush.gif
  • SapiehaSapieha Posts: 2,964
    edited 2009-05-31 11:47
    Hi Linus Akesson.

    I run Yours Demo with 15MHz PLLx8 and it run fine on most parts but not on TUNNEL.
    In this part it is glitches in motion.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nothing is impossible, there are only different degrees of difficulty.
    For every stupid question there is at least one intelligent answer.
    Don't guess - ask instead.
    If you don't ask you won't know.
    If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


    Sapieha
  • hinvhinv Posts: 1,255
    edited 2009-05-31 15:50
    ..............oops, I should have read earlier that you posted the source. It seems you do use pin 0 through 7 as a databuss between the cogs.
  • Toby SeckshundToby Seckshund Posts: 2,027
    edited 2009-05-31 16:03
    Doug

    I have just re read my post about the I/O pins, I am sorry if it sounded a bit sharp. I only noticed so quickly because one of my backburnner projects is a Z80 nailed to a prop. I had built that board with lots of jumpers and status LEDs. I was using turbulance to test the Arduino type piggy back board out and noticed the light show. It is at about that level my understanding ends. smile.gif
  • potatoheadpotatohead Posts: 10,261
    edited 2009-05-31 16:04
    120Mhz exceeds the known safe clock speed. Proper function of all elements is guaranteed @ 80Mhz, and is commonly accepted to be reliable at 96Mhz, but with no guarantee.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Propeller Wiki: Share the coolness!
    Chat in real time with other Propellerheads on IRC #propeller @ freenode.net
    Safety Tip: Life is as good as YOU think it is!
  • Toby SeckshundToby Seckshund Posts: 2,027
    edited 2009-05-31 16:36
    Intel would tend to overproduce "good" chips but the market would only support those cutting edge seakers so a lot of full wack chips got underatted to fill the bulkof sales. This helped Intel to not have too many proc lying around and yet keep that top price for those that demanded it. Great for reliability, or overclockers. Amd tested and sold much nearer to the very best, that individual chip could handle.

    Pros may well be sold under their true limit in the interests of guarenteed results or it may be that now the fabrication is matured the good yield is better than original spec. Plenty of people have tested them since. 80MHz to 96MHz is a respectable hype at 20% with nobody reporting problems. To take the internal to 15MHz with pll8 shows that there is a vast margin available to those wishing to try, within much tighter enviromentals than spec of course.

    I once had an AVR chucking out 4 small pictures on a TV, then I realized that at 32MHz it was taking a 100% overclock
  • ProcessingData...ProcessingData... Posts: 208
    edited 2009-06-02 21:28
    Why is the sorce in .GZ format? With what program do you open it? I am itching to look at the code!

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Basic Stamp,···· Propeller,·· · SX,·· FUN!


    START:·
    >Proccessing Data. . . .··
    >Task Complete. . .·.
    >Saving Data. . . .
    >Entering SLEEP Mode. . . .
    >Signing OFF


    ·
  • cgraceycgracey Posts: 14,155
    edited 2009-06-02 22:42
    Linus,

    I just downloaded the .eeprom file and ran it for the first time on a Propeller Demo Board.

    Pretty amazing.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔


    Chip Gracey
    Parallax, Inc.
  • hover1hover1 Posts: 1,929
    edited 2009-06-02 22:57
    Hey! Chip came up for some air! Must be working on a pretty important project. Maybe Prop 2 [noparse]:)[/noparse]

    Didn't you help Linus on that demo? Your name was in the credits. I thought you saw the demo before we did.

    Jim
  • SapiehaSapieha Posts: 2,964
    edited 2009-06-02 23:16
    Hi Linus Akesson.

    Sorry if I have misused Yours code.

    Hi All

    For them that will test Linus Akesson's code with frequensies with PLLx8 that is 10-15MHz crystal.
    I post my reedited code to support that. It is same code but only edit in it is position that give Propeller PLLx and recalculated checksum.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nothing is impossible, there are only different degrees of difficulty.
    For every stupid question there is at least one intelligent answer.
    Don't guess - ask instead.
    If you don't ask you won't know.
    If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


    Sapieha
  • kuronekokuroneko Posts: 3,623
    edited 2009-06-03 00:11
    ProcessingData... said...
    Why is the sorce in .GZ format? With what program do you open it? I am itching to look at the code!
    Are you familiar with the gzip and tar command line tools? If not, IIRC the 7z frontend under win32 can deal with this kind of archive.
Sign In or Register to comment.