Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
03/06/09 16:59
Modified:
  03/06/09 17:01

Read: times


 
#163172 - Back to square one. First experiment with fast output
Responding to: ???'s previous message
Sorry, I don't have time to read all code and comment on it - or write examples but a couple of things.

I think we should wait with discussing any ring buffer for now. You don't have any need of a ring buffer before you have the basic steps working ok.

1) As laready mentioned, your current-limiting resistors are mounted incorrecty. You should have one 47 ohm resistor for each column, not for each row. Why? Because each column will only light one LED at a time, and you want a constant number of lit LED to share the resistor. Your row drive on the other hand will have different number of LED lit depending on what you display. Before you make this change, the light intensity of the individual LED in a scanline will vary depending on the displayed pattern. So start by fixing your electronics.

2) Always think in full bytes when you think about algorithsm (or for larger processors think of 16-bit or 32-bit or 64-bit block sizes for your arrays). Your processor don't think 5 bits are fun to play with. It either works on a single (1) bit, or it works on a full byte of eight (8) bits.

3) Your processor is not a fast general-purpose processor. But it is a very fast bit-processing processor. Don't use one byte/pixel for your character sets or for your bitmaps. One LED = one bit. Then you can store 8 pixels in a single byte. But you have to spend time thinking about if one byte should store one column of 8 LED, or if it should store 8 LED from a scanline. Storing one byte / scanline makes scrolling easier. Storing 8 pixels from same scanline in a byte makes output to the matrix faster.

A scanline is 80 pixels long. That is 10 bytes.
A frame buffer - bitmap for the full message - must then be 8*10 = 80 bytes. Since you have two text lines, you will finally end up with 160 bytes for the data to display.

As I wrote in an earlier post in this thread, I think you should start by focusing on writing code that will emit a pre-built bitmap as fast as you can. That will give you an indication of how much time your processor will need to drive a 80x16 matrix. If that figure gets above 50% of your total CPU capacity, it is time to sit down and think about using a different processor - either one running at a higher clock frequency, or running with fewer clock cycles/instruction.

In another thread (remember that you have several concurrent threads active) where you had problems with your interrupts I suggested that you should use a loop-unrolled sequence to emit 8 bits at a time to the shift register.

For this step, create two 80x8 bitmaps (one for each text line) designed with the data stored in scanlines, i.e. let the first 10 bytes store the data for the top scanline. The next 10 bytes store the next scanline.

Your output loop would then do:
- Set pointer p1 to point at the first byte of your first 80 byte large bitmap buffer.
- Set pointer p2 to point at the first byte of your second 80 byte large bitmap buffer.
- Repeat the following 10 times (10*8 = 80 pixels in a scanline)
* Pick up one byte from first array and store in bitmapped byte 1 and increment pointer p1.
* Pick up one byte from second array and store in bitmapped byte 2 and increment pointer p2.
* Assign bit0 of the bitmapped byte 1 to the top-line shift register data line.
* Assign bit0 of the bitmapped byte 2 to the bottom-line shift register data line.
* Activate clock of shift registers.
* Deactivate clock of shift registers.
* Assign bit1 of the bitmapped byte 1 to the top-line shift register data line.
* Assign bit1 of the bitmapped byte 2 to the bottom-line shift register data line.
* Activate clock of shift registers.
* Deactivate clock of shift registers.
* ...
* Assign bit7 of the bitmapped byte 1 to the top-line shift register data line.
* Assign bit7 of the bitmapped byte 2 to the bottom-line shift register data line.
* Activate clock of shift registers.
* Deactivate clock of shift registers.
- Wait until your timer signal the time to emit next scan line.
- Deactivate all row-drive transistors.
- Activate latch bit of shift registers.
- Deactivate latch bit of shift registers.
- Activate topmost row-drive transistors for both top and bottom text lines.
- Your p1 and p2 have now both stepped 10 bytes (a full scanline) in your two bitmapps.
- Repeat the following 10 times (10*8 = 80 pixels in a scanline)
* Pick up one byte from first array and store in bitmapped byte 1 and increment pointer p1.
* Pick up one byte from second array and store in bitmapped byte 2 and increment pointer p2.
* Assign bit0 of the bitmapped byte 1 to the top-line shift register data line.
* Assign bit0 of the bitmapped byte 2 to the bottom-line shift register data line.
* Activate clock of shift registers.
* Deactivate clock of shift registers.
* ...
- Wait until your timer signal the time to emit next scan line.
- Deactivate all row-drive transistors.
- Activate latch bit of shift registers.
- Deactivate latch bit of shift registers.
- Activate second row-drive transistor for for both top and bottom text lines.
- Repet the above steps until all 8 scan-lines have been emitted and displayed.
- Restore p1 and p2 to point at the start of the two bitmaps.

The above represent a fast way to drive your shift registers. The majority of this code can be done in your main application - it is enough that your scanline interrupt does the switching part, i.e deactivate row-drive, latch the shift register, activate row-drive for next scanline.

Your main loop can do the bit-shifting, just as long as it makes sure that it has shifted out all data before the next scan-line interrupt.

If the above works well, then you can spend time thinking about how to build the bitmap instead of running with a fixed bitmap. You might possibly move all of the output code to an interrupt if you do not have other interrupts that are critical to serve. But you may also implement a state machine in the main loop, where it checks if a line switch has been made. If so, it shifts out a new scanline before doing work building a new bitmap (to a second set of 2*80 byte bitmap buffers). In this case, the main loop can't build a full bitmap in one pass, but must process a few characters at a time before checking a scanline interrupt flag to emit the next scanlines. All in all, the percentage of CPU time left from the output code is what you have to build new bitmaps.

The above output code was for data stored in scanline order. You may also test yourself to rewrite the code and output data stored in columns. The output code will be slower, but horisontal scrolls will be way easier. When you learn how to use a circular output buffer, you will not need to rebuild the output buffer between each scroll step. With a circular output buffer, it will be enough to rebuild the bitmap when you have received new data from the serial port.

List of 307 messages in thread
TopicAuthorDate
Scrolling Message in LED Display with 8051??            01/01/70 00:00      
   2 separate problems            01/01/70 00:00      
   the simple way            01/01/70 00:00      
      didnot get you            01/01/70 00:00      
         Standard circular buffer            01/01/70 00:00      
            Thanks            01/01/70 00:00      
               Flickering in scrolling            01/01/70 00:00      
                  Clip to viewport            01/01/70 00:00      
                     Testing on 8x8 display.            01/01/70 00:00      
                        Write fastest loop and count instructions            01/01/70 00:00      
                           Any other suggestions            01/01/70 00:00      
                              yes and no            01/01/70 00:00      
                                 Frankly speaking            01/01/70 00:00      
                                    time, time, time            01/01/70 00:00      
                              You should investigate old-style monochrome video adapters            01/01/70 00:00      
                                 but pretty close            01/01/70 00:00      
                                    not wishing to start a debate ...            01/01/70 00:00      
                                       pixel rate            01/01/70 00:00      
                                          Yes, that's true, but it's irrelevant            01/01/70 00:00      
                                             Persistence matters, and algorithm            01/01/70 00:00      
                                                I believe there's a difference in approach here            01/01/70 00:00      
                                                   Shift registers to drive rows, not columns.            01/01/70 00:00      
                                                      ...which is why they don'tfit this sort of application            01/01/70 00:00      
                                                         Think about pulse quota when multiplexing            01/01/70 00:00      
                                                            Yes, the multiplexing affects ultimate brightness ...            01/01/70 00:00      
                                                               never heard of 2 lines???            01/01/70 00:00      
                                                                  Yes, but most people can only read one at a time            01/01/70 00:00      
                                                                     16 pix            01/01/70 00:00      
                                                                        It's news to me ...            01/01/70 00:00      
                                                                           Good with forums            01/01/70 00:00      
                                                      Do you mean a REGISTERED shift register?            01/01/70 00:00      
                                                         Yes            01/01/70 00:00      
                                                            Absolutely!            01/01/70 00:00      
                                                         never seen one            01/01/70 00:00      
                                                      That's the answer i was looking for...            01/01/70 00:00      
                                       one can change the colour on an LED            01/01/70 00:00      
                                       a monochrome display has one LED per pixel            01/01/70 00:00      
                                          It is seldom so simple as one would like            01/01/70 00:00      
                                             I too read 8x8 as pixels/LEDs. However, probelm with scroll            01/01/70 00:00      
                                                Please leave that CRT            01/01/70 00:00      
                                                   But we area focused            01/01/70 00:00      
                                                   Chequebook time!            01/01/70 00:00      
                                                   You haven't told us anything useable!            01/01/70 00:00      
                                                      The Information            01/01/70 00:00      
                                                      The Information            01/01/70 00:00      
                                                         Mr. amir            01/01/70 00:00      
                                                      The Information            01/01/70 00:00      
                                                      The Information            01/01/70 00:00      
                                                      The Information            01/01/70 00:00      
                                                         Quoting Andy on this            01/01/70 00:00      
                                                            re the rating of "Quoting Andy on this"            01/01/70 00:00      
                                                               LOL            01/01/70 00:00      
                                                                  It was me, Per...            01/01/70 00:00      
                                                                     Feedback            01/01/70 00:00      
                                                                        I agree with you in all points, but...            01/01/70 00:00      
                                                                           I agree, Kai --- in most cases ...            01/01/70 00:00      
                                                                              Kick-starting threads do require some form of pushing            01/01/70 00:00      
                                                         That will be UGLY            01/01/70 00:00      
                                                            Not necessarily...            01/01/70 00:00      
                                                         That is not ALL the information.            01/01/70 00:00      
            Looked at circular buffer yet?            01/01/70 00:00      
   Has anyone looked at Allegro?            01/01/70 00:00      
      A specific chip for the shift-register solution            01/01/70 00:00      
         Think about total power loss            01/01/70 00:00      
            you tell me            01/01/70 00:00      
      the A6833 and similar offerings            01/01/70 00:00      
   Code, problem, information and schematic.            01/01/70 00:00      
      BU4094 is fast enough, but...            01/01/70 00:00      
         look at 74HC595            01/01/70 00:00      
            Yes, and not to forget the 74HC4094...            01/01/70 00:00      
               and 80 resistors            01/01/70 00:00      
                  Mickey Mousing?? Availibility!            01/01/70 00:00      
                     my absolute impression ...            01/01/70 00:00      
                        Almost total silence            01/01/70 00:00      
                           ??            01/01/70 00:00      
                              How to activate Aamir?            01/01/70 00:00      
                                 I don't want to activate Aamir!            01/01/70 00:00      
                                    Yes, most comments here are free-running without the OP            01/01/70 00:00      
                                       Maybe the wrong sorts of questions were asked            01/01/70 00:00      
                        Let's see what the O/P wants to do            01/01/70 00:00      
                           with the amount of effort the OP shows ....            01/01/70 00:00      
                              What you have failed to consider ...            01/01/70 00:00      
                                 did you read            01/01/70 00:00      
                                    Yes, I did!            01/01/70 00:00      
                        And my absolute impression is...            01/01/70 00:00      
                           why should I do that?            01/01/70 00:00      
                              I have to agree            01/01/70 00:00      
                  What does it cost? How many would be needed?            01/01/70 00:00      
                     Exactly!            01/01/70 00:00      
                     ST2221 EQUIVALENT            01/01/70 00:00      
                        It's not widely available in the developing world            01/01/70 00:00      
                           Max power loss at high ambient temperatures            01/01/70 00:00      
                              Interesting point ... but ...            01/01/70 00:00      
                                 8- or 16-bit drivers for different applications            01/01/70 00:00      
                           because            01/01/70 00:00      
                              Is this a chicken and egg sort of question?            01/01/70 00:00      
                                 Different chips for different problems            01/01/70 00:00      
                                 no, applea and oranges            01/01/70 00:00      
                                    Isn't that a design parameter?            01/01/70 00:00      
                                       Physics and practical realities            01/01/70 00:00      
                                          In some cases, perhaps LED's are not the right technology            01/01/70 00:00      
                                       and what does all that to do with ....            01/01/70 00:00      
                                          They have to remain within specified limits.            01/01/70 00:00      
                                             Still missing muxed concept            01/01/70 00:00      
                                                No ... I'm not missing the concept ...            01/01/70 00:00      
                                                   yes you are            01/01/70 00:00      
                                                      You're thinking too narrowly, methinks.            01/01/70 00:00      
                                                         no, you are muddling            01/01/70 00:00      
                                                            It's just another way to manage a big sign            01/01/70 00:00      
                                                               not so, back at ya            01/01/70 00:00      
                                                                  PWM or shorter on times.            01/01/70 00:00      
                                                                  There's more than one way to skin a cat            01/01/70 00:00      
                                                                     Start producing signs.            01/01/70 00:00      
                                                                        Those arguments are weak!            01/01/70 00:00      
                                                                           not for those that have an inkling of understanding            01/01/70 00:00      
                                                                              So ... how fast can you clock 'em?            01/01/70 00:00      
                                                                                 if you had read and not muddled....            01/01/70 00:00      
                                                                                    Not Bad ! That IS a lot more reasonable!            01/01/70 00:00      
                                                                                       why on earth would you want to do that            01/01/70 00:00      
                                                                                          If a little bit is good, sometimes more is better ...            01/01/70 00:00      
                                                                                             you might, I wouldn't            01/01/70 00:00      
                                                                                                I can envision such a thing ... but I don't build signs            01/01/70 00:00      
                                                                                                   I feel the need to SHOUT            01/01/70 00:00      
                                                                                                      Time to get back to scrolling            01/01/70 00:00      
                                                                                                         as long as the CC drives one pixel            01/01/70 00:00      
                                                                                                            Don't everyone love a DC-driven sign?            01/01/70 00:00      
                                                                                                               In the interest of discussion ...            01/01/70 00:00      
                                                                                                                  get your head out of your ....            01/01/70 00:00      
                                                                                                                     consider ALL the alternatives ...            01/01/70 00:00      
                                                                                                                        Inkling?            01/01/70 00:00      
                                                                                                                           It comes down to why this is being discussed            01/01/70 00:00      
                                                                                                                              Where is the progress?            01/01/70 00:00      
                                                                                                                                 Robert Erlacher ??            01/01/70 00:00      
                                                                                                                                    Oops            01/01/70 00:00      
                                                                                                                                 Let's leave irrelevant issues out ... for now            01/01/70 00:00      
                                                                                                                                    Quote examples            01/01/70 00:00      
                                                                                                                                       No citation needed!            01/01/70 00:00      
                                                                                                            ... about that schematic ...            01/01/70 00:00      
                                                                                                               Still thinking single diode            01/01/70 00:00      
                                                                                                                  It doesn't HAVE to be done in a conventional granularity            01/01/70 00:00      
                                                                                                               I do not think so            01/01/70 00:00      
                                                                        One other thing ...            01/01/70 00:00      
                                                                     THAT IS what PWM does            01/01/70 00:00      
                                                                        For that, you don't need dedicated hardware            01/01/70 00:00      
                                                                           never said so            01/01/70 00:00      
                                                                              Give the customer value while making money            01/01/70 00:00      
                                                                                 A lot of intersting issues have been forced to the surface            01/01/70 00:00      
                                                                                    Go for KISS            01/01/70 00:00      
                                             fruit salad            01/01/70 00:00      
                                                Not exactly ... I think you're ignoring the point            01/01/70 00:00      
                                                   this is where you are confoosed            01/01/70 00:00      
                                                      There's nothing confusing about the procedure            01/01/70 00:00      
                                                         NO, NO, NO            01/01/70 00:00      
                                                            Yes, non-mpx is probably easier ...            01/01/70 00:00      
                                                         Resistor on varying-current side? Hot, hot, hot            01/01/70 00:00      
                                                   Please forget CRT            01/01/70 00:00      
      why this complex, why so enamored by darlingtons?            01/01/70 00:00      
         Of course, your Allegro thingis would perfectly fit...            01/01/70 00:00      
            not the transistors, the ULN in the columns            01/01/70 00:00      
      Back to square one. First experiment with fast output            01/01/70 00:00      
      Power is not Sufficient            01/01/70 00:00      
         Semi-correct            01/01/70 00:00      
      Sorry guys            01/01/70 00:00      
   Switch statement            01/01/70 00:00      
      ULN2803 ????            01/01/70 00:00      
         WHY?????            01/01/70 00:00      
         The 2803's OK ... with a current source Anode driver            01/01/70 00:00      
            Yes, unless high cathode currents...            01/01/70 00:00      
               If he's sinking current from, at most, 16 cathodes ...            01/01/70 00:00      
                  Not 16 at a time. 0 or 1 for column. 0..80 for row            01/01/70 00:00      
                     I got it from the O/P's first post            01/01/70 00:00      
                        But you don't do 80:1            01/01/70 00:00      
                           I couldn't have said it better myself!            01/01/70 00:00      
                     Code hang-ups...            01/01/70 00:00      
                        Watchdog is nice            01/01/70 00:00      
                        not a 'bright' idea            01/01/70 00:00      
                           Yes, muxed displays requires high currents to not be dim            01/01/70 00:00      
            which varies by a factor of 1:80            01/01/70 00:00      
               It's not dirt-simple, but it's not rocket-science, either            01/01/70 00:00      
                  first/second????            01/01/70 00:00      
                  evidently it is            01/01/70 00:00      
                     I just came to think of this quiz            01/01/70 00:00      
   Happy three months            01/01/70 00:00      
      It didnot work for me again.....            01/01/70 00:00      
         are you familiar with Ohms law            01/01/70 00:00      
         Write test-code for driving the diodes            01/01/70 00:00      
         I'm afraid to tell you,...            01/01/70 00:00      
            Don't shift so much            01/01/70 00:00      
               Yes, he must shift byte-wise...            01/01/70 00:00      
                  The alternative...            01/01/70 00:00      
                     Try this, Aamir...            01/01/70 00:00      
                        Thanks Sir.......            01/01/70 00:00      
                        I knew someone would do his work for him!            01/01/70 00:00      
                           Yes, and it was fun!            01/01/70 00:00      
                              Yes, of course ... but they were far too complex            01/01/70 00:00      
                                 I'm really sorry that they were "far too complex"...            01/01/70 00:00      
                                    one step at a time            01/01/70 00:00      
                                       All many of these guys want is someone to do their work            01/01/70 00:00      
                                       Big-bang            01/01/70 00:00      
                                          Lessons learned            01/01/70 00:00      
                                             Lessons...            01/01/70 00:00      
                                                the difference            01/01/70 00:00      
                                                   He learns and learns and learns...            01/01/70 00:00      
                                                      that would be true            01/01/70 00:00      
                                                         That's the point...            01/01/70 00:00      
                                                            show me one            01/01/70 00:00      
                                                      Only feedback tells where the correct level is            01/01/70 00:00      
                                                Knowledge is still the morst valuable gift            01/01/70 00:00      
                                                   You really never had a look at something bigger??            01/01/70 00:00      
                                                      Read what I write, not what you want me to write            01/01/70 00:00      
                                                         Sorry, Per, but...            01/01/70 00:00      
                                                            Atleast give OP some time            01/01/70 00:00      
                                                               male cow manure            01/01/70 00:00      
                                                               This guy is a STUDENT! And probably a lazy one.            01/01/70 00:00      
                                                                  Poor...            01/01/70 00:00      
                                                                     It should be a career-ender            01/01/70 00:00      
                                                               Ignorance is bliss?            01/01/70 00:00      
                                                                  Is this a Social Work forum?            01/01/70 00:00      
                                                                     Is this a Social Work forum? - no            01/01/70 00:00      
                                                                        ethical behaviour            01/01/70 00:00      
                                                                           Good elbows...            01/01/70 00:00      
                                                                              Some people are just lazy, and think they're entitled.            01/01/70 00:00      
                                                                              Robots has no feelings            01/01/70 00:00      
                                                                     Where do you put the limit?            01/01/70 00:00      
                                                                        Its not the point            01/01/70 00:00      
                                                                           Prove your point!            01/01/70 00:00      
                                                                              point of disagreement ?            01/01/70 00:00      
                                                                                 Teflon-avoidance of arguments            01/01/70 00:00      
                                                                                    back to the old one            01/01/70 00:00      
                                                                                 There must be a willingness to do the work!            01/01/70 00:00      
                                                                                    a nasty thought            01/01/70 00:00      
                                          by silence the OP has admitted            01/01/70 00:00      
                                             He has admitted??            01/01/70 00:00      
                                                it is a known fact that            01/01/70 00:00      
                                                   Do you think, that I aggree if I don't reply...            01/01/70 00:00      
                                                      yes, IF            01/01/70 00:00      
                                                It may not have been in this thread            01/01/70 00:00      
                                                   Plain bogus...            01/01/70 00:00      
                                                   School projects always problematic            01/01/70 00:00      
                                                      This is a recurring theme            01/01/70 00:00      
                                                         Regular on Keil too            01/01/70 00:00      
                                    Well, too many components            01/01/70 00:00      
                                    I was looking for a product I could buy, not a work-product.            01/01/70 00:00      
      And still stuck on the basics            01/01/70 00:00      
   This one's not too costly!            01/01/70 00:00      
      Nice one            01/01/70 00:00      
   facts            01/01/70 00:00      
   Silence talks...            01/01/70 00:00      
      It's because the due-date of his assignment has passed            01/01/70 00:00      
         No the OP, but the two drive-by-shooters            01/01/70 00:00      
            For Per Westermark            01/01/70 00:00      
            "Drive-by-shooters"? Are you cuckoo??            01/01/70 00:00      
               I think that was the basic problem            01/01/70 00:00      
                  Yes, and as we do not know the state of knowledge...            01/01/70 00:00      
                     Once more you focus on bowing and other nonsense            01/01/70 00:00      
                        Do you feel better now??            01/01/70 00:00      
                           Why?            01/01/70 00:00      
                              Answers...            01/01/70 00:00      
                                 Try looking from the other direction            01/01/70 00:00      
                                    Forum rules...            01/01/70 00:00      
                                       Constant misunderstandings, or kicking in open doors            01/01/70 00:00      
                                          bow? no, but questions should be answered.            01/01/70 00:00      
                     but we do            01/01/70 00:00      
                        Making mistakes and confusing things...            01/01/70 00:00      
                           Missing help?            01/01/70 00:00      
                              Why do you all the time interfere in...            01/01/70 00:00      
                                 When we ask an O/P a question ...            01/01/70 00:00      
                                    But that's it, Richard!            01/01/70 00:00      
                                       You're right, Kai, but not in the way that you might think            01/01/70 00:00      
                                 Can't see "not helped"            01/01/70 00:00      
                                    I'm tired, Per...            01/01/70 00:00      
                                       Weapons down Kai :)            01/01/70 00:00      
                                       we all are            01/01/70 00:00      
                                          we all are -            01/01/70 00:00      
                                             So enumerate the factual errors then            01/01/70 00:00      
                                                You were wrong            01/01/70 00:00      
                                                   I wish that someday ...            01/01/70 00:00      
                                                      I wish that someday ... Is that so            01/01/70 00:00      
                                                         And your argument was?            01/01/70 00:00      
                                                            Example            01/01/70 00:00      
                                                               Just curious            01/01/70 00:00      
                                                                  No reverse way just wanted to show            01/01/70 00:00      
                                                                     assisted != having others to do the job            01/01/70 00:00      
                                                                        From this at least it dosent make            01/01/70 00:00      
                                                                           Come on, now, Ap Charles ...            01/01/70 00:00      
                                                                              Have you read what Aamir wrote?            01/01/70 00:00      
                                                                                 Yes, it looks like part of the assignment spec            01/01/70 00:00      
                                                                                    Assignment specs? Hardly...            01/01/70 00:00      
                                                                                       I guess we see different things in the quoted post            01/01/70 00:00      
                                                                                          These are good arguments...            01/01/70 00:00      
                                                                                             We'll never know for certain            01/01/70 00:00      
                                                                                       switch not the big problem            01/01/70 00:00      
                                                                                          Direct and Indirect calls            01/01/70 00:00      
                                                                                             Size of feet?            01/01/70 00:00      
                                                                                                I can see your point            01/01/70 00:00      
                                                                                                   Probably yet another language problem            01/01/70 00:00      
                                                                                                      The O/P has a part to play, as do we of 8052.COM            01/01/70 00:00      
                                                                                                      Yes            01/01/70 00:00      
                                                                                          Oh dear, Per, please...            01/01/70 00:00      
                                                                                             In the eye of the beholder            01/01/70 00:00      
                                                                                                Sorry, I didn't want to hurt you!            01/01/70 00:00      
                                                                                 again, it is obvious            01/01/70 00:00      
                                                            Not big-bang solution, but snippet of code!            01/01/70 00:00      
                                                I'm not the only one who confuses things...            01/01/70 00:00      
                                                   Yes, language barrier            01/01/70 00:00      
                                                   Yes, it's true ...            01/01/70 00:00      
                           wrong question            01/01/70 00:00      

Back to Subject List