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).