Dataman S4
The Dataman S4 is a battery powered PROM programmer.
This one has 512 kbytes RAM.
- Serial number: 15282
- file formats: Ascii, Intel, Motorola, TekHex, Binary
- baud rates: 300, 600, 1200, 2400, 4800, 9600, 14400, 28800, 115200
Links
Dataman S4 Support, S4 resources, 2716 on S4, EPROM memory size chart, Wikipedia: Intel HEX,
Libraries
main library v2.93, flash library v1.14,
Hints
Hints: a device which is empty and ready for programming will display "BLANK" after a test ("PR"), if it says "WILL BURN" it means that it is partly programmed..., the Dump ("DU") command via serial interface works on the memory of the S4, you need to Load ("LO") the contents from the device first,
History
2021-03-10: the S4 had flat batteries again, so I had to perform the How to recharge a flat S4 procedure again. For my model this is: hold in the reset button, and then plug in the charger. Then continue to hold the reset button for 30 seconds. after that you can turn on the S4. If necessary force your unit to charge the battery by pressing the right-hand cursor key until the display reads that the charger is switched ON. Once this has been established then turn the S4 off by the switch (not by the power supply). The display will now inform you that S4 will switch off when charging is complete. Then when the display goes blank, your unit is fully charged.
2017-06-13: minicom (v2.7, on Fedora 25) supports these speeds: 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600 (and higher). Not a perfect match for the S4: only 9600 and 115200 within its range. If I try to start minicom with '-b 28800' or '-b 14400' it just selects 115200. Oh well.
2017-05-02: Intel Hex format on the S4 is "between" i8hex / i16hex as it uses type 00, 01, 02 records. i8hex is type 00, 01. i16hex is type 00, 01, 02, 03 per Wikipedia article.
2016-11-24: added links a couple of libraries for the S4 that I have. At least one of them isn't on the Dataman resources web page in the version I have.
2013-11-01: receive a new library: pressing "RL" and sending a file:
>RECEIVE LIBRARY ~>Local file name? /home/tingo/work/s4/HexE293.hex
After receiving, the display on the S4 displayed the checksum, and no keys worked, it hung. After resetting the S4, and answering with ENTER to the Start Library, the S4 now display this (on serial) when turned on:
DATAMAN S4 LIB 2.93 512K BYTES RAM >
Cool.
2013-03-25: send data at 9600 bps, to see if that works better.
root@kg-t2# cu -l /dev/cuau0 -s9600 Connected
Next turn off beautify (be), and turn on hardwareflow (hf):
>~[set] !be hf=on ~v beautify false baudrate 9600 dialtimeout 60 eofread eofwrite eol escape ~ exceptions force \^P framesize 1024 host cu9600 log /var/log/aculog phones prompt \^J raise false raisechar \^@ record remote script false tabexpand false verbose false SHELL /bin/sh HOME /root echocheck false disconnect tandem true linedelay 0 chardelay 0 etimeout 0 rawftp false halfduplex false localecho false parity none hardwareflow true linedisc 0 direct true
set up a receive file:
>~[set] rec=2716-1.log
turn on scripting
~[set] sc
send data
>SEND MOTOROLA 00800,0FFFF [...] S123FFC04BDE1392021242C068628A70400A14080E501800D2009B6F400640ED8E48BDF3C4 S123FFE08693A03C304480E46C0C010040007510C6810B050135F2DF88002251022399FDDE S9030000FC
turn off scripting
>~[set] !sc
and disconnect
>~ [EOT]
Next, check file:
root@kg-t2# file 27* 2716-1.log: ASCII text, with CRLF, CR line terminators, with overstriking root@kg-t2# wc -l 2716-1.log 1989 2716-1.log
Convert:
root@kg-t2# dos2unix 2716-1.log
try srec_cat:
root@kg-t2# srec_cat 2716-1.log -o 2716-1.rom -binary srec_cat: 2716-1.log: 1: warning: no header record root@kg-t2# l 2* 2716-1.log 2716-1.rom
Ok, it did convert even without header record.
2013-03-25: I connected the S4 to a computer again (I used t2, the floppy machine). The S4 needs a straight serial cable, so I used a DB9F - DB9M cable (32-5852) and a DB9F - DB25M
adapter (like this one). Connecting at 115200 works (cu -l /dev/cuau0 -s115200
) - good to have a real serial port. Note: use ssh -e none t2 to get a transparent connection if you are
connecting from another machine.
I dumped a 2716 (E)PROM. First at 00000-007FF, then at 00800-00FFF, in case it matters.
Fixing the files:
tingo@kg-t2$ dos2unix test.log tingo@kg-t2$ dos2unix test2.log
Looks good?
tingo@kg-t2$ file *log test.log: ASCII text, with very long lines, with no line terminators test2.log: ASCII text, with very long lines, with no line terminators
Not sure about that. Try with wc:
tingo@kg-t2$ wc -l test2.log 0 test2.log tingo@kg-t2$ wc -l test.log 0 test.log
Hmm, probably not good. Let's try srec_cat:
tingo@kg-t2$ srec_cat test.log -o 2716_test.rom -binary srec_cat: test.log: 1: end-of-line expected
Ok, that won't do. Let's try again.
root@kg-t2# cu -l /dev/cuau0 -s115200 Connected
Next, set up to receive (using ~s):
>~[set] rec=2716-1.log ~[set] sc
Next I press "se":
>SEND MOTOROLA 00800,0FFFF (when I press enter the transfer starts, and ends like this) S123FFE08693A03C304480E46C0C010040007510C6810B050135F2DF88002251022399FDDE S9030000FC >
Ok. Turn off script:
>~[set] !sc
and quit:
>~ [EOT] root@kg-t2#
What does the file look like now?
root@kg-t2# file 27* 2716-1.log: ASCII text, with very long lines, with no line terminators root@kg-t2# wc -l 27* 0 2716-1.log
Not any better. I must check on variables.
root@kg-t2# cu -l /dev/cuau0 -s115200 Connected >~v beautify true baudrate 115200 dialtimeout 60 eofread eofwrite eol escape ~ exceptions force \^P framesize 1024 host cu115200 log /var/log/aculog phones prompt \^J raise false raisechar \^@ record remote script false tabexpand false verbose false SHELL /bin/sh HOME /root echocheck false disconnect tandem true linedelay 0 chardelay 0 etimeout 0 rawftp false halfduplex false localecho false parity none hardwareflow false linedisc 0 direct true
Ok, try to set hardwareflow:
>~[set] hf=true
verify:
~v beautify true baudrate 115200 dialtimeout 60 eofread eofwrite eol escape ~ exceptions force \^P framesize 1024 host cu115200 log /var/log/aculog phones prompt \^J raise false raisechar \^@ record remote script false tabexpand false verbose false SHELL /bin/sh HOME /root echocheck false disconnect tandem true linedelay 0 chardelay 0 etimeout 0 rawftp false halfduplex false localecho false parity none hardwareflow true linedisc 0 direct true
Try again.
>~[set] rec=2716-l1.log ~[set] sc >SEND MOTOROLA 00800,0FFFF [...] S123FFE08693A03C304480E46C0C010040007510C6810B050135F2DF88002251022399FDDE S9030000FC
turn off scripting and disconnect, then check file:
root@kg-t2# file 2716-l1.log 2716-l1.log: ASCII text, with very long lines, with no line terminators root@kg-t2# wc -l 2716-l1.log 0 2716-l1.log
Ok, next try, hf true and be off.
~[set] !be ~v beautify false baudrate 115200 dialtimeout 60 eofread eofwrite eol escape ~ exceptions force \^P framesize 1024 host cu115200 log /var/log/aculog phones prompt \^J raise false raisechar \^@ record remote script false tabexpand false verbose false SHELL /bin/sh HOME /root echocheck false disconnect tandem true linedelay 0 chardelay 0 etimeout 0 rawftp false halfduplex false localecho false parity none hardwareflow true linedisc 0 direct true
Set up files again:
>~[set] rec=2716-1.log >~[set] sc
send file again, then test:
root@kg-t2# file 27* 2716-1.log: ASCII text, with CRLF, CR line terminators, with overstriking root@kg-t2# wc -l 2716-1.log 1942 2716-1.log
Looks better, now convert dos 2 unix:
root@kg-t2# dos2unix 2716-1.log
check file again
root@kg-t2# file 27* 2716-1.log: ASCII text, with overstriking root@kg-t2# wc -l 2716-1.log 1942 2716-1.log
looks better. Now, can srec_cat make something out of it?
root@kg-t2# srec_cat 2716-1.log -o 2716-1.rom -binary srec_cat: 2716-1.log: 1: warning: no header record srec_cat: 2716-1.log: 1940: hexadecimal digit expected
No. Let's try at 9600 instead.
2013-03-16: the S4 had flat batteries again, so I had to perform the How to recharge a flat S4 procedure again. For my model this is: hold in the reset button, and then plug in the charger. Then continue to hold the reset button for 30 seconds. after that you can turn on the S4. If necessary force your unit to charge the battery by pressing the right-hand cursor key until the display reads that the charger is switched ON. Once this has been established then turn the S4 off by the switch (not by the power supply). The display will now inform you that S4 will switch off when charging is complete. Then when the display goes blank, your unit is fully charged.
2011-09-02: after the battery replacement, I had to load the library ROM again.
2011-09-02: battery replacement: I removed the old backup battery, and soldered the new holder in its place. When I tried closing the case, it conflicted with the main battery compartment; not good. I solved it by soldering a couple og wires to the holder so I could shift it a bit and used double sided tape to hold it to the printed circuit board. That way I could close the case. Inserted backup battery, connected main battery and beeper, connected charger and performed the recharge a flat S4 procedure (I had to try it a few times before I managed to power up my S4), but now it works. Nice!
2011-09-02: the new battery from Dataman arrived. Courier story: TNT tried to deliver on Wednesday August 31st at 12:56, but didn't find anyone home. They passed the parcel to Bring, which tried to deliver the parcel on Friday September 2nd at 11:46, but wrote into their tracking system "recipient address not found" and passed it to the post office, where I collected it after work. Funny that a Norwegian courier company (which is the business end of the national postal service) couldn't find my address when an international courier company could.
2011-09-01: the parts from ELFA arrived.
2011-08-28: the backup battery was down too, so I ordered a holder (Keystone 105) and a CR2430 battery from ELFA. Don't know if it will fit inside the S4 (space is tight) but I will try. ELFA part numbers: 69-502-08 battery holder for 24mm batteries (Keystone 105), 69-274-61 battery CR2430.
2011-08-26: I ordered a new battery pack from Dataman.
2011-04-10: after much fiddling, I have found out how to transfer files from the S4 to a computer: - use a machine with a real serial port, don't bother with those usb-to-serial
adapters (I tried two, and both had trouble with overruns, at 9600 bps!). Use cu to connect: cu -l /dev/cuau1 - s9600
, then use the script facility to record what you type. Example,
I had a 27C256 EPROM (PLCC) that I wanted to dump: on the S4 I selected the correct type with the PROM key, selecting 27C256, then I used the LOAD key which came up with the
correct default values: 00000-07FFF=00000. I used the SETUP key to select MOTOROLA file format (SREC), 9600 bps and /RTS handshaking. I then connected a serial cable from
the S4 to my FreeBSD machine (I used the machine htpc, as it has a real serial port, /dev/cuau1
), and connected with cu:
cu - l /dev/cuau1 -s9600
using ~v I viewed the variables of cu, then I used ~s (set) to set the file to record to: rec=filename.log, then I used ~s again to turn on script: sc. I sent the command
SEND 00000,07FFF
to the S4. After that I turned off scripting again with ~s !sc. The resulting file was processed with dos2unix (from unix2dos) to
remove dos line endings, then edited to remove lines before and after the SREC dump. The final step was to use srec_cat (from srecord)
to convert the file back to binary: srec_cat z3rom3.mot.hex -o z3rom3.rom -binary
. All done.
2010-08-18: I bought a used Dataman S4 through FINN Torget, for NOK 300.-. It came with a charger, The Dataman S4 Library ROM (v2.14), a PLCC adapter 28-32 and the manual. The manual includes 2 x 3.5 inch floppies labeled "Dataman S4Driver V2" (one original and one copy). A DB25M gender changer was also included. It seems like the items missing are the Write Lead (2mm plug to Minihook) and the EMULead (ribbon cable with 32 pin DIL plug).