Jump to content

Reprogramming a Jobo ATL-1000 EPROM


Recommended Posts

<p>I just bought a Jobo ATL-1000 and wanted to be able to change program parameters like you can with an ATL-1500. I took the control panel eprom out (27c256-12), copied it and began looking at the code. Omer Hecht of Catlabs was very generous in helping me find information on the ATL hardware. After some examination, I was able to understand the contents of the chip and reprogram it without much difficulty. This post documents the operation of the chip so others can modify their systems. The usual disclaimers apply - I can't take any responsibility for bad things that happen if you reprogram your machine and it gets damaged or doesn't work. Don't try this unless you have a solid understanding of microprocessors, eproms and hardware control. Absolutely don't reprogram your original chip - copy the data from it and use that as a starting point for programming another chip. Additionally, my understanding of the architecture of the ATL-1000 is incomplete and still growing - maybe others in this community can correct my mistakes and add details and share them. Unfortunately, I must add that I have a full time day job so I can't spend a huge amount of time with this but I'll be glad to answer questions through this forum (I also happen to love photography and actually plan to process a bunch of film in the ATL!).</p>

<p>You cannot make an ATL-1000 into an ATL-1500 by changing the contents of the chip. Within some limits, you will be able to change the preset programs to meet your needs. One of the primary limits is that the first 8 programs are set at 100 degrees F. processing temperature, the next 7 are at 75 F. and the last (normally used for cleaning) is at room temperature. I think you are stuck with that. Also, the architecture of the control panel does not lend itself to 'on-the-fly' reprogramming like the 1500; you have to burn a new eprom with new data. I did realize by accident that you can pretty easily double the total number of programs from 16 to 32. When I started experimenting, I only had 512k byte chips available instead of the original 256's. They have the same number of pins and I put the same data in both the top and bottom half of the double-size chip and it works fine. In the future, I'll wire a switch to pin 1 of the chip (with pin 1 out of the socket) and by selectively taking the pin to ground or +5v., I'll be able to select whether the machine sees data set one or data set two.<br>

<br />So, here's what I found -<br>

<br />The data from the chip is in 16 obvious blocks, each of which corresponds to one of the processing programs, 1-16. I expected to see cpu instructions in the chip but when I examined the data, it looks like, well, data. After some study, I figured out that the processor in the ATL-1000/1500 is a National Instruments COP-8 which contains its own internal prom where the microprocessor code lives (BTW, that begs the question of figuring out how to back that up). The microprocessor's internal code appears to act as a virtual machine (maybe implemented as a state machine?) which executes the bytes from the eprom. At ATL startup, the cpu does some housekeeping tasks like making sure the water is up to temperature and then it reads the program selector dial. It then jumps to the portion of the eprom with the data for the selected process (for example, if you've set '16/clean', it goes to the first byte of the 16th data set in the eprom). Each 'program' in the eprom is given a fixed 2048 bytes (800h), located one after another. </p>

<p>Here's where things start to get interesting. It turns out that each byte is a tiny instruction which is executed and then followed by a pause of about 2.2 seconds, after which the processor fetches another byte and repeats until it sees a hex E0 which is the 'end of program' instruction. Basically, when film processing is running, the cpu just acts as an electrical switch mechanism and timer, turning things on and off per the instruction byte and then waiting a couple of seconds before fetching and executing the next one. The 2.2 second per byte number is somewhat inexact and is based on timing from the ATL instruction book, examining the original data and timing the actual machine. Reading the COP-8 architecture data indicates that the timer interrupt produces something nearer 2.097 seconds so there is likely some invisible latency and setup time involved.</p>

<p>The data (instruction) bytes are encoded as follows (bits numbered 7-0, left to right):<br>

bits 7-5 hold the process step number (or bottle number) - step 0 is pre-wet and 1-6 are bottles<br>

bit 4=1 sets 'rinse' for a process step (the rinse light comes on - maybe other things happen???)<br>

bit 3=1 opens the water inlet valve to fill the tank with water for rinsing<br>

bit 2=1 turns on the air pump to send chemicals from the selected bottle (bits 7-5) to the drum<br>

bit 1=1 stops drum rotation and picks up the drum for draining<br>

bit 0 - ??? - this is used in Jobo's data stream, typically at the end of a step, but it isn't clear what it does</p>

<p>In general, bits 4-0 are set to zero while film is just being rotated during processing. They are set to 1 for the amount of time (# of identical bytes = seconds/2.2) required to perform a given task such as chemical transfer from bottle to drum. So, the way the system works is that each 2.2 seconds of operation is encoded using a data byte, per above, and the process reads data until it sees a hexadecimal E0 instruction and stops. This leads us to another small programming limitation - you can only get enough bytes in 2k of eprom to time about 75 minutes at 2.2 seconds/byte - not really a big problem and, I believe, one that's shared with the 1500.</p>

<p>If you modify the programs, you need to pay attention to the times that are required to fill and drain things and you should think about whether timing starts when solution first enters the tank or after it's all there, etc. You can easily use the original program as a guide in these areas. So far, my only experiment has been to change the cleaning program from 6 bottles to 3 (like in the ATL-1500) and that worked perfectly.<br>

<br />Please let me know if you are able to add to this knowledge and if you are able to apply it successfully.<br>

Mark</p>

 

Link to comment
Share on other sites

  • 8 months later...

<p>Update: 12/31/13<br>

On further examination, it became clear that bit 0 is used to change the position of the rotary valve system. I don’t have a full plumbing diagram and have not disassembled the unit to understand the valve. Each time bit 0 is set to 1 and issued in the program, it steps the valve to the next bottle. I assume that the operating program sets the valve to bottle 1 when the machine is powered up but I have not verified that. After the use of each bottle in a program, bit 0 is set to one and a single program step is issued to move the rotary valve forward. I believe the valve may be “multi-deck” with valve segments to direct the flow of both air and liquid. <br>

The modified 5 minute black and white test routine I wrote several months ago using Ilford guidelines has now been successfully tested with both speeds of Tmax film, 400TX, HP5+, FP4+ and Delta 3200. Some of these have been tested in both 120 and 35mm sizes and all have worked well. The “Ilford” program has been used with Ilfosol-3, Xtol and Tmax developers with good results.<br>

I have now rewritten each of the five original black and white programs (numbers 9-13) to use the “Ilford cycle” with only two chemicals, develop and fix (bottles 1 and 2). The new programs run much quicker than the original Jobo code per current Ilford guidelines which skip the pre-wet and stop bath steps (stop is not required unless the fixer is to be reused). The developing times are per the original Jobo code, followed by a short rinse and a fix of a nominal 3.75 minutes (providing a minimum fix of 3 minutes at 80% time). The chemistry cycles are timed from after the last bottle fill instruction to and including the final drain instruction. The fix cycle is followed by a 6.25 minute wash (which provides a minimum of 5 minutes at 80%). The wash time is conservative; it could probably be shorter but Ilford (a bit ambivalently) specifies both 3 changes of water and a five minute minimum. This cycle provides 8 changes of water in a five minute period and is patterned after the original Jobo wash code.<br>

The cleaning cycle (number 16) has been modified to work with only bottles 1-3 to save time. This cleaning cycle works with all processes except the early 6 chemical E-6 programs.<br>

The code has been burned into a double size eprom (27c512 instead of the original 27c256) with the new code in the bottom half of the memory and the original code in the top half. Pin 1 of the chip was bent out so it cannot contact the socket. A 10k ohm resistor has been soldered between pins 1 and 28 and a single-pole/single-throw switch has been wired from pin 1 to pin 14. Pin 1 is the highest address select pin and this arrangement allows the user to select either the modified code in the upper memory area or, by flipping the switch, the original code in the lower address area. Closing the switch takes pin 1 from its default of high (5v.) through the resistor to low (0v.) and changes which half the chip is addressed. A small hole was drilled in the ATL-1000 deck just to the front of and below the two adjustment knobs. The switch was mounted there so it is protected when the cover is closed.<br>

Mark</p>

Link to comment
Share on other sites

  • 3 years later...

Hi there, sorry for taking this up from the grave. I'm interested into changing one of the programs on ATL1000. I'm using C41 minilab chemistry in CPE2, i replenish it and it works fabulous. I would like to do that in ATL1000 but i need some custom steps to recover the chems without contamination as i do that in CPE2. So is this possible and how?

 

1. C41 developer from bottle 1 3:15

2. Acetic acid stop from bottle 2 0:30

3. Rinse 1:30

4. Rinse from bottle 3 0:30 (to clean the yellow drain)

5. Bleach from bottle 4 1:30 (this should be 0:45 but a little longer time is to be on a safe side)

6. Rinse 2:30

7. Rinse from bottle 5 0:30 (to clean the yellow drain)

8. Fixer from bottle 6 2:00 (this should be 1:30 but a little longer time is to be on a safe side)

9. Final rinse

 

This custom replenished process will allow you get chemicals from yellow drain hose, replenish them and use them again.

Link to comment
Share on other sites

Congratulations on your programming experiment! The very lucky thing is that the EPROM is still available... :cool:

 

Repairing older amateur radio gear, I find many EPROM, MPU/CPU, and register components are now unobtainium--and must be sourced from "New Old Stock" or parted out salvage. The device you are using for those interested is readily available from both DigiKey and Mouser at approximately $1.60 each.

 

Memory | DigiKey

 

Have fun!

 "I See Things..."

The FotoFora Community Experience [Link]

A new community for creative photographers.  Come join us!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...