Announcement

Collapse

Forum etiquette

Our mission ...

This forum is part of our mission to promote the preservation of vintage computers through education and outreach. (In real life we also run events and have a museum.) We encourage you to join us, participate, share your knowledge, and enjoy.

This forum has been around in this format for over 15 years. These rules and guidelines help us maintain a healthy and active community, and we moderate the forum to keep things on track. Please familiarize yourself with these rules and guidelines.


Remain civil and respectful

There are several hundred people who actively participate here. People come from all different backgrounds and will have different ways of seeing things. You will not agree with everything you read here. Back-and-forth discussions are fine but do not cross the line into rude or disrespectful behavior.

Conduct yourself as you would at any other place where people come together in person to discuss their hobby. If you wouldn't say something to somebody in person, then you probably should not be writing it here.

This should be obvious but, just in case: profanity, threats, slurs against any group (sexual, racial, gender, etc.) will not be tolerated.


Stay close to the original topic being discussed
  • If you are starting a new thread choose a reasonable sub-forum to start your thread. (If you choose incorrectly don't worry, we can fix that.)
  • If you are responding to a thread, stay on topic - the original poster was trying to achieve something. You can always start a new thread instead of potentially "hijacking" an existing thread.



Contribute something meaningful

To put things in engineering terms, we value a high signal to noise ratio. Coming here should not be a waste of time.
  • This is not a chat room. If you are taking less than 30 seconds to make a post then you are probably doing something wrong. A post should be on topic, clear, and contribute something meaningful to the discussion. If people read your posts and feel that their time as been wasted, they will stop reading your posts. Worse yet, they will stop visiting and we'll lose their experience and contributions.
  • Do not bump threads.
  • Do not "necro-post" unless you are following up to a specific person on a specific thread. And even then, that person may have moved on. Just start a new thread for your related topic.
  • Use the Private Message system for posts that are targeted at a specific person.


"PM Sent!" messages (or, how to use the Private Message system)

This forum has a private message feature that we want people to use for messages that are not of general interest to other members.

In short, if you are going to reply to a thread and that reply is targeted to a specific individual and not of interest to anybody else (either now or in the future) then send a private message instead.

Here are some obvious examples of when you should not reply to a thread and use the PM system instead:
  • "PM Sent!": Do not tell the rest of us that you sent a PM ... the forum software will tell the other person that they have a PM waiting.
  • "How much is shipping to ....": This is a very specific and directed question that is not of interest to anybody else.


Why do we have this policy? Sending a "PM Sent!" type message basically wastes everybody else's time by making them having to scroll past a post in a thread that looks to be updated, when the update is not meaningful. And the person you are sending the PM to will be notified by the forum software that they have a message waiting for them. Look up at the top near the right edge where it says 'Notifications' ... if you have a PM waiting, it will tell you there.

Copyright and other legal issues

We are here to discuss vintage computing, so discussing software, books, and other intellectual property that is on-topic is fine. We don't want people using these forums to discuss or enable copyright violations or other things that are against the law; whether you agree with the law or not is irrelevant. Do not use our resources for something that is legally or morally questionable.

Our discussions here generally fall under "fair use." Telling people how to pirate a software title is an example of something that is not allowable here.


Reporting problematic posts

If you see spam, a wildly off-topic post, or something abusive or illegal please report the thread by clicking on the "Report Post" icon. (It looks like an exclamation point in a triangle and it is available under every post.) This send a notification to all of the moderators, so somebody will see it and deal with it.

If you are unsure you may consider sending a private message to a moderator instead.


New user moderation

New users are directly moderated so that we can weed spammers out early. This means that for your first 10 posts you will have some delay before they are seen. We understand this can be disruptive to the flow of conversation and we try to keep up with our new user moderation duties to avoid undue inconvenience. Please do not make duplicate posts, extra posts to bump your post count, or ask the moderators to expedite this process; 10 moderated posts will go by quickly.

New users also have a smaller personal message inbox limit and are rate limited when sending PMs to other users.


Other suggestions
  • Use Google, books, or other definitive sources. There is a lot of information out there.
  • Don't make people guess at what you are trying to say; we are not mind readers. Be clear and concise.
  • Spelling and grammar are not rated, but they do make a post easier to read.
See more
See less

CP/NET, anyone?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    CP/NET, anyone?

    I'm starting this thread because there has been some interest in getting CP/NET running on various platforms or environments. The intent of this thread is to have a place to discuss and work on implementations, or a jumping-off point to spawn new threads for specific implementations.

    In recent years I've worked on a CP/M 3 version of CP/NET, and also have a JAVA CP/NET server that runs on MAC and Linux and should work on Windows.

    For the purposes of emulations, the "network device" emulation need not (necessarily) match any real hardware. One can design a simple data path that uses INIR/OUTIR, for example, and requires very simple Z80 code to implement the SNIOS.

    For real hardware, some sort of physical interface is required. The simplest is probably a serial port, although there is a lot more capability provided by Ethernet modules such as those based on the WizNET W5500 chip, which provides TCP/IP sockets with very little Z80/8080 overhead.

    As background and a starting point, here is a modified copy of the original Digital Research CP/NET manuals, with my extensions for CP/M 3: http://sebhc.durgadas.com/mms89/wiz850io/dri-cpnet.pdf

    In addition, here is a document about a WizNET W5500-based implementation on Heathkit H8 computers (with a Z80): http://sebhc.durgadas.com/mms89/wiz8...T-WIZ850io.pdf. This document explains how I chose to interface the CP/NET domain to modern TCP/IP networks.

    I also have a github repo where I am keeping CP/NET client source code, although it has become a catch-all and contains a lot more than just CP/NET. The CP/NET code is pretty much contained in the 'net' subdirectory. https://github.com/durgadas311/MmsCpm3. Apologies to Zilog mnemonics enthusiasts, I use Intel+Z80.LIB. Lets keep flames about that on a separate thread...

    I am currently working with someone on a RC2014 version of CP/NET using that platform's MT011 adapter to the "Featherwing" WizNET W5500 module. This adapter is nearly identical to the Heathkit WIZ850io adapter, and so shares most of the code.

    The CP/NET server JAVA code is shared separately, but we can discuss that as need/interest be.
    - Doug

    #2
    Hey Doug, noob question: is CP/NET CP/M Plus only or could it be used on CP/M 2.2; if so, how much BIOS space does it need? It'd be really interesting to retro fit a network adapter to a Superbrain or other 2.2 system..

    Comment


      #3
      Originally posted by JonB View Post
      Hey Doug, noob question: is CP/NET CP/M Plus only or could it be used on CP/M 2.2; if so, how much BIOS space does it need? It'd be really interesting to retro fit a network adapter to a Superbrain or other 2.2 system..
      Originally, DRI only released a CP/M 2.2 version of CP/NET (CP/NET v1.2 was the last). A few years ago I ported NDOS 1.2 to CP/M 3 and made it into an RSX. So, both are available, once you have a working SNIOS.
      - Doug

      Comment


        #4
        Originally posted by durgadas311 View Post
        The CP/NET server JAVA code is shared separately, but we can discuss that as need/interest be.
        As I've written in the other thread, I am working on an emulator to run a standard CP/M 2.2 (in a non-standard environment). CP/NET seems to be the easiest way of accessing the host file system through the emulation and requires only writing a simple NIOS.

        However, I need to implement the complete server side within the emulator (which is written in C), which is a much bigger undertaking. The original server ran on MP/M, which is not useful to me.

        Do you know of decent CP/NET implementations with source code?

        Originally posted by JonB View Post
        Hey Doug, noob question: is CP/NET CP/M Plus only or could it be used on CP/M 2.2; if so, how much BIOS space does it need? It'd be really interesting to retro fit a network adapter to a Superbrain or other 2.2 system..
        It was designed for CP/M 2.2 and was a dynamic overlay on top of BDOS. It does not take any memory unless started, but I don't know how big it is.

        Comment


          #5
          Originally posted by Svenska View Post
          ...
          Do you know of decent CP/NET implementations with source code?
          ....
          I've got a JAVA implementation, which could be converted to C/C++. An alternative would be to use the JAVA socket server as-is and create a socket client in your emulation.

          I posted some source code here: http://sebhc.durgadas.com/mms89/wiz8...cketserver.tgz. This is not the full source code, I left off the Diablo630 code for supporting LST: devices, that's probably an additional project. The parts related to MagNetHFB are to support a legacy Heathkit H89 network adapter from the early 1980s,

          There's also the JAVA socket server at http://sebhc.durgadas.com/mms89/wiz8...cketServer.jar. If you want to go that route, feel free to ask more questions on it. It uses TCP/IP sockets and expects raw CP/NET messages to be sent on the socket connection, and sends back CP/NET responses. It includes the Diablo630 emulation for LST: devices. It is not a complete Diablo630, but supports the basic carriage control sequences and produces postscript files. It supports the print sequences used by Magic Wand.
          - Doug

          Comment


            #6
            We've got a more-formal github repo setup for CP/NET. It is here: https://github.com/durgadas311/cpnet-z80. Still working on cleaning it up, but the build procedure should work on Linux (and probably MAC). Has support for a basic serial transport, virtual/emulated abstract device, and WizNET W5500 adapters for Heathkit H8/H89 and RC2014 computers.
            - Doug

            Comment


              #7
              cpnet-0.8 is a pretty good start. CP/net server written in C. both versions 1.1 and 1.2. I've been using it for years.
              It uses serial for the physical transport, but the code is well organized. It wouldn't be all that hard to support ethernet.
              At least at the server end.
              If you use a USB connection to to something like the FTDI parallel adapter it's screaming fast.

              joe

              Comment


                #8
                The repository at https://github.com/durgadas311/cpnet-z80 is coming along nicely. There are CP/NET server JAR files there, as well as documentation for them. I am working on a version that supports the Digital Research reference SNIOS implementation serial port protocol (e.g. cpnet-0.
                - Doug

                Comment


                  #9
                  I've created a version of CP/NET 1.2 for the Kaypro, using the "serial data" port as the server connection. This is compatible with the CpnetSerialServer server in the github repository, when configured for the "DRI" protocol. I don't have real hardware to run it on, so there may be some issues with timeouts, but it does work on my simulator. Server documentation: https://github.com/durgadas311/cpnet...rialServer.pdf

                  If someone with a Kaypro is willing to try this out, contact me and I can help get it setup.

                  Client (Kaypro) software bundle: http://sebhc.durgadas.com/kaypro/cpnet12.tgz
                  - Doug

                  Comment


                    #10
                    Hello durgadas311,

                    thank you for your cpnet project.

                    I could read your information on retro-comp.

                    At the moment I am trying a cpnet installation with a Kaypro 4/84 and Acer notebook (Linux 18.4).

                    With the cpnet-0.8 I was able to achieve success. Unfortunately nut
                    cpnerldr, login password netstat, network. logoff.
                    You do not work in the network.
                    Example: pip g [0]: = a: d.com goes.
                    d (Enter) no display.

                    I think the getcwd function needs to be changed!

                    cc -O3 -c main.c
                    main.c: In function main:
                    main.c: 241: 5: warning: ignoring return value of getcwd, declared with attribute warn_unused_result [-Wunused-result]
                    getcwd (buf, 1024);
                    ^ ~~~~~~~~~~~~~~~~~
                    cc -O3 -c cpnet11.c
                    cc -O3 -c cpnet12.c
                    cc -O3 -c cpmutl.c
                    cc -O3 -c netio.c
                    cc -O3 -c sio.c
                    cc -O3 -c inifile.c
                    cc -g -o cpnet main.o cpnet11.o cpnet12.o cpmutl.o netio.o sio.o inifile.o

                    Your version could be created.
                    After cpnerldr comes an error message
                    Initerr ??

                    Let's see.

                    Greetings Kurt

                    Comment


                      #11
                      Originally posted by jlang View Post
                      cpnet-0.8 is a pretty good start. CP/net server written in C. both versions 1.1 and 1.2. I've been using it for years.
                      It uses serial for the physical transport, but the code is well organized. It wouldn't be all that hard to support ethernet.
                      At least at the server end.
                      If you use a USB connection to to something like the FTDI parallel adapter it's screaming fast.

                      joe
                      Hi joe,

                      you can tell you the exact setting and version of the Kaypro and Linux cpnet-0.8.

                      The adaptation to the CC (2020) is missing.

                      main.c:241:5: warning: ignoring return value of getcwd, declared with attribute warn_unused_result [-Wunused-result]
                      getcwd(buf, 1024);

                      Kurt

                      Comment


                        #12
                        Unfortunately, cpnet-0.8 server is not compatible with the cpnet-z80 project I work on. I have not had much luck trying to gather support to reconcile the differences. At this point, you need to use the SNIOS and Server(s) in cpnet-z80 together. I have not been able to try the cpnet-0.8 client (CP/M, SNIOS) code to see if it is compatible with the cpnet-z80 servers.
                        - Doug

                        Comment


                          #13
                          Originally posted by durgadas311 View Post
                          I've created a version of CP/NET 1.2 for the Kaypro, using the "serial data" port as the server connection. This is compatible with the CpnetSerialServer server in the github repository, when configured for the "DRI" protocol. I don't have real hardware to run it on, so there may be some issues with timeouts, but it does work on my simulator. Server documentation: https://github.com/durgadas311/cpnet...rialServer.pdf

                          If someone with a Kaypro is willing to try this out, contact me and I can help get it setup.

                          Client (Kaypro) software bundle: http://sebhc.durgadas.com/kaypro/cpnet12.tgz
                          Thank you for your information.

                          I tried to use this configuration.
                          Does it mean the Java doesn't work.

                          Did I get something wrong?

                          Kurt

                          Comment


                            #14
                            Kurt, I will need more information about what is not working, and what you tried.
                            - Doug

                            Comment


                              #15
                              Originally posted by durgadas311 View Post
                              Kurt, I will need more information about what is not working, and what you tried.
                              Hi,

                              I installed the version cpnet-z80-master according to its description on a Linux64 - Ubuntu 18.4.
                              Transfer the software cpnet12kp to the Kaypro.

                              Client setting:
                              9600, n, 8.1 rts / cts

                              Server setting:
                              cpnet_tty = / dev / ttyUSB0 9600
                              cpnet_flow_control = rts / cts

                              Action:
                              cpnetldr OK
                              login network fail
                              network I: = I: works.
                              netstat: Messages OK
                              srvstat: error message

                              The connection does not seem to exist.
                              I'm not a JAVA speci. Where and how can I set the baud rate
                              fixed to 9600, n, 8.1?

                              The serial connection between Kaypro and notebook works
                              with kermit or xmodem or pcget perfectly.

                              The other option, cpnet-0.8, works partially.

                              greeting
                              Kurt

                              Comment

                              Working...
                              X