RCA ColorTrak TV (20 years old)
Moderator: Moderators
-
jon_armstrong
- Expert
- Posts: 1238
- Joined: Sun Aug 03, 2003 9:14 pm
- Location: R.I.P. 3/25/2005
- Contact:
-
usblipitor
- Posts: 516
- Joined: Fri Oct 10, 2003 10:06 pm
- Location: Greenbelt, MD
-
usblipitor
- Posts: 516
- Joined: Fri Oct 10, 2003 10:06 pm
- Location: Greenbelt, MD
It almost works! I am very impressed with that Jon! You really know your stuff!jon_armstrong wrote:Steve, I am surprised that it doesn't work.
Yes, I sure did!jon_armstrong wrote:But, I have seen stranger cases. Let me start with the basics. Did you upload my IR image in your 8810w directly?
It was already selected when I got there!jon_armstrong wrote:If you did the upgrade to your current configuration, did you select TV_1999 in the "General" tab?
BTW I have a side question: when I took your work and changed from 2 device bits/8 function bits to 3 device bits/7 function bits (I did this since the first 3 bits are always zero) the thing no longer worked. Is there somewhere else I need to change also?
Any idea why the numbers keep changing what they send (always send one of two numbers, like the 3 sends either 3 or 1 I think)
-
jon_armstrong
- Expert
- Posts: 1238
- Joined: Sun Aug 03, 2003 9:14 pm
- Location: R.I.P. 3/25/2005
- Contact:
Steve,
Try learning with the OEM remote and learn two succesive button pushes of the same command. Learn the Zero button to zero on your 8810. Then learn the Zero button again to the 1 button on the 8810. Repeat the process from OEM buttons 1 through 4. Those should then be on numerals 2 through 9 on the 8810.
Steve on the 2/8 or 3/7 arrangement -- and the reason I choose 2/8 -- is that UEIC protocols always start at the top bit when using less than 8 bits. If you take the function values calculated in 2/8 and multipy by 2 then it would work. Basically you are moving everything over one bit to the left and placing a zero in the bottom bit that is ignored.
The reason is that most protocols use LSB first and the bits are "backwards" 10000000 is ONE (not 128) in LSB first. So in that case ONE will always be correct in any byte width>0.
Try learning with the OEM remote and learn two succesive button pushes of the same command. Learn the Zero button to zero on your 8810. Then learn the Zero button again to the 1 button on the 8810. Repeat the process from OEM buttons 1 through 4. Those should then be on numerals 2 through 9 on the 8810.
Steve on the 2/8 or 3/7 arrangement -- and the reason I choose 2/8 -- is that UEIC protocols always start at the top bit when using less than 8 bits. If you take the function values calculated in 2/8 and multipy by 2 then it would work. Basically you are moving everything over one bit to the left and placing a zero in the bottom bit that is ignored.
The reason is that most protocols use LSB first and the bits are "backwards" 10000000 is ONE (not 128) in LSB first. So in that case ONE will always be correct in any byte width>0.
-Jon
-
usblipitor
- Posts: 516
- Joined: Fri Oct 10, 2003 10:06 pm
- Location: Greenbelt, MD
Hi Jon,
You and Jason (and John) are excellent teachers. Words cannot express my thanks for explaining LI, LO, one, zero, etc, and pointing me at the protocol_builder_spreadsheet. It is interesting and fun to learn more and more about JP1.
I discovered that sometimes the 8810w remote will work properly, but after a few minutes of channel changing with the number keys, the problem starts in again. Once the problem begins, even the OEM remote does not change channels correctly. After several minutes of the TV being off, or waiting for afew minutes, or maybe it is the phase of the moon
, things are working again. When using the OEM remote and having things working ok, the weird problem never starts. But using the 8810w and pressing channel digits, eventually the problem starts. My theory, which is probably wrong, is that somehow having the correct LI burst pair keeps the IR receiver happy. Since the original remote sends the LI, it never causes the problem to start. The 8810w does not send the LI, so my theory is that without the LI, the IR receiver eventually becomes unhappy and goes into a corrupt mode where it does not interpret the signal correctly. My theories are usually wrong, BTW 
Happy Holidays,
You and Jason (and John) are excellent teachers. Words cannot express my thanks for explaining LI, LO, one, zero, etc, and pointing me at the protocol_builder_spreadsheet. It is interesting and fun to learn more and more about JP1.
OK, I did this, and the learned signals are identical on 0,1 ("0"); 2,3 ("1"); 4,5 ("2"); 6,7 ("3"), and 8,9 ("4"), so not much help to us in this case, but it was a good thought and worth a try.jon_armstrong wrote:Try learning with the OEM remote and learn two succesive button pushes of the same command. Learn the Zero button to zero on your 8810. Then learn the Zero button again to the 1 button on the 8810. Repeat the process from OEM buttons 1 through 4. Those should then be on numerals 2 through 9 on the 8810.
I discovered that sometimes the 8810w remote will work properly, but after a few minutes of channel changing with the number keys, the problem starts in again. Once the problem begins, even the OEM remote does not change channels correctly. After several minutes of the TV being off, or waiting for afew minutes, or maybe it is the phase of the moon
Happy Holidays,
That theory sounds exactly right to me.
Jon usually does better than I do at making PB alone generate the right thing, so he might still think of some trick I've forgotten. But I'm pretty sure PB alone can't do this right.
I was hoping to find time for the following approach (but don't know when I will):
Use PB to create the protocol for just the first frame, without leadout.
Hand patch the output of PB adding ASM code to:
1) Call the ROM routine to transmit just one frame.
2) Patch the parameters to change the Lead in
3) Maybe it is OK to just jump to the normal routine at that point.
or maybe the first patch needs to set the new lead in as both lead in and lead out, then call single frame once more, then patch the new lead in to be lead out only and finally jump.
Jon usually does better than I do at making PB alone generate the right thing, so he might still think of some trick I've forgotten. But I'm pretty sure PB alone can't do this right.
I was hoping to find time for the following approach (but don't know when I will):
Use PB to create the protocol for just the first frame, without leadout.
Hand patch the output of PB adding ASM code to:
1) Call the ROM routine to transmit just one frame.
2) Patch the parameters to change the Lead in
3) Maybe it is OK to just jump to the normal routine at that point.
or maybe the first patch needs to set the new lead in as both lead in and lead out, then call single frame once more, then patch the new lead in to be lead out only and finally jump.
-
usblipitor
- Posts: 516
- Joined: Fri Oct 10, 2003 10:06 pm
- Location: Greenbelt, MD
any readme files out there that talk about how to do this? For me, the best way to learn about something is to have a project and do it, but in this case I am not sure where to start. I used to be able to write small fast code in assembler and call it from (haha) GWBASIC, and do cool things on 8086 machines way back before I chose a different path in life. I should be glad. Knowing my curiousity about things, I probably would have gotten into some trouble. I would imagine that there were orders of magnitude more buffer overflow errors to be exploited in the early 1980s than there are today. 
-
jon_armstrong
- Expert
- Posts: 1238
- Joined: Sun Aug 03, 2003 9:14 pm
- Location: R.I.P. 3/25/2005
- Contact:
The only reason that I could do better (which is doubtful) is that my assembly language skills are very thin, so I don't have another choicejohnsfine wrote: Jon usually does better than I do at making PB alone generate the right thing, so he might still think of some trick I've forgotten. But I'm pretty sure PB alone can't do this right.
I agree, I can't see any way for PB can't do this one.
Steve, as far as referneces Rob posted "Fully commented source code for the NEC/5A protocol" in the files|protocol notes at the JP1 group and the S3C80 manuals http://groups.yahoo.com/group/jp1/links ... 991179289/ have the instruction set.
NEC has nothing to do with the RCA(ancient) -- sorry we already have an RCA (old) -- protocol, but it may give you some idea of how they work.
-Jon
I took a fairly wild stab at this
Upgrade protocol 0 = 01 C1 (S3C8)
3E 87 11 8B 16 85 21 02 08 03 24 03 10 00 C9 05
6B 00 00 09 60 03 3E 0E 74 02 76 1C 22 F6 01 4C
8D 01 46
End
I tried a method I never tried before (plus I could have made other errors) so odds are it won't work. When I'm near a couple remotes again I'll learn from one to another and probably fine tune this.
Upgrade protocol 0 = 01 C1 (S3C8)
3E 87 11 8B 16 85 21 02 08 03 24 03 10 00 C9 05
6B 00 00 09 60 03 3E 0E 74 02 76 1C 22 F6 01 4C
8D 01 46
End
I tried a method I never tried before (plus I could have made other errors) so odds are it won't work. When I'm near a couple remotes again I'll learn from one to another and probably fine tune this.
-
jon_armstrong
- Expert
- Posts: 1238
- Joined: Sun Aug 03, 2003 9:14 pm
- Location: R.I.P. 3/25/2005
- Contact:
You already did a learn from one remote to another?
1) I used Lead-Out style 1 instead of the "Burst Mid-Frame" to create the Lead out. That just simplifies things a little, it shouldn't change the results of what you did.
2) I added an extra burst pair definition for the one-time lead in (manually inserted it after all the ones defined by PB and changed the initial JR to take it into accout).
3) I added two instructions
LD W1, #22
CALL 014C
which do a raw send of a single burst pair. The #22 identifies which burst pair definition to send and is the number for the one I added.
I wasn't sure that you could transition smoothly from sending a burst pair this raw way to sending the rest the ordinary way. I thought it might add some delay on that boundary (make the off time of that first burst longer than it should have been).
1) I used Lead-Out style 1 instead of the "Burst Mid-Frame" to create the Lead out. That just simplifies things a little, it shouldn't change the results of what you did.
2) I added an extra burst pair definition for the one-time lead in (manually inserted it after all the ones defined by PB and changed the initial JR to take it into accout).
3) I added two instructions
LD W1, #22
CALL 014C
which do a raw send of a single burst pair. The #22 identifies which burst pair definition to send and is the number for the one I added.
I wasn't sure that you could transition smoothly from sending a burst pair this raw way to sending the rest the ordinary way. I thought it might add some delay on that boundary (make the off time of that first burst longer than it should have been).
-
jon_armstrong
- Expert
- Posts: 1238
- Joined: Sun Aug 03, 2003 9:14 pm
- Location: R.I.P. 3/25/2005
- Contact:
Yes I did learn the commands, for numeral 1:
Once:
+7374 -1322 +400 -2814 +400 -2814 +400 -2814 +1600 -1614 +1600 -1614 +400 -2814 +400 -2814 +400 -2814 +1600 -1614 +1600 -1614 +4774 -1722
Repeat:
+400 -2814 +400 -2814 +400 -2814 +1600 -1614 +1600 -1614 +400 -2814 +400 -2814 +400 -2814 +1600 -1614 +1600 -1614 +4774 -1722
Maybe the off time is a little long I think it averaged about 1200 in the learned comands but that is from memory and I don't think I calculated it.
Once:
+7374 -1322 +400 -2814 +400 -2814 +400 -2814 +1600 -1614 +1600 -1614 +400 -2814 +400 -2814 +400 -2814 +1600 -1614 +1600 -1614 +4774 -1722
Repeat:
+400 -2814 +400 -2814 +400 -2814 +1600 -1614 +1600 -1614 +400 -2814 +400 -2814 +400 -2814 +1600 -1614 +1600 -1614 +4774 -1722
Maybe the off time is a little long I think it averaged about 1200 in the learned comands but that is from memory and I don't think I calculated it.
-Jon
-1322 is enough longer than what I tried for that I think it does show the transition isn't smooth. That could be hard to cover for in some faster protocols where I'd also like to try this trick. It also likely means that the old S3C80 remotes will show a timing difference vs. the new ones. I'll need to experiment a little to see if all that is real.
Meanwhile, the 02 76 near the middle of the protocol is that value. If we reduce that number a little it ought to average close enough to correct to satisfy the real device. (here I'm reducing it to 02 3A).
Upgrade protocol 0 = 01 C1 (S3C8)
3E 87 11 8B 16 85 21 02 08 03 24 03 10 00 C9 05
6B 00 00 09 60 03 3E 0E 74 02 3A 1C 22 F6 01 4C
8D 01 46
End
Meanwhile, the 02 76 near the middle of the protocol is that value. If we reduce that number a little it ought to average close enough to correct to satisfy the real device. (here I'm reducing it to 02 3A).
Upgrade protocol 0 = 01 C1 (S3C8)
3E 87 11 8B 16 85 21 02 08 03 24 03 10 00 C9 05
6B 00 00 09 60 03 3E 0E 74 02 3A 1C 22 F6 01 4C
8D 01 46
End
-
jon_armstrong
- Expert
- Posts: 1238
- Joined: Sun Aug 03, 2003 9:14 pm
- Location: R.I.P. 3/25/2005
- Contact:
I had actually tested the first ones in a 1994. Here are the results from the SECOND protocol upgrade in an 8811 for the one time lead-in:
+7410 -1170
I tested Numerals 1,2, and 3 and they were identical.
On the SECOND protocol upgrade using the 1994 Numerals 1 and 2 were:
+7386 -1188
and three was:
+7350 -1224
+7410 -1170
I tested Numerals 1,2, and 3 and they were identical.
On the SECOND protocol upgrade using the 1994 Numerals 1 and 2 were:
+7386 -1188
and three was:
+7350 -1224
-Jon
-
jon_armstrong
- Expert
- Posts: 1238
- Joined: Sun Aug 03, 2003 9:14 pm
- Location: R.I.P. 3/25/2005
- Contact:
BTW, I calculated the average time for the original learned commands:
7463 -1064
I tried 01 FA on the 8811 and got:
+7410 -1042
If you, John, think that is close enough I added 0xF for 02 09, then Steve it is:
Upgrade protocol 0 = 01 C1 (S3C8)
3E 87 11 8B 16 85 21 02 08 03 24 03 10 00 C9 05
6B 00 00 09 60 03 3E 0E 74 02 09 1C 22 F6 01 4C
8D 01 46
End
7463 -1064
I tried 01 FA on the 8811 and got:
+7410 -1042
If you, John, think that is close enough I added 0xF for 02 09, then Steve it is:
Upgrade protocol 0 = 01 C1 (S3C8)
3E 87 11 8B 16 85 21 02 08 03 24 03 10 00 C9 05
6B 00 00 09 60 03 3E 0E 74 02 09 1C 22 F6 01 4C
8D 01 46
End
-Jon