
General  
Tools  
Xbasic setup  
My Programs  
My Experience  
Disclaimer
General:
NOTE: THIS STUFF IS PENDING AT THE MOMENT !
I POSSIBLY IRREPARABLY DESTROYED THE FIRMWARE IN MY
REX WITH WRITING COMMANDS WHICH ARE AN UNDOCUMENTED
FEATURE IN THE
VERSION WHICH CAN BE DOWNLOADED FURTHER DOWN ON THIS PAGE. READING AND ALL
OTHER COMMANDS SHOULD BE SAFE.
I am developing software to contact the Rex 6000 PDA
through serial communication. On this page you can find the
tools I use and the programs I have written so far. The goal
is to create a package which allows to synchronize
without the software provided by Xircom and thus to synchronize
other Personal Information Managers.
Tools:
Portmonitor
XBasic
XBasic setup:
The probably most compatible way to talk to a serial port through Xbasic
is to use the windows API. These have to be declared to Xbasic. The standard
declarations do, however, not declare all necessary functions.
Thus here a
modified kernel32 declarations file.
You need to replace the standard
kernel32.dec in xb/include with this one.
My Programs:
The following XBasic programs are published under the
Gnu Public License
The latest code (rename to .x extension!):
Establish communications, request
firmware version and get and set time and read
the memory. All controlled through a command file.
Old codes:
My first XBasic attempt
My second XBasic attempt
My third and successful XBasic attempt
Establish communications and request firmware version
Establish communications, request
firmware version and ask for time
Establish communications, request
firmware version and get and set time
My Experience:
- 7-Aug-2001
-
The newest code is much improved in
that it now is controlled by a command file and does not need
to be compiled any more to be used.
Write or modify a command file,
put into the directory where you have the executable
code (see below for the dll business)
or into the bin directory of the Xbasic tree and
you are able to send commands to the Rex and read memory
pages (both physical and logical) into a file.
I am not sure whether the logical page handling is ok yet.
Have a look at it and tell me what you think.
Next step will be the reverse. Writing to the Rex.
It is, however, unclear to me how much checking I want to
do before I send the content of a file to the Rex.
All assuming that writing works at all ;-)
I was able to read to up logical page 0x0DE . All with offset 0.
I have not found any data at other offsets. Is there ?
- 30-Jul-2001
-
The newest code should read 1MB of
firmware. Comment out the extra write statement of the
memory addresses to get a hopefully one-to-one copy.
And here are two standalone programs to read the firmware.
You can read with or
without memory addresses saved in the
log file. It takes quite a while to read the memory (>15 min).
You also need to copy the XBasic
runtime library into the directory where you are running the
program (or into your windows installation directory).
If you don't want to run the programs, here is the output
I got with and without
memory addresses.
- 26-Jul-2001
-
The newest code contains a second
read function which is used for addins. This might be the thing
I was missing yesterday. So there might be one read function for
the firmware and one for the user space.
I have again created two log files possibly covering parts of the
address space in the firmware.
Here is what I read:
Part 3 and
Part 4.
- 25-Jul-2001
-
No new features in the code
today. Just a little error handling.
I have read data from several addresses of the Rex memory.
But I have not been successful in getting a complete
idea how it is structured yet. From what I have seen at a
quick look it seems I am NOT reading the firmware part
but only the userspace memory. It is however strange that
I there find pieces of the add-ins which according to
Chris'
firmware map
seem to reside in the firmware part (or am I wrong?).
Anyway, here are two logs of parts of my Rex's memory
(don't use the private information for nasty things like
spamming ;-). The addresses from which I read them
are in the files too. They are the params 1 and 2 from the
serial protocol analysis by sorry don't know whom.
I always tried to read 512 Byte chunks but got various sizes
as answers. I assume the rest is filled with 0xFF's.
I had difficulties on reads when I increased param 2.
They mostly resulted in empty responses.
Here is what I read:
Part 1 and Part 2
Any ideas on how to interpret the address space I covered and
the possible relation to the firmware space would be
greatly appreciated.
- 24-Jul-2001
-
The latest code
is now able to read parts of the Rex's memory. I now only have to
find out what data is stored where and I would be able to
download all the information stored. Next step will be
to test writing. A funny thing which possibly makes reading
(and writing ?) rather slow is that at maximum 512 Bytes
are written at a time (at least it looks like that).
I haven't had any success in reading more at a time.
- 19-Jul-2001
-
The latest code
is able to get and set the time of the Rex. Not surprisingly
the process is rather quick compared to the speed of
RexTools.
- 18-Jul-2001
-
Continued improving the code.
It now calculates the checksum and is able to read the time
off the Rex.
Next step will be to set the time. Should not be difficult :-)
- 16-Jul-2001
-
I cleaned up the code
and prepared it for
further extension. It's still doing the same thing as the
previous code: Open communication and get firmware number.
- 15-Jul-2001
-
My third and successful XBasic attempt
- 12-Jul-2001
-
Ok, got a little further. I found several bugs in the first version.
I seem now to be able to send the correct characters
to the Rex. But I haven't gotten any response yet. The only difference I can
see at the moment are two more function calls to SetCommEventMask and
GetCommError. But I wasn't able to call them properly yet.
The updated Xbasic code is here
My second XBasic attempt
and a protocol of what that is writing
A portmon log of the second basic program
When you compare the two log files you will see that they are pretty close.
Amazingly enough I still don't get a response.
- 11-Jul-2001
-
Here is a log of all the windows API function calls RexTools is using
during the initialization:
A portmon log of the RexTools initialization
My first XBasic attempt
Opens a COMM port in a way similar to what RexTools are doing.
Disclaimer:
Copyright © 2001 by Gerd Krahmann . All rights reserved.
SOFTWARE ON THIS PAGE IS NOT A PRODUCT MADE BY XIRCOM INC.
THE AUTHOR HAS NO CONNECTION WITH XIRCOM. REX IS A TRADEMARK
HELD BY XIRCOM.
XIRCOM DOES NOT PROVIDE ANY SUPPORT REGARDING THE USE OF
THE SOFTWARE. ALL SOFTWARE PROVIDED BY THE AUTHOR HAS BEEN
CREATED BY INFORMATION FOUND ON THE INTERNET AND
BY TRIAL AND ERROR.
The software found on this page and written by me
is free software; you can redistribute it and/or modify it under the
terms of the GNU
General Public License.
The software is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.