Communication all looks good actually. Cabling and serial port are solid. The problem is only when it issues the initial dirent() as part of the directory listing process, and gets a hardware fault error code from the drive.

The drive firmware tried to run the disk and read the media, and failed, and said so.

It may possibly just be that the disk is not formatted. The disk needs to be formatted by the drive, it can not use the normal PC formatting the disk already has.

So verify:
* The drive has a good belt.
* The disk is DD not HD, aka 720K not 1.4M, aka has only one hole in one corner.
* The write-protect door in that one hole is closed (open=write-protect).
* The disk contains no data you care about.

Then in pdd.sh issue the "format" command.
Wait approximately one solar flare cycle.

Ok 100 seconds but feels like 11 years because there is no data on the wire all during that time and no way to monitor progress. Even in verbose mode the percent-done animation is just counting down the expected time which is known. And you can't do any better. You can not send any data to the drive during this time or it will just crash it. The client must just sit and wait for data from the drive, or abort if no data comes after some max possible time.

Maybe your drive has the same problem my Purple Computing drive has.
Everything works except actually accessing the media.
So like, something wrong with the drive head or it's signal amplifier maybe?
I have not figured out what's actually wrong with mine yet. That level of problem may be just a bit beyond me, figuring out how the head read circuit actaully works and where to probe with a scope and what to expect there etc. Though, I have a scope and haven't actually tried yet so who knows.

--
bkw


On 12/13/23 15:22, runrin wrote:
OK! I think there might be a problem with my PC cable.

With a standard 25 pin to 9 pin adapter and a gender changer on my M100
cable, I'm getting some output, but there may be some other issues with
the drive or cable.

I will paste my results below.

--------------------------------------------------------------------------------
`ready' without a disk:
--------------------------------------------------------------------------------

% VERBOSE=9 ./pdd.sh ready
get_tpdd_port()
Using port "/dev/ttyUSB0"
open_com()
set_stty()
speed 19200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1;
time = 1;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl
-ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0
vt0 ff0
-isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase -tostop
-echoprt echoctl echoke -flusho -extproc
do_cmd(ready)
_init()
fonzie_smack()
tpdd_drain()
tpdd_check()
tpdd_write(4D 31 0D)
tpdd_drain()
tpdd_check()
pdd2_unk23()
ocmd_send_req(23)
calc_cksum(23 00):DC
ocmd_send_req: fmt="23" len="00" dat="" chk="DC"
tpdd_write(5A 5A 23 00 DC)
ocmd_read_ret(100)
ocmd_read_ret: reading 2 bytes (fmt & len)
tpdd_read(2 100)
tpdd_wait(100)
tpdd_check()
tpdd_check()
Detected TPDD1
ocmd_ready()
ocmd_send_req(07)
calc_cksum(07 00):F8
ocmd_send_req: fmt="07" len="00" dat="" chk="F8"
tpdd_write(5A 5A 07 00 F8)
ocmd_read_ret()
ocmd_read_ret: reading 2 bytes (fmt & len)
tpdd_read(2)
tpdd_wait()
tpdd_check()
tpdd_wait: :0
tpdd_read: l=2 12 01
ocmd_read_ret: reading 2 bytes (data & checksum)
tpdd_read(2)
tpdd_wait()
tpdd_check()
tpdd_wait: :0
tpdd_read: l=2 71 7B
ocmd_read_ret: fmt=12 len=01 dat=(71) chk=7B
verify_checksum(12 01 71 7B)
calc_cksum(12 01 71):7B
verify_checksum: given:7B calc:7B
ocmd_check_err()
ocmd_check_err: ret_fmt=12 ret_len=01 ret_dat=(71) read_err="0"
ocmd_check_err: 71:Disk Not Inserted or Disk Change Error
Not Ready

ready: Disk Not Inserted or Disk Change Error

--------------------------------------------------------------------------------
ready with a disk in:
--------------------------------------------------------------------------------

% VERBOSE=9 ./pdd.sh ready
get_tpdd_port()
Using port "/dev/ttyUSB0"
open_com()
set_stty()
speed 19200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1;
time = 1;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl
-ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0
vt0 ff0
-isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase -tostop
-echoprt echoctl echoke -flusho -extproc
do_cmd(ready)
_init()
fonzie_smack()
tpdd_drain()
tpdd_check()
tpdd_write(4D 31 0D)
tpdd_drain()
tpdd_check()
pdd2_unk23()
ocmd_send_req(23)
calc_cksum(23 00):DC
ocmd_send_req: fmt="23" len="00" dat="" chk="DC"
tpdd_write(5A 5A 23 00 DC)
ocmd_read_ret(100)
ocmd_read_ret: reading 2 bytes (fmt & len)
tpdd_read(2 100)
tpdd_wait(100)
tpdd_check()
tpdd_check()
Detected TPDD1
ocmd_ready()
ocmd_send_req(07)
calc_cksum(07 00):F8
ocmd_send_req: fmt="07" len="00" dat="" chk="F8"
tpdd_write(5A 5A 07 00 F8)
ocmd_read_ret()
ocmd_read_ret: reading 2 bytes (fmt & len)
tpdd_read(2)
tpdd_wait()
tpdd_check()
tpdd_wait: :0
tpdd_read: l=2 12 01
ocmd_read_ret: reading 2 bytes (data & checksum)
tpdd_read(2)
tpdd_wait()
tpdd_check()
tpdd_wait: :0
tpdd_read: l=2 00 EC
ocmd_read_ret: fmt=12 len=01 dat=(00) chk=EC
verify_checksum(12 01 00 EC)
calc_cksum(12 01 00):EC
verify_checksum: given:EC calc:EC
ocmd_check_err()
ocmd_check_err: ret_fmt=12 ret_len=01 ret_dat=(00) read_err="0"
ocmd_check_err: 00:OK
Ready

--------------------------------------------------------------------------------
`ls' without a disk:
--------------------------------------------------------------------------------

VERBOSE=9 ./pdd.sh ls
get_tpdd_port()
Using port "/dev/ttyUSB0"
open_com()
set_stty()
speed 19200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1;
time = 1;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl
-ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0
vt0 ff0
-isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase -tostop
-echoprt echoctl echoke -flusho -extproc
do_cmd(ls)
_init()
fonzie_smack()
tpdd_drain()
tpdd_check()
tpdd_write(4D 31 0D)
tpdd_drain()
tpdd_check()
pdd2_unk23()
ocmd_send_req(23)
calc_cksum(23 00):DC
ocmd_send_req: fmt="23" len="00" dat="" chk="DC"
tpdd_write(5A 5A 23 00 DC)
ocmd_read_ret(100)
ocmd_read_ret: reading 2 bytes (fmt & len)
tpdd_read(2 100)
tpdd_wait(100)
tpdd_check()
tpdd_check()
Detected TPDD1
lcmd_ls()
--------  Directory Listing  --------
ocmd_dirent(  1)
ocmd_dirent: req: filename="" attr=0x00 action=1
ocmd_send_req(00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 01)
calc_cksum(00 1A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 01):E4
ocmd_send_req: fmt="00" len="1A" dat="00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 01" chk="E4"
tpdd_write(5A 5A 00 1A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 01 E4)
ocmd_read_ret(10000)
ocmd_read_ret: reading 2 bytes (fmt & len)
tpdd_read(2 10000)
tpdd_wait(10000)
tpdd_check()
tpdd_check()
tpdd_wait: 10000:100
tpdd_read: l=2 12 01
ocmd_read_ret: reading 2 bytes (data & checksum)
tpdd_read(2)
tpdd_wait()
tpdd_check()
tpdd_wait: :0
tpdd_read: l=2 71 7B
ocmd_read_ret: fmt=12 len=01 dat=(71) chk=7B
verify_checksum(12 01 71 7B)
calc_cksum(12 01 71):7B
verify_checksum: given:7B calc:7B
ocmd_check_err()
ocmd_check_err: ret_fmt=12 ret_len=01 ret_dat=(71) read_err="0"
ocmd_check_err: 71:Disk Not Inserted or Disk Change Error
-------------------------------------

ls: Disk Not Inserted or Disk Change Error

--------------------------------------------------------------------------------
`ls' with a disk:
--------------------------------------------------------------------------------

% VERBOSE=9 ./pdd.sh ls
get_tpdd_port()
Using port "/dev/ttyUSB0"
open_com()
set_stty()
speed 19200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1;
time = 1;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl
-ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0
vt0 ff0
-isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase -tostop
-echoprt echoctl echoke -flusho -extproc
do_cmd(ls)
_init()
fonzie_smack()
tpdd_drain()
tpdd_check()
tpdd_write(4D 31 0D)
tpdd_drain()
tpdd_check()
pdd2_unk23()
ocmd_send_req(23)
calc_cksum(23 00):DC
ocmd_send_req: fmt="23" len="00" dat="" chk="DC"
tpdd_write(5A 5A 23 00 DC)
ocmd_read_ret(100)
ocmd_read_ret: reading 2 bytes (fmt & len)
tpdd_read(2 100)
tpdd_wait(100)
tpdd_check()
tpdd_check()
Detected TPDD1
lcmd_ls()
--------  Directory Listing  --------
ocmd_dirent(  1)
ocmd_dirent: req: filename="" attr=0x00 action=1
ocmd_send_req(00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 01)
calc_cksum(00 1A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 01):E4
ocmd_send_req: fmt="00" len="1A" dat="00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 01" chk="E4"
tpdd_write(5A 5A 00 1A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 01 E4)
ocmd_read_ret(10000)
ocmd_read_ret: reading 2 bytes (fmt & len)
tpdd_read(2 10000)
tpdd_wait(10000)
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_check()
tpdd_wait: 10000:2300
tpdd_read: l=2 12 01
ocmd_read_ret: reading 2 bytes (data & checksum)
tpdd_read(2)
tpdd_wait()
tpdd_check()
tpdd_wait: :0
tpdd_read: l=2 80 6C
ocmd_read_ret: fmt=12 len=01 dat=(80) chk=6C
verify_checksum(12 01 80 6C)
calc_cksum(12 01 80):6C
verify_checksum: given:6C calc:6C
ocmd_check_err()
ocmd_check_err: ret_fmt=12 ret_len=01 ret_dat=(80) read_err="0"
ocmd_check_err: 80:Hardware Fault 0
-------------------------------------

ls: Hardware Fault 0

On Wed, Dec 13, 2023 at 02:54:59PM -0500, Brian K. White wrote:
I should write up some steps to verify things, both for the cable and for
pdd.sh. It's one thing to say "do this to make this" but then when it
doesn't work, then what? Is something broken or did you get a step wrong or
are the directions wrong?

One thing is with the solder blob in place, you should tell pdd.sh to run at
9600, which is not the default. ```$ BAUD=9600 pdd```
or issue "baud 9600" command after starting pdd. Since it's not the default,
if you hadn't used the baud command or variable then it wouldn't have worked
before you removed the solder blob.

With all jumpers open, the drive is at 19200 and the default in pdd.sh is
19200 so you're good to go now.

I have a FB100 with the blob still in place. So I can at least confirm that
with a good cable and drive and usb serial adapter, no disk inserted, door
opened or closed, "ready" and "ls" do work and the access light only blinks
for a split second and the motor never starts at all.

Getting no reaction at all sounds like no communication. I have a Purple
Computing drive that doesn't work, and just looks dead in a normal tpdd
client, but with pdd.sh I can tell that the controller is up and running
fine, accepting commands and returning results and communicating just fine,
and even reading the door-open, disk-inserted, & write-protect sensors,
merely it can't actually read or write media. On that drive, "ready" and
"ls" still work, at least in so far as they accept the command and return a
result, all sensibly. The "ls" just says there was a disk error, but the
point is the drive responds and SAYS disk error, because communication is
working.

You could try the verbose setting to see if you can tell if the drive is
responding at all, not at all, or with unexpected data that pdd.sh doesn't
understand.

Here is a capture of a short verbose session with a working FB100 with the
door open and no disk inserted. You will omit the BAUD=9600. I wanted to do
this on an actual FB100 just to be sure we're both testing the same things,
and mine still has the solder blob.

What we're looking for is, did the stty command at the beginning seem to
work? Some other problem like a permissions problem with my gimmicky sleep()
function that uses a trick with a fifo file to get a sleep function without
having to execute the external /bin/sleep? Did the drive ever return even a
single byte of anything? The verbosity shows every byte of traffic in either
direction, so, even if the data is unrecognized and not handled, you can
still see that there was data, or not.

bkw@fw:~$
bkw@fw:~$ BAUD=9600 VERBOSE=9 pdd ready
get_tpdd_port()
Using port "/dev/ttyUSB0"
open_com()
set_stty()
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt =
^R;
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 1;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon
-ixoff
-iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
ff0
-isig -icanon -iexten -echo echoe echok -echonl -noflsh -xcase -tostop
-echoprt
echoctl echoke -flusho -extproc
do_cmd(ready)
_init()
fonzie_smack()
tpdd_drain()
tpdd_check()
tpdd_write(4D 31 0D)
tpdd_drain()
tpdd_check()
pdd2_unk23()
ocmd_send_req(23)
calc_cksum(23 00):DC
ocmd_send_req: fmt="23" len="00" dat="" chk="DC"
tpdd_write(5A 5A 23 00 DC)
ocmd_read_ret(100)
ocmd_read_ret: reading 2 bytes (fmt & len)
tpdd_read(2 100)
tpdd_wait(100)
tpdd_check()
tpdd_check()
Detected TPDD1
ocmd_ready()
ocmd_send_req(07)
calc_cksum(07 00):F8
ocmd_send_req: fmt="07" len="00" dat="" chk="F8"
tpdd_write(5A 5A 07 00 F8)
ocmd_read_ret()
ocmd_read_ret: reading 2 bytes (fmt & len)
tpdd_read(2)
tpdd_wait()
tpdd_check()
tpdd_wait: :0
tpdd_read: l=2 12 01
ocmd_read_ret: reading 2 bytes (data & checksum)
tpdd_read(2)
tpdd_wait()
tpdd_check()
tpdd_wait: :0
tpdd_read: l=2 71 7B
ocmd_read_ret: fmt=12 len=01 dat=(71) chk=7B
verify_checksum(12 01 71 7B)
calc_cksum(12 01 71):7B
verify_checksum: given:7B calc:7B
ocmd_check_err()
ocmd_check_err: ret_fmt=12 ret_len=01 ret_dat=(71) read_err="0"
ocmd_check_err: 71:Disk Not Inserted or Disk Change Error
Not Ready

ready: Disk Not Inserted or Disk Change Error
bkw@fw:~$

----------------------

I'll break down some of that to explain what you're looking at:


tpdd_write(5A 5A 23 00 DC)
ocmd_read_ret(100)
ocmd_read_ret: reading 2 bytes (fmt & len)
tpdd_read(2 100)
tpdd_wait(100)
tpdd_check()
tpdd_check()
Detected TPDD1


This looks like we aren't displaying something because we sent 5A 5A 23 00
DC to the drive, and then just declared "detected tpdd1" without seeing the
response from the drive. In this case, that is actually how we detect tpdd1
is by the lack of response to that command.


ocmd_ready()
ocmd_send_req(07)
calc_cksum(07 00):F8
ocmd_send_req: fmt="07" len="00" dat="" chk="F8"
tpdd_write(5A 5A 07 00 F8)

Send the "ready" command,
which ultimately means send 5A 5A 07 00 F8 to the drive

ocmd_read_ret()
ocmd_read_ret: reading 2 bytes (fmt & len)
tpdd_read(2)
tpdd_wait()
tpdd_check()
tpdd_wait: :0
tpdd_read: l=2 12 01

Read a standard response packet from the drive,
which ultimately means to start by reading 2 bytes and interpret them to
tell how many more bytes to read for the rest of the response packet.

And we did get 2 bytes back from the drive, and they were 12 01

And then it goes on to interpret that as packet type 12 payload length 1,
which means read one more byte for the payload and one more after that for
the checksum, which gave us the payload error code 71 which was looked up
from a table of error codes to give us the human readable message for code
71.


----------------------------

Some basic physical stuff to check just so you have some baseline to know
what is normal. A lot of the drives normal correct behavior seems kind of
dead if you didn't know what to expect. Like how when you turn it on,
nothing happens. Two lights on the front and neither one lights, the motor
doesn't spin, etc.

Holding the drive in your hand, you should feel the motor nudge just a bit
every time you flip the power switch on. It doesn't spin even one rotation,
just a short vibration for 1/2 second or less. It doesn't matter if the door
is open or closed. It doesn't matter if there is a disk inserted or not. The
access light never comes on.

The battery light stays off at all times except it blinks on for a split
second every time you turn the power off.

----------------------------------------

Checking some electrical basics right at the drive itself without the cable
in the equation:

Looking at the rear of the drive, pin 1 is top-right, and pin 2 is bottom
right.

You should get continuity from pin 1 to the center pin of the power jack.

With the power ON, and a dmm in dc volts mode, black on pin 1, you should
get 5v on pin 3 and 0v on all other pins.


--------------------------------------

verifying the cable (probably should have started with this)

Looking into the drive-end of the cable, with the polarity key up, and
ignoring the two positions that form the polarity key,
pin 1 is top-left, pin 2 is bottom-left.


Looking into the pc end of the cable, with the long side up, the plug should
be 9-pin female, pin 1 is top-right, pin 6 is bottom-right.

(Regardless how the cable is constructed between those two ends, whether a
custom one-piece cable like you made using the WP-2/PC cable directions, or
using the cable meant for the 100 and adding the special 25f-9f adapter
linked in the hardware document in the pdd.sh readme. Point being I'm
testing the end-to-end connection with nothing that might change the pinout
left out. The only other "adapter" is just the usb-serial adapter which you
can consider as not an adapter but just a 9-pin male com port.)

https://raw.githubusercontent.com/bkw777/TPDD_Cable/master/DE9F_to_PC.jpg


With a dmm in continuity mode, you should get beeps with these, direction of
black vs red doesn't matter:

drive pin 1 to pc pin 5
drive pin 2 to pc pin 7
drive pin 5 to pc pin 4
drive pin 7 to pc pin 3

With a dmm in diode mode:

black on drive pin 3 to red on pc pin 6: 1.7v  (reversed: ol)
black on drive pin 4 to red on pc pin 8: 1.7v  (reversed: ol)
black on drive pin 6 to red on pc pin 2: 1.7v  (reversed: ol)


There are no pin-to-pin shorts within the cable at either end. In a normal
serial cable it's not wrong to have DCD connected to DSR right at the end in
the plug, which would be pin 1 to pin 6 both on the pc end here, but in this
case pin 1 on the pc end is not connected to anything and there are no other
things like that either. Just 7 individual 1:1 connections.

--------------------------------------------------------


I just performed all of these with my own working FB100 and cable.

I have used a variety of usb-serial adapters and I think every one I've used
has worked, but bad usb-serial adapters are definitely a thing, and I used a
good FTDI cable just now. Gearmo GM-FTDI2-LED-C for the record.

--
bkw














On 12/13/23 01:17, runrin wrote:
Hey all

I acquired an FB100 recently, popped it open and checked the belt, and
it looks brand new.

I spent a few hours building some of bwk's TPDD cables tonight and
testing it out, but I'm struggling to get the drive working.

When I connect the drive to my M100 and use the TS-DOS rom, the drive
access light pops up, and then it tells me my disk isn't formatted (it's
not). Then when I press "Y" to format, there is no activity on the
access light.

I tried hooking it up to my Linux box with the WP-2/PC cable and pdd.sh,
and I get no response at all from the drive. No access light at all even
with an `ls' or `ready' command.

I checked the jumpers on the bottom and one was bridged, so I tried
desoldering that (since the TPDD manual suggests setting the DIP
switches to all off), and it didn't make any difference.

Any thoughts what might be going on?

Thanks!!

--
bkw


--
bkw

Reply via email to