tu58fs - PDP-11 file sharing with TU58 tape emulator, now RT-11

2017-02-07 Thread Jörg Hoppe

Next milestone reached:

tu58fs 1.0 now supports the RT-11 file system, additional to DOS11/XXDP 
(phew!)


And its easier to use: I also precompiled binaries für Linux x64, Win32 
Cygwin, ARM Beaglebone Black and RPi.
Also some batch files show typical usage, XXDP/RT-11 tape and disk 
images are included.


Docs on http://retrocmp.com/tools/tu58fs
Precompiled releases at https://github.com/j-hoppe/tu58fs/releases

The RT-11 filesystem has the special features of "extended directory 
entries" and "file prefixes". These are fully supported by tu58fs, but I 
never heard of real-life usage. Anybody can talk about it, or has RT-11 
images with dir extension and/or file prefixes?


best,
Joerg




Re: tu58fs - PDP-11 file sharing with TU58 tape emulator

2017-01-24 Thread Jörg Hoppe

Am 24.01.2017 um 14:26 schrieb Mouse:

Can't believe that FreeBSD has no baudrate > 38400 !

serial.c:443:44: error: use of undeclared identifier 'B300'
serial.c:444:16: error: use of undeclared identifier 'B250'
serial.c:445:16: error: use of undeclared identifier 'B200'

At least some systems don't use B constants except for
compatability - they simply stick the baudrate in c_ospeed and/or
c_ispeed.  (I don't use FreeBSD myself; I don't know whether it's one
of them or not.)

But there were a bunch of other undefined symbols too, many of which
(eg, CRDLY, NLDLY) I don't recognize and which are not present in at
least one other termio implementatino (NetBSD's).  So at least part of
the problem is that the code isn't all that portable.

I notice you used gmake, from which I infer the Makefile is
GNU-make-specific, which makes it at least somewhat likely the code was
written for Linux, which makes the nonportabilities less surprising.
(Code being written for Linux correlates positively, in my experience,
with it assuming every system matches the developer's.  Not that this
is necessarily bad - I've done it myself often enough, though not often
with Linux - but it does, to some extent, explain what you're seeing.)

You're right, it's Linux.
And for other systems we must start to #ifdef lots of Unix-flavour 
specific termios code into serial.c.


Joerg



Re: tu58fs - PDP-11 file sharing with TU58 tape emulator

2017-01-24 Thread Jon Elson

On 01/24/2017 01:33 AM, Jörg Hoppe wrote:


Hmmm, anyone out there who understands FreeBSD termios(4) .
Can't believe that FreeBSD has no baudrate > 38400 !

Hmmm, I use minicom all the time at 115200 baud.  Depending 
on what actual serial hardware you have, this may be a 
hardware limit.  If it uses a baud rate divisor chip rather 
than a more flexible divider, it may not be able to go faster.


Jon


Re: tu58fs - PDP-11 file sharing with TU58 tape emulator

2017-01-24 Thread Mouse
> Can't believe that FreeBSD has no baudrate > 38400 !

>> serial.c:443:44: error: use of undeclared identifier 'B300'
>> serial.c:444:16: error: use of undeclared identifier 'B250'
>> serial.c:445:16: error: use of undeclared identifier 'B200'

At least some systems don't use B constants except for
compatability - they simply stick the baudrate in c_ospeed and/or
c_ispeed.  (I don't use FreeBSD myself; I don't know whether it's one
of them or not.)

But there were a bunch of other undefined symbols too, many of which
(eg, CRDLY, NLDLY) I don't recognize and which are not present in at
least one other termio implementatino (NetBSD's).  So at least part of
the problem is that the code isn't all that portable.

I notice you used gmake, from which I infer the Makefile is
GNU-make-specific, which makes it at least somewhat likely the code was
written for Linux, which makes the nonportabilities less surprising.
(Code being written for Linux correlates positively, in my experience,
with it assuming every system matches the developer's.  Not that this
is necessarily bad - I've done it myself often enough, though not often
with Linux - but it does, to some extent, explain what you're seeing.)

/~\ The ASCII Mouse
\ / Ribbon Campaign
 X  Against HTMLmo...@rodents-montreal.org
/ \ Email!   7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B


Re: tu58fs - PDP-11 file sharing with TU58 tape emulator

2017-01-24 Thread Jörg Hoppe


Hmmm, anyone out there who understands FreeBSD termios(4) .
Can't believe that FreeBSD has no baudrate > 38400 !

Joerg


On Fri, Jan 20, 2017 at 8:51 PM, Jörg Hoppe  wrote:

If you like to have a look (and play beta tester):

Docs on http://retrocmp.com/tools/tu58fs
C sources and makefile on https://github.com/j-hoppe/tu58fs

FWIW, It doesn't compile on FreeBSD (yes, I do not know if it is supposed to)
tingo@kg-core1$ gmake
cc -I. -c -UWINCOMM  -ggdb3 -O0 -m64 main.c -o freebsd-amd64/main.o
cc -I. -c -UWINCOMM  -ggdb3 -O0 -m64 getopt2.c -o freebsd-amd64/getopt2.o
getopt2.c:228:20: warning: using the result of an assignment as a
condition without parentheses [-Wparentheses]
 for (i = 0; odesc = _this->option_descrs[i]; i++)
 ~~^
getopt2.c:228:20: note: place parentheses around the assignment to
silence this warning
 for (i = 0; odesc = _this->option_descrs[i]; i++)
   ^
 (  )
getopt2.c:228:20: note: use '==' to turn this assignment into an
equality comparison
 for (i = 0; odesc = _this->option_descrs[i]; i++)
   ^
   ==
getopt2.c:364:21: warning: using the result of an assignment as a
condition without parentheses [-Wparentheses]
 for (i = 0; odesc = _this->option_descrs[i]; i++)
 ~~^
getopt2.c:364:21: note: place parentheses around the assignment to
silence this warning
 for (i = 0; odesc = _this->option_descrs[i]; i++)
   ^
 (  )
getopt2.c:364:21: note: use '==' to turn this assignment into an
equality comparison
 for (i = 0; odesc = _this->option_descrs[i]; i++)
   ^
   ==
getopt2.c:439:20: warning: using the result of an assignment as a
condition without parentheses [-Wparentheses]
 for (i = 0; odesc = _this->option_descrs[i]; i++)
 ~~^
getopt2.c:439:20: note: place parentheses around the assignment to
silence this warning
 for (i = 0; odesc = _this->option_descrs[i]; i++)
   ^
 (  )
getopt2.c:439:20: note: use '==' to turn this assignment into an
equality comparison
 for (i = 0; odesc = _this->option_descrs[i]; i++)
   ^
   ==
getopt2.c:646:16: warning: using the result of an assignment as a
condition without parentheses [-Wparentheses]
 for (i = 0; s = odesc->fix_args[i]; i++) {
 ~~^~~~
getopt2.c:646:16: note: place parentheses around the assignment to
silence this warning
 for (i = 0; s = odesc->fix_args[i]; i++) {
   ^
 ( )
getopt2.c:646:16: note: use '==' to turn this assignment into an
equality comparison
 for (i = 0; s = odesc->fix_args[i]; i++) {
   ^
   ==
getopt2.c:651:16: warning: using the result of an assignment as a
condition without parentheses [-Wparentheses]
 for (i = 0; s = odesc->var_args[i]; i++) {
 ~~^~~~
getopt2.c:651:16: note: place parentheses around the assignment to
silence this warning
 for (i = 0; s = odesc->var_args[i]; i++) {
   ^
 ( )
getopt2.c:651:16: note: use '==' to turn this assignment into an
equality comparison
 for (i = 0; s = odesc->var_args[i]; i++) {
   ^
   ==
getopt2.c:751:20: warning: using the result of an assignment as a
condition without parentheses [-Wparentheses]
 for (i = 0; odesc = _this->option_descrs[i]; i++) {
 ~~^
getopt2.c:751:20: note: place parentheses around the assignment to
silence this warning
 for (i = 0; odesc = _this->option_descrs[i]; i++) {
   ^
 (  )
getopt2.c:751:20: note: use '==' to turn this assignment into an
equality comparison
 for (i = 0; odesc = _this->option_descrs[i]; i++) {
   ^
   ==
getopt2.c:754:26: warning: the value of the size argument in 'strncat'
is too large, might lead to a buffer overflow [-Wstrncat-size]
 strncat(linebuff, " ", sizeof(linebuff));
^~~~
getopt2.c:754:26: note: change the argument to be the free space in
the destination buffer minus the terminating null byte
 strncat(linebuff, " ", sizeof(linebuff));
^~~~
  

Re: tu58fs - PDP-11 file sharing with TU58 tape emulator

2017-01-23 Thread Torfinn Ingolfsen
On Fri, Jan 20, 2017 at 8:51 PM, Jörg Hoppe  wrote:
>
> If you like to have a look (and play beta tester):
>
> Docs on http://retrocmp.com/tools/tu58fs
> C sources and makefile on https://github.com/j-hoppe/tu58fs

FWIW, It doesn't compile on FreeBSD (yes, I do not know if it is supposed to)
tingo@kg-core1$ gmake
cc -I. -c -UWINCOMM  -ggdb3 -O0 -m64 main.c -o freebsd-amd64/main.o
cc -I. -c -UWINCOMM  -ggdb3 -O0 -m64 getopt2.c -o freebsd-amd64/getopt2.o
getopt2.c:228:20: warning: using the result of an assignment as a
condition without parentheses [-Wparentheses]
for (i = 0; odesc = _this->option_descrs[i]; i++)
~~^
getopt2.c:228:20: note: place parentheses around the assignment to
silence this warning
for (i = 0; odesc = _this->option_descrs[i]; i++)
  ^
(  )
getopt2.c:228:20: note: use '==' to turn this assignment into an
equality comparison
for (i = 0; odesc = _this->option_descrs[i]; i++)
  ^
  ==
getopt2.c:364:21: warning: using the result of an assignment as a
condition without parentheses [-Wparentheses]
for (i = 0; odesc = _this->option_descrs[i]; i++)
~~^
getopt2.c:364:21: note: place parentheses around the assignment to
silence this warning
for (i = 0; odesc = _this->option_descrs[i]; i++)
  ^
(  )
getopt2.c:364:21: note: use '==' to turn this assignment into an
equality comparison
for (i = 0; odesc = _this->option_descrs[i]; i++)
  ^
  ==
getopt2.c:439:20: warning: using the result of an assignment as a
condition without parentheses [-Wparentheses]
for (i = 0; odesc = _this->option_descrs[i]; i++)
~~^
getopt2.c:439:20: note: place parentheses around the assignment to
silence this warning
for (i = 0; odesc = _this->option_descrs[i]; i++)
  ^
(  )
getopt2.c:439:20: note: use '==' to turn this assignment into an
equality comparison
for (i = 0; odesc = _this->option_descrs[i]; i++)
  ^
  ==
getopt2.c:646:16: warning: using the result of an assignment as a
condition without parentheses [-Wparentheses]
for (i = 0; s = odesc->fix_args[i]; i++) {
~~^~~~
getopt2.c:646:16: note: place parentheses around the assignment to
silence this warning
for (i = 0; s = odesc->fix_args[i]; i++) {
  ^
( )
getopt2.c:646:16: note: use '==' to turn this assignment into an
equality comparison
for (i = 0; s = odesc->fix_args[i]; i++) {
  ^
  ==
getopt2.c:651:16: warning: using the result of an assignment as a
condition without parentheses [-Wparentheses]
for (i = 0; s = odesc->var_args[i]; i++) {
~~^~~~
getopt2.c:651:16: note: place parentheses around the assignment to
silence this warning
for (i = 0; s = odesc->var_args[i]; i++) {
  ^
( )
getopt2.c:651:16: note: use '==' to turn this assignment into an
equality comparison
for (i = 0; s = odesc->var_args[i]; i++) {
  ^
  ==
getopt2.c:751:20: warning: using the result of an assignment as a
condition without parentheses [-Wparentheses]
for (i = 0; odesc = _this->option_descrs[i]; i++) {
~~^
getopt2.c:751:20: note: place parentheses around the assignment to
silence this warning
for (i = 0; odesc = _this->option_descrs[i]; i++) {
  ^
(  )
getopt2.c:751:20: note: use '==' to turn this assignment into an
equality comparison
for (i = 0; odesc = _this->option_descrs[i]; i++) {
  ^
  ==
getopt2.c:754:26: warning: the value of the size argument in 'strncat'
is too large, might lead to a buffer overflow [-Wstrncat-size]
strncat(linebuff, " ", sizeof(linebuff));
   ^~~~
getopt2.c:754:26: note: change the argument to be the free space in
the destination buffer minus the terminating null byte
strncat(linebuff, " ", sizeof(linebuff));
   ^~~~
   sizeof(linebuff) - strlen(linebuff) - 1
getopt2.c:760:26: warning: the value of the size argument in 'strncat'
is too large, might 

Re: tu58fs - PDP-11 file sharing with TU58 tape emulator

2017-01-21 Thread Mark J. Blair

> On Jan 20, 2017, at 11:51, Jörg Hoppe  wrote:
> 
> Guys,
> 
> I'm working on a special TU58 emulator called "tu58fs".
> It saves the "tape content" not only in a binary image file, but also as a 
> file set in a shared directory on the host.
> 
> The content of the "tape" (as seen by the PDP) changes automatically as files 
> are moved in and out of the shared dir.
> This works in both direction: creating/changing/deleting a file on the "tape" 
> modifies the files in the directory.

Neat!

> tu58fs is intended to be a general tool for easy file sharing between a PDP 
> and the modern world. For this as much DEC filesystems as possible should be 
> implemented.
> We need more than XXDP, but I wasn't able to find documents about the 
> structure of DOS-11, RT-11 or FILES-11/ODS-1.
> 
> Any links?

I've written (bad?) Python code to manipulate RT-11 filesystems, including on 
TU58 tape images:

https://github.com/NF6X/pyRT11

I don't remember which specific documentation I referred to when I wrote this 
code, but it may well have been something like this manual:

http://bitsavers.trailing-edge.com/pdf/dec/pdp11/rt11/v5.6_Aug91/AA-PD6PA-TC_RT-11_Volume_and_File_Formats_Manual_Aug91.pdf

-- 
Mark J. Blair, NF6X 
http://www.nf6x.net/



Re: tu58fs - PDP-11 file sharing with TU58 tape emulator

2017-01-21 Thread Jörg Hoppe

Mark,
thanks for your answer.
Your Phyton RT-11 code looks good to me, I'll rely on it at least as 
reference.


Joerg

I've written (bad?) Python code to manipulate RT-11 filesystems, including on 
TU58 tape images:

https://github.com/NF6X/pyRT11

I don't remember which specific documentation I referred to when I wrote this 
code, but it may well have been something like this manual:

http://bitsavers.trailing-edge.com/pdf/dec/pdp11/rt11/v5.6_Aug91/AA-PD6PA-TC_RT-11_Volume_and_File_Formats_Manual_Aug91.pdf





tu58fs - PDP-11 file sharing with TU58 tape emulator

2017-01-21 Thread Jörg Hoppe

Guys,

I'm working on a special TU58 emulator called "tu58fs".
It saves the "tape content" not only in a binary image file, but also as 
a file set in a shared directory on the host.


The content of the "tape" (as seen by the PDP) changes automatically as 
files are moved in and out of the shared dir.
This works in both direction: creating/changing/deleting a file on the 
"tape" modifies the files in the directory.


Today tu58fs passed the tests for standard XXDP tapes, good time to tell 
the world about it.


If you like to have a look (and play beta tester):

Docs on http://retrocmp.com/tools/tu58fs
C sources and makefile on https://github.com/j-hoppe/tu58fs

tu58fs is intended to be a general tool for easy file sharing between a 
PDP and the modern world. For this as much DEC filesystems as possible 
should be implemented.
We need more than XXDP, but I wasn't able to find documents about the 
structure of DOS-11, RT-11 or FILES-11/ODS-1.


Any links?

Joerg