Quantel Ramcorder - Digital Video RAM Store - Page 1
Forum section: electronics / general

author: dexters_lab
author_rank: Unknown
timestamp: December 31, 2017, 11:59:19 am
content: Just wanted to make a short post about my latest Quantel adventure as i thought some of you might find it interesting because it's certainly vintage!The Ramcorder is a device that connects to a quantel paintbox (video painting system) that allows short video clips to be made.It's connected to the paintbox by bt.601 digital video interfaces, either SDI or Parallel giving video in and out. The paintbox commands the Ramcorder to replay or record either single frames or real-time video through a RS232 control interface between the two.The ramcorder was introduced in 1989 as a companion to the also new V-Series Quantel Paintbox and would have been used to generate TV graphics for large TV networks by rendering frames of video in non-realtime and writing them to the ramcorder where effects can be composited. The ramcorder can store 323 PAL or NTSC video frames (720*576 PAL / 720*488 NTSC) uncompressed in a YUV16 format.Price i think would have been around £70,000 (after RAM prices settled in the early 1990s) so a Ramcorder + Paintbox system would have been around £140,000 when new.Inside the chassis are six large PCBs; a CPU board, video i/o board and four ram store boards.The CPU board contains a 6809 CPU, dual UART, diagnostics port, ROM and RAM.The video i/o board contains logic to read/modify data within the store boards, there are also two add-on boards that generate the bt601 video data in parallel form using programmable logic (FPGA/CPLD) and also convert that to serial (SDI) video using ST Micro STV1601 & STV1602 serialiser/de-serialiser pairs.The four store boards each contain 512 1megabit DRAMs making a total of 2048 in the system for 256MB total RAM. Ignoring the vias there are in excess of 10,000 through holes in the pcb.There is also a short video on it on my youtube channel, looking inside and in use.

author: timb
author_rank: Super Contributor
timestamp: January 01, 2018, 02:29:12 am
content: I can’t be the only one to be more than a little turned on by that RAM board... Right? Unbelievably cool.

author: Alex Eisenhut
author_rank: Super Contributor
timestamp: January 01, 2018, 05:22:22 am
content: It's unbelievable to see so many ZIP chips on one board. In the early '90s I would have fainted at the sight; my Amiga 3000 had sockets for 32 of them and I thought I was hot stuff!I remember the DRAM prices back then, I had to add memory a chunk at a time and figure out which ones would work. Something about fast page mode and whatever else back then not being compatible. EDO? Static column? Meh, who knows.The chips look like the regular array you can see in the window of EPROMS...

author: coppice
author_rank: Super Contributor
timestamp: January 01, 2018, 05:37:07 am
content: In the mid 80s we bought a 192MB DRAM buffer box, filled with 256k DRAM chips - 6144 chips. It cost over 100k pounds.

author: dexters_lab
author_rank: Unknown
timestamp: January 01, 2018, 06:01:23 pm
content: It is a bit of a bonkers device and so rare, it's amazing i managed to get one and have it workingHopefully when i get a hang of the animation functions of my paintbox i can create some retro style intros for my channel with itAs for ram, EDO if i recall was about the same as FPM but could output data in blocks, or something like that so gave a performance increase on sequential reads. I am sure someone will remember!

author: helius
author_rank: Super Contributor
timestamp: January 01, 2018, 06:21:43 pm
content: EDO is almost exactly the same as Fast Page Mode, but the output buffers stay active during the subsequent column access cycles (which gives the host more time to latch them and thus permits a faster access rate). Seehttps://www.ece.cmu.edu/~ece548/localcpy/dramop.pdf

author: Alex Eisenhut
author_rank: Super Contributor
timestamp: January 02, 2018, 03:30:22 am
content: Was there a closeup of the logic chips on the RAM PCBs? How do you drive so many inputs?

author: pieman103021
author_rank: Contributor
timestamp: January 02, 2018, 04:03:57 am
content: Thanks a ton for sharing this! These types of finds are so cool to see.

author: dexters_lab
author_rank: Unknown
timestamp: January 02, 2018, 10:18:15 am
content: Quote from: Alex Eisenhut on January 02, 2018, 03:30:22 amHmm good point, when i get back from my holidays in a couple of days i will grab some close up pics of that area

author: james_s
author_rank: Super Contributor
timestamp: January 10, 2018, 06:36:45 am
content: It's crazy that a board that large and dense would even work with the propagation delays, stray inductance and capacitance. Must have been fun trying to track down a bad RAM on one of those.

author: glarsson
author_rank: Frequent Contributor
timestamp: January 10, 2018, 08:41:18 am
content: Quote from: james_s on January 10, 2018, 06:36:45 amI worked at a company designing and building advanced image processing systems between 1983 and 1987. Our systems had memory boards of this size. The difference was that we used the common DIP version of DRAM and that we filled a couple of 19" racks with memory boards.I designed and built two test systems for these boards. One system doing burn in testing of a rack at a time and one system testing one board at a time. The smaller system was used to debug and repair faulty boards. The system could generate various patterns of accesses and then other test equipment such as a oscilloscope could be used to find the problems.Expensive systems...

author: dexters_lab
author_rank: Unknown
timestamp: January 10, 2018, 08:54:58 am
content: Quote from: james_s on January 10, 2018, 06:36:45 ami haven't had a chance to poke around and find the diagnostics menu that's built in, but i am pretty sure it has the ability to test and then indicate the physical location of faulty drams

author: Alex Eisenhut
author_rank: Super Contributor
timestamp: January 11, 2018, 01:53:09 am
content: I'd hate to be the guy stuck with removing one ZIP in the middle of the pack!

author: james_s
author_rank: Super Contributor
timestamp: January 11, 2018, 01:59:30 am
content: I suppose it depends on what else is on the board and how well thought out the test routine is, but in my experience repairing 70s-80s arcade boards it's common for the self test to indicate a bad RAM or ROM when the problem is actually in some other circuitry that interfaces with the RAM or ROM.

author: dexters_lab
author_rank: Unknown
timestamp: January 11, 2018, 08:54:01 am
content: Quote from: Alex Eisenhut on January 02, 2018, 03:30:22 amnearly forgot to do this!

author: dexters_lab
author_rank: Unknown
timestamp: January 11, 2018, 09:04:13 am
content: Quote from: Alex Eisenhut on January 11, 2018, 01:53:09 amyea, makes your eyes hurt trying to look at the solder side up close!!interestingly, i have in total seven of the ram store boards, four in the machine and three spares. They all seem to be the same PCB revision but there are different bodge wires on a few, some stringing entire columns of the DRAMs... so i wonder if this was to correct different manufacturing defects in the PCB, bad connections etc?it must have been a nightmare if they found a PCB defect after all those DRAMs were soldered in

author: Alex Eisenhut
author_rank: Super Contributor
timestamp: January 12, 2018, 01:58:22 am
content: A long time ago I had a PC video card with some weird ZIP video RAM chips on it. I had to jam it into my Amiga 3000 and I bent a ZIP chip slightly because the A3000 is very small and tight inside.I didn't like the look of the chip so I wanted to straighten it, and the body snapped off the leads.Oops.So I'd think that it would be tricky reaching in the middle of the pack without accidentally knocking other chips out.Plus desoldering on such a dense board would need good heat transfer.

author: james_s
author_rank: Super Contributor
timestamp: January 12, 2018, 06:08:38 pm
content: Given the cost of one of those boards, I suspect the techs that were allowed to work on them were the best available and knew all the tricks. I certainly would be nervous working on something that expensive.

author: dexters_lab
author_rank: Unknown
timestamp: January 12, 2018, 06:20:31 pm
content: Quote from: Alex Eisenhut on January 12, 2018, 01:58:22 ami feel your painmy OCD goes mental when i look at this one, i really must resist straightening them!

author: Alex Eisenhut
author_rank: Super Contributor
timestamp: January 15, 2018, 12:58:18 am
content: I guess this is its father.I love this stuff.

author: mikeselectricstuff
author_rank: Super Contributor
timestamp: January 15, 2018, 01:20:46 am
content: Quote from: Alex Eisenhut on January 15, 2018, 12:58:18 amIf you like that, you'll enjoy the Scanimate.This use a CRT to display an image, with an analogue computer modifying the scan waveforms. The CRT was then recorded with a camera :https://en.wikipedia.org/wiki/Scanimate

author: dexters_lab
author_rank: Unknown
timestamp: January 15, 2018, 09:37:41 am
content: Quote from: Alex Eisenhut on January 15, 2018, 12:58:18 amkind of yes, that is a demo of the quantel mirage (the DVM-8000) which dates from 1982 in it's earliest form, it took live video and digitized it into a 1024x1024 bitmap where each pixel would have a 3d co-ordinate. That would then allow you to move those points anywhere. From what i understand about it the 3D co-ords were pre-rendered on some kind of VAX system and then passed to the DVM in 'real time' for it to then manipulate the incoming videoso the ramcorder and mirage do different things really, the mirage is really for live studio effectsinterestingly the controller he's using in that video is from a DPE-5000 (a video effects unit from 1978), so i think there is some funky 'mock up for TV' going on there!a DVM-8000 would be my quantel holy grailthis video shows off the DVM a bit better

author: dexters_lab
author_rank: Unknown
timestamp: January 15, 2018, 09:44:28 am
content: Quote from: mikeselectricstuff on January 15, 2018, 01:20:46 amscanimate is awesome, that Dave guy who keeps it running does a remarkable job making graphics on it and keeping it running.

author: Alex Eisenhut
author_rank: Super Contributor
timestamp: January 15, 2018, 11:23:03 pm
content: Quote from: dexters_lab on January 15, 2018, 09:37:41 amOMG I. LOVE. THIS. STUFF!It combines my favorite things, Jean Michel Jarre's Equinoxe V (which version? It sounds different from the album), and bright, simple, fun cheesy '80s graphics!

author: dexters_lab
author_rank: Unknown
timestamp: January 16, 2018, 07:16:57 am
content: mike oldfield bought a Mirage incidentally, he used it extensively on the Wind Chimes album from 1988, it's clearly a bit more advanced than that 1982 showreel, probably in improvements in the controller software i guess

author: Alex Eisenhut
author_rank: Super Contributor
timestamp: January 17, 2018, 01:52:10 am
content: I like Mike Oldfield but he's been like a cafeteria for decades now: serving reheated leftovers.But so has Jean Michel Jarre...

author: dexters_lab
author_rank: Unknown
timestamp: January 17, 2018, 06:53:26 pm
content: Quote from: Alex Eisenhut on January 17, 2018, 01:52:10 amyea, i know what you mean... Guitars is a nice change from his other works

author: Willyarma
author_rank: Contributor
timestamp: April 03, 2018, 09:51:21 pm
content: Wow, I've only just found out about this! I've been watching a lot of your Quantel videos today and am absolultely blown away with what these devices were capable of considering how old they are! I'm very impressed with the repair jobs too, especially the PAL hacking!That Mirage unit is something else! It blew my socks off, its incredible. It got me thinking if I could do something Mirage-ish with my last FPGA project which was an SRAM based live HDMI full HD roto-zoomer, I can address any pixel in any order. VIDs of it have been on youtube for about 4 months.

author: dexters_lab
author_rank: Unknown
timestamp: April 03, 2018, 10:37:14 pm
content: Thanks, threre is more quantel magic on the way to the channel soon, i have been trying to coax a Quantel Hal into full life recently and it makes the Paintbox and Ramcorder look a bit basic really.

author: mikeselectricstuff
author_rank: Super Contributor
timestamp: April 04, 2018, 09:02:32 am
content: Quote from: Willyarma on April 03, 2018, 09:51:21 pmIf you can do any pixel in any order, presumably the next step is to have a pixel address lookup table so you could do any arbitary transformation. Size of LUT might be an issue though...

author: dexters_lab
author_rank: Unknown
timestamp: April 06, 2018, 08:33:11 pm
content: nice videos (thank Mike for finding and posting)yea that's just the sort of thing quantel were doing with the Miragemost of the effects though that looked like that were done with switching and effects desks like those from grass valley and sony (amongst others), mirage didn't have a long life at quantel, there is almost no mention of it towards the end of the 80s it seems

author: Willyarma
author_rank: Contributor
timestamp: April 06, 2018, 08:59:19 pm
content: Yeah, thers not much about it online.(Those vids were mine BTW, when i first posted they got removed somehow so I went back and edited the post)Ignoring the LUT size for the moment (which is a hurdle) a static image would be easy, but how on earth did they make it animate and turn etc.. was it hard coded in to the logic? I heard it was programmable but I have a hard time imagining a computer in the 1980s being able to calculate a 1024x1024 grid of dots at 50fps! Was it all pre calculated for every frame in a ginormous ram (seems crazy)? In my rotozoomer, all the fast stuff is hard coded into the logic of the FPGA, only the gradients and starting positions are changed externally to make it turn & zoom.

author: james_s
author_rank: Super Contributor
timestamp: April 06, 2018, 09:29:24 pm
content: Hey that's pretty cool! Did you release the HDL for that? Looks like something that would be fun to play with.

author: dexters_lab
author_rank: Unknown
timestamp: April 07, 2018, 08:51:20 am
content: Quote from: Willyarma on April 06, 2018, 08:59:19 pmi've been told the Mirage was a box that processed the video and had all the magic in but had a mini-computer that controlled it, i know Quantel used a lot of VAX stuff so could well have been a VAX. How the two communicated and how the computer calculated and stored all the 3D stuff i have no idea. If i ever happen upon details i will post them up.

author: Willyarma
author_rank: Contributor
timestamp: April 08, 2018, 01:29:29 pm
content: Is there a pinout for the RAM store card?Is the DRAM refresh circuitry on board?It's got me wondering if it could be recreated with modern parts, it would be a doddle if its just address bus + data bus on the connector, I expect its a bit more complex than that though!

author: dexters_lab
author_rank: Unknown
timestamp: April 09, 2018, 07:25:57 am
content: Quote from: Willyarma on April 08, 2018, 01:29:29 pmno, there is no pinout, i would have do make one... but there is a picture on page 1 of this thread that shows a closeup of the bunch of logic at at the connector, that could be part of the refreshWe have looked at re-creating the entire ramcorder, it would actually be simpler to engineer it from the other way. The video in/out are SDI so that can easily be re-created then it's just a case of deciphering the rs232 protocol it uses. A tame fpga and a stick of old PC ram would suffice to replace the whole thing. I have wondered if the ramcorder tells the paintbox how many frames it has available which could potentially allow a replacement to have gigabytes of ram for a huge increase in video storage space.I've never looked at the protocol though, i should get out my hantek LA and see what it says

author: james_s
author_rank: Super Contributor
timestamp: April 09, 2018, 06:07:04 pm
content: It's pretty crazy to think of replacing that whole huge thing with a little board containing an FPGA and a stick of RAM.

author: Willyarma
author_rank: Contributor
timestamp: April 09, 2018, 06:30:41 pm
content: Thats a much simpler and better idea!I would love to see the protocol deciphered, i think it would make a great video.I assume the SDI signal is 576i and not 576p?I'm just reading Xilinx XAPP1076 - Implementing Triple-Rate SDI with Spartan-6 FPGA GTP Transceivers.... looks like SDI on FPGA is possible, its a big document though!On a side note I remembered about some cheap HDMI to SDI and SDI to HDMI convertors that I saw on eBay (mainly used in CCTV) they might be handy for this system to use on a modern screen and to record etc.. but I dont think HDMI devices like 576i very much, so maybe not.

author: Willyarma
author_rank: Contributor
timestamp: April 09, 2018, 06:40:25 pm
content: Quote from: james_s on April 06, 2018, 09:29:24 pmNot for this one - at least not yet, it was so difficult to get right, one tiny change would throw out all the timing, I need to have another go with a different approach.Quote from: james_s on April 09, 2018, 06:07:04 pmI know. I really like seeing moderen stuff made for old hardware and also the hacking and reverse engineering of the signals and protcols to get it to work is really interesting to me!

author: dexters_lab
author_rank: Unknown
timestamp: April 09, 2018, 08:57:04 pm
content: right well i spent most of today with my LA on the serial link and made a bit of progress, i should have livestreamed it but didn't think about it at the time!the link is RS232 at 9600bps 8/n/1, the protocol is simple, but more complex than i expected so it's work-in-progress. For example it takes 11 bytes from the paintbox to get the ramcorder to display a single frame. Even playing continuous video requires the paintbox to request every single frame in realtime.the 323 frames limit looks to be hard coded into the paintbox software so probably no scope to expand it, i couldn't see anything that informs the paintbox the size of the storage.the ramcorder can display and record not only individual frames but also individual fields of video, i spotted this in the protocol and verified itto reply to your posts...Quoteyes, the paintbox and ramcorder both are 576i. The interlace is entrenched in the paintbox design and i don't believe they ever offered progressive scan on this architecture.Quotewe have SD-SDI running on a Cyclone 2 thanks to user OzOnE, again another unfinished project, maybe we'll brush the dust off it if i make more progress on the protocolQuotenoted, once i make a bit more progress i will look at putting something togetherQuotethankfully i have a Blackmagic unit that will record SDI to a SSD as uncompressed video which can easily be converted on my PC. I also have a couple of really nice pro scalers and converters i picked up cheap off ebay, means i can convert pretty much any type of video in and out of the paintbox.

author: dexters_lab
author_rank: Unknown
timestamp: April 11, 2018, 10:58:02 am
content: if anyone is interested or maybe able to help?...here is a little summary of what we found in the ramcorder protocol...the paintbox sends a string of bytes to the ramcorder, the string can be variable length and includes a checksum, the replies back from the ramcorder are similar in they are variable length and have a checksum.looking at this set of packets which happens when i enable the ramcorder option on the paintbox:PB = Paintbox TX, RC= Ramcorder TXCode:PB: F7 53 09 50 08 12 00 00 00 43RC: FC 41 01 07 08 12 00 00 00 04 01 43 09 4A 06PB: F2 4B 0A 00 B9RC: F2 41 01 04 C8PB: F7 53 09 50 08 12 00 00 00 43RC: FC 41 01 00 08 12 00 00 00 04 01 43 09 4A 0DPB: F0 73 9DRC: F5 41 01 00 00 05 00 00 C4The first byte always has the upper 4 bits as 1, the lower 4 bits are the payload/string length excluding the first and last bytes. The last byte is a basic checksum of the payload including the first byte.So the first message from the Paintbox is:FC 41 01 07 08 12 00 00 00 04 01 43 09 4A 06FC = length 13 bytes41 01 07 08 12 00 00 00 04 01 43 09 4A = string06 = checksum of string including the first byteInterestingly bytes 10 and 11 look like a 16 bit value 0x0143 which is 323, exactly the number of frames available in the ramcorder. So it could well be informing the paintbox of how many frames are available.Reading/Writing frames & fields. Quantel call this buying and selling frames.the following is the comms that are selling (writing) a frame to frame 1 of the ramcorder:Code:PB: FA 73 09 50 02 01 00 07 00 00 00 01 2FRC: F5 41 01 00 05 00 01 C3PB: F0 52 BERC: F2 41 01 00 CCPB: F0 73 9DRC: F5 41 01 00 05 00 01 C3Selling a frame into frame 2 of the ramcorder:Code:PB: FA 73 09 05 02 01 00 07 00 02 00 03 2BRC: F5 41 01 00 05 00 01 C3PB: F0 52 BERC: F2 41 01 00 CCPB: F0 73 9DRC: F5 41 01 00 05 00 03 C1Selling a frame into frame 5 of the ramcorder:Code:PB: FA 73 09 50 02 01 00 07 00 08 00 09 1FRC: F5 41 01 00 05 00 07 BDPB: F0 52 BERC: F2 41 01 00 CCPB: F0 73 9DRC: F5 41 01 00 05 00 09 BBBuying frame 100 from the ramcorder:Code:PB: F8 50 02 00 00 07 00 C8 00 C9 1ERC: F2 41 01 00 CCPB: F0 73 9DRC: F5 41 01 00 05 00 C9 FBPB: F0 73 9DRC: F5 41 01 00 05 00 C8 FCBuying frame 103 from the ramcorder:Code:PB: F8 50 02 00 00 07 00 CC 00 CD 16RC: F2 41 01 00 CCPB: F0 73 9DRC: F5 41 01 00 05 00 CD F7PB: F0 73 9DRC: F5 41 01 00 05 00 CC F8As you can see this is not as simple as you would expect, i think the ramcorder is works more in video fields rather than whole frames and that the individual fields are bought and sold in separate operations?You can see two counters, in the immediate example above for buying frame 103: bytes 6 to 9 seem to be frame/field counters. 0x00CC is 204 and 0x00cd is 205. If we assume the counter runs from 0-322 (rather than 1-323) then 204 could be frame 103 field 1 and 205 would be frame 103 field 2.It doesn't all make sense much but that's where we are at.

author: helius
author_rank: Super Contributor
timestamp: April 11, 2018, 04:28:35 pm
content: Yes, from the capture it does use field addresses. What's more: It seems that "selling" involves a command prefix to indicate that a descriptor will be used for writing, and "buying" just uses a bare descriptor. Look atCode:PB: FA 73 09 50 02 01 00 07 00 08 00 09 1FvsCode:PB: F8 50 02 00 00 07 00 C8 00 C9 1EMaybe 0x50 refers to the field format, 50Hz or PAL? Next byte is 0x02, which could mean number of fields in the descriptor. 0x01 could be direction (r/w) or something else. 0x07 possibly is a version or maybe means which port to use or a signal encoding.All the replies with code 0x41 appear to be "Success" status, I think there would be something different if you requested a nonexisting field descriptor. 0x41 is ASCII 'A'.

author: Willyarma
author_rank: Contributor
timestamp: April 11, 2018, 08:10:32 pm
content: I can see lots of patterns in it.Looks like when selling frames the initial command is describing 2 fields, then the following is some kind of ack about the 2 fields with the 1/50 sec time difference maybe?I'm not sure if its possible but having timestamps might help figure out if thats true.How are you capturing this, is it using an RS232 cable or with your logic analyser? Because im puzzled about the line that reads F0 51 BE when selling frame 5, that line is F0 52 BE on the others, have we got a bit error there or is it correct?Whilst on-site a few years ago I needed to view serial data as hex so threw together a quick VB program to capture serial and display it hex editor style, its been quite useful although I never polished it up. Is that any use to you?The captures are good, but could do with more.Can we see the same frame numbers bought and sold, and does it also do just fields too?Oh and seeing the total number of frames available is very interesting indeed!

author: dexters_lab
author_rank: Unknown
timestamp: April 11, 2018, 08:38:18 pm
content: thanks for the comments everyonehelius certainly made me think about how the packets are formedi am capturing with a Hantek 4032L logic analyser, the serial decode is a bit crap and there are sometimes errors from it and from me making typos so there could well be errors but i thought i checked all the checksums, but the 51 / 52 sounds like a typo from me!It should also be noted there could well be some things that maybe legacy, there were devices around at the time that could read and write individual frames of video at the time that may share a similar protocol to the ramcorder. For example the write (sell) frame command seems to be saying 'seek to frame xxx' and then wait for an acknowledge, the next two commands are the write field 1 and then write field 2 of that frame. This could be allied to tape based systems.Following that and picking up on Willyarma's comments about timing... yes i have omitted the timing info and there is for sure some interesting timing between the responses, i will try and detail these in some suitable form!There are many many ways within the paintbox that generate buys and sells or generate other comms between the paintbox and ramcorder so it's hard to turn it all into a sensible post that you can understand without confusing things.It really would be amazing to understand how it works, because the video in and out is SDI it could mean creating a replacement for the ramcorder with extended capacity a distinct possibility.more info on the way...

author: Willyarma
author_rank: Contributor
timestamp: April 11, 2018, 09:30:54 pm
content: I can see similarities between buying and selling, it looks like selling includes buying, like a combo.When youre using the machine and selling a frame does it buy that same frame at the same time?

author: dexters_lab
author_rank: Unknown
timestamp: April 12, 2018, 09:00:21 am
content: here are some more captures...i really need to work out a slicker way of getting this data, i have to manually type these across and work out the timing from the Hantek software which is utterly crap!These first two are using the handheld quantel 'grip' which does a sell/buy/increment operation in one button press. Typically used for rotoscoping operations.Sell frame 85, buy frame 86Code:0MS PB: FA 73 09 50 02 01 00 07 00 A8 00 A9 DF23MS RC: F5 41 01 00 05 00 AD 1732MS PB: F0 52 BE39MS RC: F2 41 01 00 CC99MS PB: F0 73 9D108MS RC: F5 41 01 00 05 00 A9 1B117MS PB: F8 50 01 00 00 07 00 AA 00 AB 5A136MS RC: F2 41 01 00 CC199MS PB: F0 73 9D208MS RC: F5 41 01 00 05 00 AA 1A260MS PB: F0 73 9D268MS RC: F5 41 01 00 05 00 AB 19Sell frame 86, buy frame 87Code:0MS PB: FA 73 09 50 02 01 00 07 00 AA 00 AB DB23MS RC: F5 41 01 00 05 00 A9 1B33MS PB: F0 52 BE39MS RC: F2 41 01 00 CC99MS PB: F0 73 9D108MS RC: F5 41 01 00 05 00 AB 19117MS PB: F8 50 02 00 00 07 00 AC 00 AD 56136MS RC: F2 41 01 00 CC199MS PB: F0 73 9D208MS RC: F5 41 01 00 05 00 AC 18260MS PB: F0 73 9D268MS RC: F5 41 01 00 05 00 AD 17Buying & selling individual fields:Buy frame 91 field 1Code:0MS PB: F8 50 02 20 00 07 00 B3 00 B3 2920MS RC: F2 41 01 00 CC80MS PB: F0 73 9D87MS RC: F5 41 01 00 05 00 B3 11140MS PB: F0 73 9D148MS RC: F5 41 01 00 05 00 B3 11Buy frame 91 field 2Code:0MS PB: F8 50 02 20 00 07 00 B4 00 B4 2717MS RC: F2 41 01 00 CC79MS PB: F0 73 9D88MS RC: F5 41 01 00 05 00 B4 10140MS PB: F0 73 9D148MS RC: F5 41 01 00 05 00 B4 10Sell frame 250 field 1Code:0MS PB: FA 73 09 50 02 21 00 07 01 F2 01 F2 2A24MS RC: F5 41 01 00 05 00 AB 1933MS PB: F0 52 BE39MS RC: F2 41 01 00 CC99MS PB: F0 73 9D108MS RC: F5 41 01 00 05 01 F2 D1Sell frame 250 field 2Code:0MS PB: FA 73 09 50 02 21 00 07 01 F3 01 F3 2824MS RC: F5 41 01 00 05 01 F2 D133MS PB: F0 52 BE39MS RC: F2 41 01 00 CC99MS PB: F0 73 9D108MS RC: F5 41 01 00 05 01 F3 D0

author: dexters_lab
author_rank: Unknown
timestamp: April 12, 2018, 09:31:39 am
content: Looking at those latest data grabs... eg this buy part:PB: F8 50 02 00 00 07 00 AC 00 AD 56this is like the paintbox saying, select field 172 (frame 87 field 1) from the store to output to field 1 and select field 173 (frame 87 field 2) from the store and output to field 2RC: F2 4A 01 00 CCramcorder acknowledgesPB: F0 73 9Dpaintbox says display field 1RC: F5 4A 01 00 05 00 AC 18ramcorder acknowledges request and paintbox grabs field 1PB: F0 73 9Dpaintbox says display field 2RC: F5 41 01 00 05 00 AD 17ramcorder acknowledges request and paintbox grabs field 2...so in the case of only buying a single field, the request is the same but the paintbox asks for both fields to be the same like here in this case with 0x00B3 in both field counters:PB: F8 50 02 20 00 07 00 B3 00 B3 29

author: Willyarma
author_rank: Contributor
timestamp: April 12, 2018, 11:21:04 am
content: Awesome!Thanks for the captures!Is it RS232 or RS485?If its RS232 then I would use 2 serial ports on my PC and tap off the transmit lines from the equipment leaving PC transmit disconnected so as not to mash the transmitters together!I would gladly write a little VB program to capture the data for you if you need it!

author: dexters_lab
author_rank: Unknown
timestamp: April 12, 2018, 11:54:54 am
content: Quote from: Willyarma on April 12, 2018, 11:21:04 amit's rs232it's a nice offer but i only have one USB->RS232 adaptor!EDIT: just ordered another USB -> RS232 off ebayAn app that could concatenate the TX from the Paintbox and Ramcorder together would be perfecti should also point out that OzOnE will be posting up shortly, he's been helping with this too and has the EPROM from the ramcorder in ADAPro for disassembly

author: Willyarma
author_rank: Contributor
timestamp: April 13, 2018, 06:35:23 am
content: I've done the GUI, I'll finish the actual code tonight.

author: dexters_lab
author_rank: Unknown
timestamp: April 13, 2018, 06:54:10 am
content: Quote from: Willyarma on April 13, 2018, 06:35:23 amwow! thank youshould be a useful tool, not just for this

author: nali
author_rank: Frequent Contributor
timestamp: April 13, 2018, 07:03:03 am
content: There are tools around that already do this. I used to do exactly that but can't remember the name of the program I used and the laptop I used is long dead now.I couldn't find it after a quick Google trying to refresh my memory, but it did bring up a couple of things which might be of usehttp://nicecircuits.com/dual-port-serial-terminal/https://docs.microsoft.com/en-us/sysinternals/downloads/portmon

author: dexters_lab
author_rank: Unknown
timestamp: April 13, 2018, 12:48:38 pm
content: OzOnE is a bit busy working on his own project at the moment, so he can't look at the EPROM code in the Ramcorder right now, i don't suppose anyone else here is versed in 6809 disassembly are they?i have included all the details below if anyone feels inclined to take a look, this is really all we know at the moment:CPU: 6809SRAM: 0x0000 to 0x1FFFEPROM: 0x8000 to 0xFFFFDual UART: SCN2681 mapped to 0x5000

author: Willyarma
author_rank: Contributor
timestamp: April 13, 2018, 07:15:16 pm
content: Attached is my Visual Basic 2010 program called Q_Capture.You can use 1 or 2 serial ports.You can name each port so the report shows that name on each line.The program looks for the F nibble to find the start and uses the count in the lower nibble so it can buffer the input until the end and then display it when the command is complete, so that if commands happen on both ports at the same time it will still print a full line that makes sense, and also to avoid confusion if the data also contains an F in the upper nibble.I have only given it a quick test and it seems OK, but there still maybe bugs in it.Please give it a try and let me know.I can provide source if you want too.

author: dexters_lab
author_rank: Unknown
timestamp: April 14, 2018, 08:20:41 am
content: wow, what a great little tool!ok, i just tried it and it's say data error for most of the time, i doubt it's your app... it'll be my setup for sure.Code:Data error, expected high nibble to be F 05Data error, expected high nibble to be F 00Data error, expected high nibble to be F 02Data error, expected high nibble to be F C2RC 08:40:45.0254F2 41 01 00 F6Data error, expected high nibble to be F 05Data error, expected high nibble to be F 00Data error, expected high nibble to be F 00Data error, expected high nibble to be F 00Data error, expected high nibble to be F 00Data error, expected high nibble to be F 0AData error, expected high nibble to be F 00Data error, expected high nibble to be F 05Data error, expected high nibble to be F 00Data error, expected high nibble to be F 04PB 08:40:45.1190FF 05 0A 00 05 00 04 FF F2 41 01 00 F6 05 0A 00 05 00Data error, expected high nibble to be F 06It makes me wonder if my hantek captures that showed the high nibble of the first byte to always be F might be in error, could you disable that data check so i can do some checking as to why this new method shows different data?whatever i do i am getting erratic data even using terminal emulators, turning on even parity seems to help though if i use my other terminal emulator but doesn't in the q_capture app, does your app override the default settings for stuff like parity that i set in device mangler?

author: Willyarma
author_rank: Contributor
timestamp: April 14, 2018, 09:14:49 am
content: I have added the ability to change baud, data bits, stop bits and parity.I've not disabled the F check yet as that needs more thought as I'm relying on it to know where to insert the timestamp and start a new line etc..

author: dexters_lab
author_rank: Unknown
timestamp: April 14, 2018, 09:30:13 am
content: wow, that was quick!looks much better now, though i don't get anything from port 2... there is definitely data coming in on com4 though i can see it if i open it in my terminal emulator

author: Willyarma
author_rank: Contributor
timestamp: April 14, 2018, 09:37:07 am
content: Sorry, I made a typo, the serial port 2 handler was reading port 1!

author: dexters_lab
author_rank: Unknown
timestamp: April 14, 2018, 09:41:39 am
content: awesome, thanks!i am out for the remainder of today so i'll take a look at it tomorrow.

author: PA0PBZ
author_rank: Super Contributor
timestamp: April 14, 2018, 10:55:48 am
content: Looks like there is some kind of diagnostics in there:Code:ROM:A1A0 0000001A C CAROUSEL Diagnostics MenuROM:A1BA 00000027 C Uxx Bidi Bus Read Of Address xxROM:A1E1 00000028 C /yy Bidi Bus Write yy To Last xxROM:A209 00000032 C T Toggle Test Probes or Store DifferenceROM:A23B 00000022 C NN Show Input Source ListROM:A25D 00000033 C Nx,NLx,NCx Select Input Source on Both/Luma/ChromaROM:A290 0000002B C G Toggle Parallel (GPI) Port TestROM:A2BB 0000001F C Y Toggle Store BypassROM:A2DA 00000050 C Zx Zit Test 0=(All)/1st/2nd Half Store; 1,2 Skip Mid Fld and TransientsROM:A32A 00000035 C ZY Zit Test All Store, Loop, counting errorsROM:A35F 0000003D C ZZ Zit Test All Store, Loop, stopping at first errorROM:A39C 0000001D C J Toggle Paint TaskROM:A3B9 00000020 C K Toggle Parallel TaskROM:A3D9 0000001F C I Toggle Test DisplayROM:A3F8 00000018 C ? This MessageROM:A410 0000001A C X Reset SoftwareROM:A42A 0000001E C P Play Forward FrameROM:A448 00000031 C S Stop Play/Record; Cancel Position (H)ROM:A479 00000018 C V Play ReverseROM:A491 00000020 C Q Record Forward FrameROM:A4B1 0000003A C <or> Step Forward or Backward (outputs field count)ROM:A4EB 0000002C C Hxxx Pos to Field xxx and Simul Rd/WrROM:A517 0000001E C Lxxx Look at Field xxxROM:A535 00000021 C O Play This Half (Loop)

author: Willyarma
author_rank: Contributor
timestamp: April 14, 2018, 12:42:55 pm
content: I've found a 6809 emulator written in C on github, I've altered it to print reads and writes to non memory areas....It does this:Read from 5100 write 0 to 500d write 0 to 5004 write 0 to 5005 write 0 to 5414 Read from 500f write ff to 5006 write ff to 5007 write 30 to 5004 write 0 to 5005 Read from 500e Read from 500d write 2 to 5005 write 0 to 5005 write 20 to 5005 write 0 to 5005 write 0 to 5409 write 0 to 5408 write 0 to 5407 write 0 to 5406 write 0 to 5405 write 0 to 5404 write 0 to 5403 write 0 to 5402 write 0 to 5400 write 80 to 5401 write c8 to 5411 write 0 to 5412 write 0 to 5413 write c8 to 5411 write 31 to 5004 write 80 to 5005 Read from 5410 write f to 5414 Read from 5100 Read from 5006 Read from 5007 Read from 5006 write 1a to 5002 write 2a to 5002 write 3a to 5002 write 4a to 5002 write 5a to 5002 write 0 to 500d write 65 to 500f write 80 to 5005 Read from 5100 Read from 5006 Read from 5007 Read from 5006 write 1a to 500a write 2a to 500a write 3a to 500a write 4a to 500a write 5a to 500a write 0 to 500d write 96 to 500f write 80 to 5005 Read from 5100 Read from 5006 Read from 5007 Read from 5006 Read from 5100 Read from 5006 Read from 5007 Read from 5006 Read from 5100 Read from 5006 Read from 5007 Read from 5006 Read from 5100 Read from 5006 Read from 5007 Read from 5006 Read from 5100.....All values are in hex.Not much use yet i guess

author: Willyarma
author_rank: Contributor
timestamp: April 14, 2018, 03:24:51 pm
content: Attached is a dissasembly.Code starts at 0x8000Interrupt routine starts at 0x866F, looks like it might handle received RS232

author: dexters_lab
author_rank: Unknown
timestamp: April 14, 2018, 08:48:07 pm
content: Quote from: PA0PBZ on April 14, 2018, 10:55:48 amthanks, we had spotted it before... we're just not sure how to access it!

author: Willyarma
author_rank: Contributor
timestamp: April 15, 2018, 12:45:21 am
content: Somethings bugging me, if the UART starts at 0x5000, then I would expect the UART data holding registers to be at 0x5003 or 0x500B but theres nothing in disassembly that reads or writes there!Have you any details on how the address bus is wired between the 6809 and UART?

author: james_s
author_rank: Super Contributor
timestamp: April 15, 2018, 01:15:43 am
content: I wouldn't be surprised if the addresses are not fully decoded, causing some peripherals to appear at multiple memory locations. I've seen that with some 80s arcade game hardware.

author: Willyarma
author_rank: Contributor
timestamp: April 15, 2018, 07:21:59 am
content: The memory locations directly accessed are:M5000M5001M5002M5004M5005M5006M5007M5008M5009M500AM500DM500EM500FI've not looked for any indirect access.Why are the 2 ones that (ought to) actually receive and transmit characters missing!Are there any swappages on the 4 address lines between the 6809 and UART?Also there is another interrupt handler at 0x8234 in addition to the 0x886F that I mentioned before.I could do with knowing which interrupt pin the UART is connected to.

author: dexters_lab
author_rank: Unknown
timestamp: April 15, 2018, 08:05:54 am
content: Quote from: Willyarma on April 14, 2018, 09:37:07 amapp looks to be working greatthis is a grab of me enabling the ramcorder, then buying / selling some frames, making a few settings changes etci was just testing the app works ok, next time i'll make a video of what i am doingthere's a couple of little tweaks to the app i might suggest...the new log appears at the bottom of the list of captured commands, but whenever it's updated it scrolls to the top meaning i have to keep scrolling to the bottom to see the latest dataanyway, more to come and i'll try and get ash to post about the uart mappingCode:PB 08:39:50.6756F7 53 09 50 08 12 00 00 00 43RC 08:39:50.6996FC 41 01 00 08 12 00 00 00 04 01 43 09 4A 0DPB 08:39:50.7056F2 4B 0A 00 B9RC 08:39:50.7206F2 41 01 04 C8PB 08:39:50.7326F7 53 09 50 08 12 00 00 00 43RC 08:39:50.7586FC 41 01 00 08 12 00 00 00 04 01 43 09 4A 0DPB 08:39:50.7626F0 73 9DRC 08:39:50.7756F5 41 01 00 05 00 34 90PB 08:39:57.6180F8 50 02 00 00 07 00 32 00 33 4ARC 08:39:57.6280F2 41 01 00 CCPB 08:39:57.7470F8 50 02 00 00 07 00 32 00 33 4ARC 08:39:57.7610F2 41 01 00 CCPB 08:39:57.8170F0 73 9DRC 08:39:57.8320F5 41 01 00 05 00 33 91PB 08:40:10.2697FA 73 09 50 02 01 00 07 00 32 00 33 CBRC 08:40:10.2877F5 41 01 00 05 00 30 94PB 08:40:10.2917F0 52 BERC 08:40:10.2997F2 41 01 00 CCPB 08:40:10.3577F0 73 9DRC 08:40:10.3698F5 41 01 00 05 00 32 92PB 08:40:10.3828F8 50 02 00 00 07 00 34 00 35 46RC 08:40:10.3938F2 41 01 00 CCPB 08:40:10.4378F0 73 9DRC 08:40:10.4528F5 41 01 00 05 00 34 90PB 08:40:10.4988F0 73 9DRC 08:40:10.5128F5 41 01 00 05 00 35 8FPB 08:40:12.2499FA 73 09 50 02 01 00 07 00 34 00 35 C7RC 08:40:12.2679F5 41 01 00 05 00 33 91PB 08:40:12.2749F0 52 BERC 08:40:12.2809F2 41 01 00 CCPB 08:40:12.3379F0 73 9DRC 08:40:12.3499F5 41 01 00 05 00 35 8FPB 08:40:12.3629F8 50 02 00 00 07 00 36 00 37 42RC 08:40:12.3739F2 41 01 00 CCPB 08:40:12.4179F0 73 9DRC 08:40:12.4329F5 41 01 00 05 00 37 8DPB 08:40:12.4789F0 73 9DRC 08:40:12.4929F5 41 01 00 05 00 36 8EPB 08:40:14.3900FA 73 09 50 02 01 00 07 00 36 00 37 C3RC 08:40:14.4080F5 41 01 00 05 00 34 90PB 08:40:14.4160F0 52 BERC 08:40:14.4230F2 41 01 00 CCPB 08:40:14.4780F0 73 9DRC 08:40:14.4930F5 41 01 00 05 00 36 8EPB 08:40:14.5060F8 50 02 00 00 07 00 38 00 39 3ERC 08:40:14.5180F2 41 01 00 CCPB 08:40:14.5780F0 73 9DRC 08:40:14.5930F5 41 01 00 05 00 39 8BPB 08:40:14.6390F0 73 9DRC 08:40:14.6530F5 41 01 00 05 00 38 8CPB 08:40:16.4301FA 73 09 50 02 01 00 07 00 38 00 39 BFRC 08:40:16.4481F5 41 01 00 05 00 36 8EPB 08:40:16.4521F0 52 BERC 08:40:16.4601F2 41 01 00 CCPB 08:40:16.5181F0 73 9DRC 08:40:16.5331F5 41 01 00 05 00 38 8CPB 08:40:16.5461F8 50 02 00 00 07 00 3A 00 3B 3ARC 08:40:16.5571F2 41 01 00 CCPB 08:40:16.6181F0 73 9DRC 08:40:16.6331F5 41 01 00 05 00 3B 89PB 08:40:16.6791F0 73 9DRC 08:40:16.6931F5 41 01 00 05 00 3A 8APB 08:40:18.2902FA 73 09 50 02 01 00 07 00 3A 00 3B BBRC 08:40:18.3082F5 41 01 00 05 00 39 8BPB 08:40:18.3132F0 52 BERC 08:40:18.3222F2 41 01 00 CCPB 08:40:18.3782F0 73 9DRC 08:40:18.3932F5 41 01 00 05 00 3B 89PB 08:40:18.4062F8 50 02 00 00 07 00 3C 00 3D 36RC 08:40:18.4172F2 41 01 00 CCPB 08:40:18.4782F0 73 9DRC 08:40:18.4932F5 41 01 00 05 00 3C 88PB 08:40:18.5392F0 73 9DRC 08:40:18.5532F5 41 01 00 05 00 3D 87PB 08:40:20.3903FA 73 09 50 02 01 00 07 00 3C 00 3D B7RC 08:40:20.4083F5 41 01 00 05 00 3A 8APB 08:40:20.4133F0 52 BERC 08:40:20.4233F2 41 01 00 CCPB 08:40:20.4783F0 73 9DRC 08:40:20.4933F5 41 01 00 05 00 3C 88PB 08:40:20.5063F8 50 02 00 00 07 00 3E 00 3F 32RC 08:40:20.5173F2 41 01 00 CCPB 08:40:20.5783F0 73 9DRC 08:40:20.5933F5 41 01 00 05 00 3F 85PB 08:40:20.6393F0 73 9DRC 08:40:20.6533F5 41 01 00 05 00 3E 86PB 08:40:23.6905FA 73 09 50 02 01 00 07 00 3E 00 3F B3RC 08:40:23.7085F5 41 01 00 05 00 3D 87PB 08:40:23.7145F0 52 BERC 08:40:23.7245F2 41 01 00 CCPB 08:40:23.7785F0 73 9DRC 08:40:23.7905F5 41 01 00 05 00 3F 85PB 08:40:23.8035F8 50 02 00 00 07 00 40 00 41 2ERC 08:40:23.8145F2 41 01 00 CCPB 08:40:23.8585F0 73 9DRC 08:40:23.8725F5 41 01 00 05 00 41 83PB 08:40:23.9195F0 73 9DRC 08:40:23.9325F5 41 01 00 05 00 40 84PB 08:40:25.6506FA 73 09 50 02 01 00 07 00 40 00 41 AFRC 08:40:25.6686F5 41 01 00 05 00 3F 85PB 08:40:25.6756F0 52 BERC 08:40:25.6816F2 41 01 00 CCPB 08:40:25.7386F0 73 9DRC 08:40:25.7506F5 41 01 00 05 00 41 83RC 08:40:25.7746F2 41 01 00 CCPB 08:40:25.8186F0 73 9DRC 08:40:25.8326F5 41 01 00 05 00 43 81PB 08:40:25.8796F0 73 9DRC 08:40:25.8936F5 41 01 00 05 00 42 82PB 08:40:29.0708FA 73 09 50 02 01 00 07 00 42 00 43 ABRC 08:40:29.0888F5 41 01 00 05 00 40 84PB 08:40:29.0958F0 52 BERC 08:40:29.1038F2 41 01 00 CCPB 08:40:29.1588F0 73 9DRC 08:40:29.1738F5 41 01 00 05 00 42 82PB 08:40:29.1868F8 50 02 00 00 07 00 44 00 45 26RC 08:40:29.1988F2 41 01 00 CCPB 08:40:29.2588F0 73 9DRC 08:40:29.2728F5 41 01 00 05 00 45 7FPB 08:40:29.3198F0 73 9DRC 08:40:29.3328F5 41 01 00 05 00 44 80PB 08:40:31.9820F0 73 9DRC 08:40:31.9960F5 41 01 00 05 00 45 7FPB 08:40:40.0955F8 50 02 00 00 07 00 00 00 01 AERC 08:40:40.1085F2 41 01 00 CCPB 08:40:40.2295F8 50 02 00 00 07 00 00 00 01 AERC 08:40:40.2425F2 41 01 00 CCPB 08:40:40.2995F0 73 9DRC 08:40:40.3135F5 41 01 00 05 00 01 C3PB 08:40:44.7177F0 73 9DRC 08:40:44.7317F5 41 01 00 05 00 00 C4PB 08:40:44.7397F0 73 9DRC 08:40:44.7537F5 41 01 00 05 00 01 C3PB 08:40:48.3359F0 73 9DRC 08:40:48.3499F5 41 01 00 05 00 01 C3PB 08:40:50.3070F8 50 02 00 00 07 00 00 00 01 AERC 08:40:50.3210F2 41 01 00 CCPB 08:40:50.3800F0 73 9DRC 08:40:50.3940F5 41 01 00 05 00 01 C3PB 08:40:50.4400F0 73 9DRC 08:40:50.4550F5 41 01 00 05 00 00 C4PB 08:40:51.7591FA 73 09 50 02 00 00 07 00 00 00 31 00RC 08:40:51.7741F5 41 01 00 05 00 00 C4PB 08:40:51.7831F0 56 BARC 08:40:51.7931F2 41 01 00 CCPB 08:40:51.8801F0 73 9DRC 08:40:51.8941F5 41 01 00 05 00 02 C2PB 08:40:51.9401F0 73 9DRC 08:40:51.9541F5 41 01 00 05 00 05 BFPB 08:40:52.0001F0 73 9DRC 08:40:52.0141F5 41 01 00 05 00 08 BCPB 08:40:52.0601F0 73 9DRC 08:40:52.0741F5 41 01 00 05 00 0B B9PB 08:40:52.1201F0 73 9DRC 08:40:52.1341F5 41 01 00 05 00 0E B6PB 08:40:52.1801F0 73 9DRC 08:40:52.1941F5 41 01 00 05 00 11 B3PB 08:40:52.2401F0 73 9DRC 08:40:52.2551F5 41 01 00 05 00 14 B0PB 08:40:52.3001F0 73 9DRC 08:40:52.3151F5 41 01 00 05 00 17 ADPB 08:40:52.3602F0 73 9DRC 08:40:52.3752F5 41 01 00 05 00 1A AAPB 08:40:52.4202F0 73 9DRC 08:40:52.4352F5 41 01 00 05 00 1D A7PB 08:40:52.4802F0 73 9DRC 08:40:52.4962F5 41 01 00 05 00 20 A4PB 08:40:52.5402F0 73 9DRC 08:40:52.5552F5 41 01 00 05 00 23 A1PB 08:40:52.6002F0 73 9DRC 08:40:52.6162F5 41 01 00 05 00 26 9EPB 08:40:52.6602F0 73 9DRC 08:40:52.6752F5 41 01 00 05 00 29 9BPB 08:40:52.7202F0 73 9DRC 08:40:52.7362F5 41 01 00 05 00 2C 98PB 08:40:52.7802F0 73 9DRC 08:40:52.7962F5 41 01 00 05 00 2F 95PB 08:40:52.8402F0 73 9DRC 08:40:52.8562F5 41 01 00 05 00 30 94

author: Willyarma
author_rank: Contributor
timestamp: April 15, 2018, 08:40:26 am
content: Glad it's workingI have changed the textbox code to append rather than replace and it scrolls nicely now.

author: PA0PBZ
author_rank: Super Contributor
timestamp: April 15, 2018, 09:44:37 am
content: Quote from: Willyarma on April 15, 2018, 12:45:21 amI thought it was me seeing the same thing, no references to TX or RX FIFO for channel A or B:Code:UART:5000 ; segment UARTUART:5000 org $5000UART:5000 ?? MODE_A: rmb 1 ; DATA XREF: ROM:B2ECwUART:5000 ; ROM:B2F1w ...UART:5000 ; mc2681 Dual UARTUART:5001 ?? SRA_CSRA: rmb 1 ; DATA XREF: ROM:B2F6wUART:5001 ; ROM:C893w ...UART:5002 ?? BRG_CMD_A: rmb 1 ; DATA XREF: ROM:8F62wUART:5002 ; ROM:8F67w ...UART:5003 ?? RHRA_THRA: rmb 1UART:5004 ?? IPCR_ACR: rmb 1 ; DATA XREF: sub_8052+AwUART:5004 ; sub_81BE+33w ...UART:5005 ?? ISR_IMR: rmb 1 ; DATA XREF: sub_8052+10wUART:5005 ; sub_81BE+3Ew ...UART:5006 ?? CTU_CTUR: rmb 1 ; DATA XREF: sub_81BE+1DwUART:5006 ; sub_866F+6r ...UART:5007 ?? CTL_CTLR: rmb 1 ; DATA XREF: sub_81BE+20wUART:5007 ; sub_866F+9r ...UART:5008 ?? MODE_B: rmb 1 ; DATA XREF: ROM:B3BEwUART:5008 ; ROM:B3C3w ...UART:5009 ?? SRB_CSRB: rmb 1 ; DATA XREF: ROM:B3C8wUART:5009 ; ROM:C95Aw ...UART:500A ?? X1_X16_CRB: rmb 1 ; DATA XREF: ROM:8FEFwUART:500A ; ROM:8FF4w ...UART:500B ?? RHRB_THRB: rmb 1UART:500C ?? RESERVED: rmb 1UART:500D ?? INP_OPCF: rmb 1 ; DATA XREF: sub_8052+4wUART:500D ; ROM:8F85w ...UART:500E ?? STARTC: rmb 1 ; DATA XREF: sub_81BE+41rUART:500E ; ROM:loc_9C80w ...UART:500F ?? STOPC: rmb 1 ; DATA XREF: sub_81BE+18rUART:500F ; ROM:8F8Cw ...UART:500F ; end of 'UART'

author: Willyarma
author_rank: Contributor
timestamp: April 15, 2018, 09:54:12 am
content: What tool are you using? looks quite handy

author: Willyarma
author_rank: Contributor
timestamp: April 15, 2018, 11:48:01 am
content: Not totally sure but I think UART RX/TX register is accessed indirectly, looks like base address of UART is put in memory at 0x0016.Look at code at 0xBF88 for transmitting.Also not sure why but it looks like some of the code repeats itself about 4 times, but its not simple repitition, it dosent line up with reading a 4K ROM as a 16K ROM for example.

author: PA0PBZ
author_rank: Super Contributor
timestamp: April 15, 2018, 12:16:52 pm
content: Quote from: Willyarma on April 15, 2018, 09:54:12 amThis is IDA, the only toolI found the same 0x16 address, but the problem is that it not always contains 0x5000 and I cant' understand why they would do that while all other registers in the UART are addressed directly.If out are looking for transmit have a look at 0x9D79, here they transmit CR/LF using sub 0x844E, which I of course called S_BYTE_OUT:Code:ROM:9D79 86 0D lda #$DROM:9D7B 36 02 pshu aROM:9D7D BD 84 4E jsr S_BYTE_OUTROM:9D80 86 0A lda #$AROM:9D82 36 02 pshu aROM:9D84 BD 84 4E jsr S_BYTE_OUTROM:9D87 39 rtsCode:ROM:844E S_BYTE_OUT:ROM:844E 8E 08 C7 ldx #$8C7ROM:8451 10 8E 0C+ ldy #$CC7ROM:8455 1F B9 tfr dp, bROM:8457 C1 02 cmpb #2ROM:8459 26 07 bne loc_8462ROM:845B 8E 0C C8 ldx #$CC8ROM:845E 10 8E 10+ ldy #$10C8ROM:8462ROM:8462 loc_8462:ROM:8462 34 01 pshs ccROM:8464 1A 10 orcc #$10ROM:8466 DC 0A ldd byte_AROM:8468 83 00 01 subd #1ROM:846B 9C 0A cmpx byte_AROM:846D 2D 02 blt loc_8471ROM:846F 1F 20 tfr y, dROM:8471 loc_8471:ROM:8471 10 93 08 cmpd byte_8ROM:8474 27 25 beq loc_849BROM:8476 DD 0A std byte_AROM:8478 34 20 pshs yROM:847A 1F 02 tfr d, yROM:847C 37 02 pulu aROM:847E A7 A4 sta ,yROM:8480 1F 20 tfr y, dROM:8482 35 20 puls yROM:8484 83 00 01 subd #1ROM:8487 9C 0A cmpx byte_AROM:8489 26 02 bne loc_848DROM:848B 1F 20 tfr y, dROM:848D loc_848DROM:848D 10 93 08 cmpd byte_8ROM:8490 27 04 beq loc_8496ROM:8492 5F clrbROM:8493 35 01 puls ccROM:8495 39 rtsROM:8496 loc_8496:ROM:8496 C6 01 ldb #1ROM:8498 35 01 puls ccROM:849A 39 rtsROM:849B loc_849B:ROM:849B 37 02 pulu aROM:849D C6 FF ldb #$FFROM:849F 35 01 puls ccROM:84A1 39 rtsROM:84A1 ; End of function S_BYTE_OUTI'm having a hard time to follow the BYTE_OUT, mostly because I'm not used to 6809 at all.It looks like the byte is placed in another buffer and I guess this buffer is then read by the transmit buffer empty interrupt, but it is well hidden for now...

author: dexters_lab
author_rank: Unknown
timestamp: April 15, 2018, 02:11:35 pm
content: video of capturing the serial data, the data is attached as a text file

author: Willyarma
author_rank: Contributor
timestamp: April 15, 2018, 04:37:03 pm
content: Right at the start of the video, you pressed buy and the paintbox only sent the F0 73 9D command, and nothing else.The ramcorder answered with F5 41 01 00 05 00 00 C4 which looks like it saying its on frame 0Then when you changed buy to 2, the paintbox just sent the F0 73 9D command again.The ramcorder answered with F5 41 01 00 05 00 01 C3 which is different to before, frame 1Its interesting how the 73 command with no parameters could make the ramcorders response change.What happens if you just keep dong that repeatedly?Also would be interesting to see what happens if you manually send F0 73 9D a few times, does it toggle, count up or what?

author: dexters_lab
author_rank: Unknown
timestamp: April 15, 2018, 04:42:58 pm
content: Quote from: Willyarma on April 15, 2018, 04:37:03 pmyes i noticed that before, i think i know what it is...i mentioned previously how those counters are probably fields so 0x0 would be frame 0 field 1i think these types of reply 'F5 41 01 00 05 00 01 C3' are more like a current status response from the ramcorder where it reports it's current frame...i think what's happening is as the ramcorder is always outputting video depending on when it sends the status it could be outputting field 1 or field 2, which makes the reply changei did try keep generating that response and it's pretty much 50/50 which response you get

author: Willyarma
author_rank: Contributor
timestamp: April 15, 2018, 06:08:06 pm
content: I probably should have gone furthur through the video and log before commenting, the 73 command is highlighted quite nicely when you did a play in background and then change to frame 100.Well thats one of the commands known!

author: dexters_lab
author_rank: Unknown
timestamp: April 15, 2018, 08:49:51 pm
content: one of a few! it's odd though how there seems to be too much data in the commands for what they do... i wondered if it was based on some other protocol, like the one for the Abekas A60 as it seems over complicated. But then that was very Quantel.The A60 was a similar kind of thing, but was open as in it was an off the shelf non-lossy instant access video device using a hard disk, but i can't find any details on the RS232 control protocol for it to see if it's similarthe forum member OzOnE has been pestering me to learn fpga design so i do wonder if he could help me learn some of it to make something that replaces the ramcorder. It could be an interesting project.

author: Willyarma
author_rank: Contributor
timestamp: April 16, 2018, 10:57:31 am
content: All I could find was a protocol for video disk control protocol, but its nothing like this, so not much use.http://www.buftek.com/pdf/VDCP.pdfFPGAs are very cool and awesome and are worth looking at, but they can be both easy and very difficult at the same time!Checkhttp://www.asic-world.com/verilog/index.htmlandhttp://www.fpga4fun.com/to get started.I've just ordered some bits to do SD & HD-SDI in & out on FPGA, also a 6809 and a SCN2681 mainly because I'm interested and want to do it for my own projects but also to tie in with this.I'm going to copy this (with a few modifications)http://www.bradrodriguez.com/papers/6809cpu.htm(on breadboard to start with) and then see what happens when I run the ramcorder eprom on it!It would be cool if someone knew of a SCN2681 compatible FPGA IP core (free), then the 6809 and UART could go on FPGA, and do the whole project on 1 chip! (except for RAM)

author: OzOnE
author_rank: Regular Contributor
timestamp: April 18, 2018, 02:13:03 pm
content: Hi, all,I'm back from the weekend break now, and just catching up.Brace yourselves, because this will contain a lot of links / rambling. hehe...You are correct, @Willyarma - the DUART registers seem to be accessed indirectly in the code.I know a fair bit of 6502 code, but not quite so familiar with the 6809, so it confused the hell out of me as well at first. lolBut, I'm still not quite sure where the serial routines are, because this part seems to be writing to 0x5002 instead of 0x5003?Mr Dexter confirmed the other day that the address lines [3:0] on the CPU do connect directly to the SCN2681 / MC2681 chip directly, so the mapping is probably correct.That is unless there's an endianess issue somewhere in IDA, and register 0x5003 IS actually the RX/TX Holding Reg for serial port "A"?I made a bit of progress on Friday with getting the Ramcorder ROM running on the DE1 FPGA board too...Not a huge amount added to it yet, but I think the serial stuff could be spoofed quite easily once the routines are figured out...https://paste.ofcode.org/5WXFAHdfEmeZChhtWaK4CLI managed to get the classic Paintbox (DPB) ROM sort of running under MESS many years ago, but I'm not so great with C/C++, so didn't get much further with it. lolI did get it running on the DE1 as well though, and implemented many of the original boards from the DPB, but never quite got to the point of getting it to boot into the "painting" GUI.For the serial port stuff on the "DE1 Paintbox", I simply spoofed the status reg for the UART using the flags from the serial TX / RX blocks, and it worked fine via the proper RS232 port on the DE1.The same could be done for the Ramcorder code, but it looks like it makes good use of the IO ports, timers / counters, and interrupts instead, so may take a while to get running properly.The Ramcorder version could be quite interesting, as we would also like to start doing some SDI stuff, so it would be great to collaborate on this.I think the resulting device could make good use of a Rasp Pi for streaming the frames, but I'm not quite sure if it would be up to the task of delivering each frame in an instant (even with SD resolution)?The Rasp Pi thing would work a bit like the aptly named "Dexter" device for replacing ageing Laserdisc players in arcade cabinets. The Dexter board is a "bargain" at only $399.http://laserdisc-replacement.com/I definitely want to make a small PCB with the SDI Tx / Rx chips on it now. I stumbled upon this the other day...http://www.ti.com/product/CLC021And a PCB project by Mr Citrus...https://oshpark.com/shared_projects/YO08zbhtI did set up an FPGA project for the board that Mr Dexter has, which should output an SDI test pattern.But, we weren't quite sure about the proper way of driving the cable, so haven't tested it out yet.I think it might even work OK for shorter cable runs to just drive it via a resistor tbh, but yeah, it would be far easier to just use the proper SDI chips to handle that.Anywho, yep. A ton of stuff to discuss, but some interesting project ideas.I'll make a start now on my own PCB that uses those Ti SDI chips, but include both the Tx and Rx on the same board.EDIT: I did a screen capture of the whole process of designing a PCB in Eagle for the SDI TX chip.It's an "exciting" 49 minutes of me doing the usual pedantic game of trying to get the ground plane between as many traces as possible. lolhttps://drive.google.com/open?id=1fMbVXHp9pNuMu07OivV6nsVXj_5cipY4That CLC021 chip costs around £30 btw, so not at all cheap.I'm thinking maybe we should just test the SDI output directly from the FPGA itself, as the entire dev board I sent to Mr Dexter barely cost much more than that.I don't think the "direct" SDI output from the FPGA would manage higher than 480i/576i/480p/576p resolutions, but that's perfect for the Paintbox stuff.OzOnE.

author: Willyarma
author_rank: Contributor
timestamp: April 18, 2018, 04:51:13 pm
content: Awesome stuff!If your interested the ones i got were LMH0002 (SDI driver) £7.27 + VAT from farnell and LMH0034 (SDI equaliser) £15.54+VAT, (ones with legs! I can do QFN but hate it) also the SCN2681 and 68B09 have arrived, im trying to build a 6809 board this week just for kicks really, but will try the ramcorder eprom on it and see what I/O addresses it talks to if I can make it work.Looking at the Xilinx XAPP on SDI, it looks possible to do up to 1080P on my Pipistrello board, It does the serialisation on the FPGA i think, I wont be working on this for a short while tho, too much to do!

author: OzOnE
author_rank: Regular Contributor
timestamp: April 18, 2018, 05:13:19 pm
content: Nice. Thanks for the tips on the SDI chips. We might look into that if the "direct" FPGA method fails.I saw those chips on the TI site earlier, and it does seem to make more sense to leverage the FPGA for the serialiser / deserialiser stuff, and skip the cost of the CLC chips etc.(I hate QFN as well btw, especially with the thermal pads underneath. lol)I have most of the code in place for using the Altera SDI IP core for the SDI Tx / Rx, but I'm not confident about whether I've done the flag encoding properly yet.What we're thinking of doing (maybe tomorrow) is just testing the SDI Rx block first, by inputting a signal via a small cap, then seeing if it gets a lock.We can then see in SignalTap whether the output signals from the Rx block look OK, then can just route that directly to the TX block to test that.I have a pattern gen hooked up to the SDI Tx block atm, but it doesn't yet have the timings for showing a 480i / 576i pattern, only 480p, 720p, 1080i, 1080p etc., so that won't yet work for inputting to the Paintbox just yet anyway.Looking forward to seeing your progress with the 6809 board. Keep us updated with photos etc.OzOnE.

author: Willyarma
author_rank: Contributor
timestamp: April 18, 2018, 05:35:20 pm
content: I've had a look through the stuff u posted, very cool stuff!Glad u use verilog not VHDL! heheI would like to see the results of the Altera SDI stuff your doing.Xilinx SDI -https://www.xilinx.com/support/documentation/application_notes/xapp1076_S6GTP_TripleRateSDI.pdfI tried using this emulatorhttps://github.com/spc476/mc6809i ported it over to Visual Studio which was a pain.Its really easy to trap memory reads & writes with it and I altered it to print out what it was accessing and it looks like its accessing the timer registers of the DUART quite a lot, thats one of the reasons I wanted to use a real chip.It also accesses 0x5100 and around 0x54xx too.Please dont laugh at the attached photo! I thought i'd do it on stripboard cos it was quicker but it would have been quicker to make a PCB! I'm half way through it.

author: OzOnE
author_rank: Regular Contributor
timestamp: April 18, 2018, 05:40:21 pm
content: Yeah, I really don't get on with VHDL tbh.I mean, I can read it and make sense of it, but I find it so hopelessly verbose for what it does, and harder to "scan".I don't know of many things that are done in VHDL that can't be done in Verilog either, and especially not SystemVerilog.A ton of retro cores like the Minimig (Amiga) are written in Verilog too, and that obviously works fine.I even started translating some of the VHDL for things like the Genesis / MD core into Verilog. lol(I managed to translate the TG68K core into Verilog, but there is still a bug somewhere which screws up certain instructions.)The stripboard looks fine btw. Much neater than what I've produced in the past.OzOnE.

author: dexters_lab
author_rank: Unknown
timestamp: April 18, 2018, 05:42:48 pm
content: no laughs from me, i am just genuinely impressed at your enthusiasmi don't think i mentioned it before but there is a AM2952 on the CPU card, that could be where the other access are to

author: Willyarma
author_rank: Contributor
timestamp: April 18, 2018, 06:17:33 pm
content: Just looking at the AM2952 data sheetThats a very special looking thing!

author: james_s
author_rank: Super Contributor
timestamp: April 18, 2018, 06:26:48 pm
content: Quote from: OzOnE on April 18, 2018, 05:40:21 pmAnything that can be done in VHDL can be done in Verilog and vice versa, it's a matter of preference.Personally I find Verilog looks like abbreviated gibberish while VHDL is very clear and easy to follow. A lot of it probably comes down to which language one is more familiar with but I find the strongly typed and verbose nature of VHDL to be helpful, it's almost self commenting.

author: PA0PBZ
author_rank: Super Contributor
timestamp: April 18, 2018, 07:12:05 pm
content: Quote from: Willyarma on April 18, 2018, 06:17:33 pmWatch out that you are really looking at the right datasheet, it fooled me too the first time...

author: Willyarma
author_rank: Contributor
timestamp: April 18, 2018, 09:55:10 pm
content: QuoteDOH! yeah your right! I got a high-performance 8-bit slice microprogam sequencer! Am I right in saying its supposed to be a Eight-Bit Bidirectional I/O Ports with Handshake?

author: Willyarma
author_rank: Contributor
timestamp: April 18, 2018, 10:15:57 pm
content: QuoteIsn't that the bit that configures and sets up the DUART?Have a look at this listing:http://www.bradrodriguez.com/papers/6809lst1.txtit made it a bit clearer for me on how to set it up.

author: PA0PBZ
author_rank: Super Contributor
timestamp: April 18, 2018, 10:22:24 pm
content: Quote from: Willyarma on April 18, 2018, 09:55:10 pmYup, that is the correct part

author: dexters_lab
author_rank: Unknown
timestamp: April 19, 2018, 07:18:57 am
content: Quote from: Willyarma on April 18, 2018, 09:55:10 pmthat'll be a AM2910? coincidentally Quantel use one of those on the disk sequencer card for the DPB-7000 classic paintboxbut yes, the 2952 is a bi-direction io portinterestingly there is mention of a bidi bus in the diagnostics menu that PA0PBZ posted upCode:ROM:A1A0 0000001A C CAROUSEL Diagnostics MenuROM:A1BA 00000027 C Uxx Bidi Bus Read Of Address xxROM:A1E1 00000028 C /yy Bidi Bus Write yy To Last xx

author: dexters_lab
author_rank: Unknown
timestamp: October 09, 2019, 04:42:28 pm
content: It's been a while since i posted here but i finally got around to fixing this machine.https://youtu.be/1617W06XVRA

author: dexters_lab
author_rank: Unknown
timestamp: November 01, 2019, 09:07:35 am
content: Here's some details on the completed 2nd revision of the board that replaces the STV1601 SDI Serialiser in the Quantel Ramcorder.The board is designed to plug in place of the STV1601, it contains only the TI/National CLC020ACQ SDI Serialiser and some passives. There is a 1.69k resistor that sets the SDI output levels, a decoupling cap (an old tantalum i robbed from something else!!), a pair of 75ohm resistor and 1nf cap on the two SDI outputs and finally a signal lock led and it's resistor. I also switched to 0805 size parts as i really struggled with 0403 without a microscope.The reason we picked the CLC020 is really it was one of the cheapest options, i although the CLC020 is discontinued i found a seller in China with stocks of over 150k units and was selling them for about $6 each. Many of the other options available were either more expensive, not 5v tolerant or only available in BGA.For the Quantel Ramcorder the output was originally passed through to a STV1389 SDI line driver and some additional passives contained on the SDI 'module' board but as the CLC020 contains a built in line driver this wasn't needed so i just added in what quantel did for the connection to the external ports using a two pin header. This means the SDI is not connected to the host system as it's tapped off directly from the CLC020.The SDI output from the CLC020 is not signal compatible with the STV1601 due to the built-in line driver so if the SX & SY output from the STV1601 does need to pass through to the host system some modification will be needed to remove the old ST1389 line driver and any related circuit. Essentially the STV1389 needs to be bypassed. This would be the case for the Quantel Paintbox where the SDI output eventually drops down to the host and ends up on a coax socket on the Video Output card.

author: SL4P
author_rank: Super Contributor
timestamp: November 01, 2019, 10:17:05 pm
content: OK, THAT’S ENOUGH ! I’m not VINTAGE - yet.I was halfway through my TV career when the RAMcorder appeared. We had a bunch of Quantel gear of all sorts.Even more interestingly, I was the post guy that worked closest with our Scanimate specialist in Australia, and that was a nasty piece of analog ! What’s the chance of that ?It was very thermally unstable, such that it needed ‘fine tuning’ every couple of hours at least.But it certainly could generate images that were otherwise unavailable...An interesting part of the Scanimate operation was the need to capture the CRT output on FILM(!) because the CRT traces were transient, and we needed the film to create continuous motion effects.(Hi to Russ and the other remnants of VTC / Image East !)

author: mikeselectricstuff
author_rank: Super Contributor
timestamp: November 02, 2019, 10:25:23 am
content: Quote from: SL4P on November 01, 2019, 10:17:05 pmThere are some intersting videos on Scanimate - this was a very clever idea that created geometrical effects by passing the scan waveforms for the CRT through an analogue computer.

author: dexters_lab
author_rank: Unknown
timestamp: September 21, 2022, 10:42:08 pm
content: sorry for pinging an old thread but thanks to the kindness of Willyarma providing the original code for their QCapture app, we have been making some improvements to the decoding of the ramcorder protocol.We also have some very good thoughts on creating a Ramcorder emulator on a PC!

author: SL4P
author_rank: Super Contributor
timestamp: September 22, 2022, 12:06:40 am
content: In high-end video post, I was lucky enough to work with most of the gear discussed above - even Scanimate ! .But I do remember when the RAMCORDER was announced, and apart from the cost, we were all drooling at the idea.No problem, we had a lot of other cool toys l and that (RAMCORDER) became irrelevant within a couple of years.Quantel did some really interesting stuff in the early days of digital video… the other standout wasAbekaswith their first-of-type equipment.

author: dexters_lab
author_rank: Unknown
timestamp: September 24, 2022, 07:45:10 am
content: Quote from: SL4P on September 22, 2022, 12:06:40 amHey that's cool, there's some speculation in our community that the ramcorder was destined for bigger things, like as a stand-alone product that could replace a VTR or something like an Abekas A60