Jump to content
IGNORED

FujiNet8000? (Z80-CP/M module)


bcombee

Recommended Posts

@mozzwald Sorry, before you even ask: I almost never have time downstairs to do anything on the W10 machine without a customer coming in and distracting me.

My helper in the store likes to either sleep or JA3K 06f, so I don't have much time each day to spend on constructive things. Sadly, I work w/ idiots... Someday, maybe I'll get enough time to leave the store Hopefully I will be able to get this working. I refuse to run W10 on my home machine cause it SPIES.

 

:)

 

Edited by Kyle22
  • Haha 1
Link to comment
Share on other sites

13 hours ago, Kyle22 said:

Thanks. Is there a link to the compiled firmware that includes this?

There currently is no way to define which CCP to use for runcpm but this could be added. Can you share a link to the ZCPR3 you want to use. If I get time I will try to tackle the issue.

 

I know jack and squat about CP/M but I think I can make the firmware load the user requested CCP. The plan is to add a configuration option to fnconfig.ini on the SD card and if it's there, use that binary.

  • Like 3
Link to comment
Share on other sites

20 hours ago, Kyle22 said:

Is there a link to the compiled firmware that includes this?

I think I was able to successfully load the NZCOM from here (tarball) from the SD Card. The extent of my testing was starting runcpm and doing a DIR listing (did I mention I dunno anything about cpm?).

 

Here's what the debug output looks like:

17:07:14.335 > CF: 50 58 0d 00 b5
17:07:14.335 > sioModem::sio_process() called
17:07:14.335 > ACK!
17:07:14.335 > Modem cmd: STREAM
17:07:14.337 > ->SIO write 9 bytes
17:07:14.337 > COMPLETE!
17:07:14.342 > set_baudrate change from 19200 to 9600
17:07:14.342 > Modem streaming at 9600 baud
17:07:18.731 > AT Cmd: ATCPM
17:07:18.731 > set_baudrate change from 9600 to 9600
17:07:18.738 > Loading external CPM CCP: CCP-ZCP3.60K

I modified lib/device/sio/siocpm.cpp like so:

void sioCPM::sio_handle_cpm()
{
    _puts(CCPHEAD);
    _PatchCPM();
    Status = 0;

    Debug_printf("Loading external CPM CCP: %s\r\n", CCPname);
    _RamLoad((char *)CCPname, CCPaddr);    // Loads the CCP binary file into memory
    Z80reset();                             // Resets the Z80 CPU
    SET_LOW_REGISTER(BC, _RamRead(0x0004)); // Sets C to the current drive/user
    PC = CCPaddr;                           // Sets CP/M application jump point
    Z80run();                               // Starts simulation

    if (Status == 1) // This is set by a call to BIOS 0 - ends CP/M
    {
        cpmActive = false;
        free(RAM);
    }
}

and lib/runcpm/globals.h like so:

/* Definition of which CCP to use (must define only one) */
//#define CCP_INTERNAL	// If this is defined, an internal CCP will emulated
//#define CCP_DR
//#define CCP_CCPZ
//#define CCP_ZCPR2
#define CCP_ZCPR3
//#define CCP_Z80

The code is looking for your ZCPR3 of choice on the root of the SD Card with the filename CCP-ZCP3.60K. If the file is not there, the runcpm emulator will constantly reset. I am providing the compiled firmware with minimal instructions to flash it from command line. I cannot push this code as a firmware update to be used with the flash tool as it will break cpm for other users. This is as far as I can go with this. Looking at the runcpm code made my brain hurt and realize I'm in way over my head. I'll stick to being a solder jockey leave the programming to the programmers ;) 

 

Good luck on your BBS adventure and do tell if this works for you

 

fujinet-fw-202220109-ccp-zcp3.zip

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...
56 minutes ago, Kyle22 said:

I can't get NZCOM to work. Same problem. Could it be that because There may have been an SD card in @ time of flashing? I don't know if I have that Pin 12 or 15 thing.

I'll try again tomorrow w/o the SD card in.

 

if the flash succeeded and the fujinet boots, it worked.

 

How can I tell that I've loaded ZCPR3? ie, is there a new command not available in older CCPs? is there a version command?

Link to comment
Share on other sites

OK, then the flash worked, but NZCOM didn't.

The way to find out is: Get a copy of NZCOM files on A0: and type MKZCM NZCOM.

After you save it, type NZCOM to start it.

Is there an easy way to contact the original guy mockba the Borg (or similar) that created it? ESP32 is out of my field of expertise. I can understand Z80 and 65xxx code.

There must be a way to make it work.

Search paths, Named Directories, and SO much more. Z-System is amazingly powerful.

 

Have a good one.

 

Link to comment
Share on other sites

1 minute ago, Kyle22 said:

OK, then the flash worked, but NZCOM didn't.

The way to find out is: Get a copy of NZCOM files on A0: and type MKZCM NZCOM.

After you save it, type NZCOM to start it.

Is there an easy way to contact the original guy mockba the Borg (or similar) that created it? ESP32 is out of my field of expertise. I can understand Z80 and 65xxx code.

There must be a way to make it work.

Search paths, Named Directories, and SO much more. Z-System is amazingly powerful.

 

Have a good one.

 

it is extremely presumptuous for you to think that we would already know how to make this work.

-Thom

Link to comment
Share on other sites

5 minutes ago, Kyle22 said:

I was only looking for a solution. NZCOM is to CP/M as SDX is to AtariDOS.

 

You're not LOOKING for a solution. You're LOOKING for someone to HAND you a solution. Difference.

-Thom

 

p.s. I am getting _VERY_ tired of people unwilling to come out of their comfort zone to roll up their sleeves and figure out what can solve their problems, working the problem one piece at a time. No, they're expecting the few of us working on the code to just magically cook up a solution for something only those with the problem want or understand.

 

If you want it, PLEASE... do the elbow grease and try to work the problem. It is workable.

 

-Thom

 

Edited by tschak909
Link to comment
Share on other sites

I am only searching for information. Someone must have wanted to do NZCOM before on the ESP32. All I want is the best functionality possible.

FN is VERY impressive so far.

I used to have fun writing for CP/M Versions of the M$ & DR languages both interpreted and compiled. I prefer compiled languages. Straight up Z80ASM is ALWAYS nice.

 

NOT trying to fight or argue in ANY way. All I am looking for is FUNCTIONALITY. I know is is possible.

 

Cheers.

Have a good evening.

 

Link to comment
Share on other sites

You never answered my question: "How can I tell that I've loaded ZCPR3? ie, is there a new command not available in older CCPs? is there a 'version' command?". If you don't know, a simple "I don't know" would suffice.

 

I'll say again that I don't know anything about CP/M and seeing as nobody else is interested in helping at the moment except me, you are going to have to help me out here. 

14 hours ago, Kyle22 said:

The way to find out is: Get a copy of NZCOM files on A0: and type MKZCM NZCOM.

After you save it, type NZCOM to start it.

Can you provide these files for testing?

14 hours ago, Kyle22 said:

Is there an easy way to contact the original guy mockba the Borg (or similar) that created it? ESP32 is out of my field of expertise. I can understand Z80 and 65xxx code.

You can open an issue in the runcpm github repo

 

Edited by mozzwald
Link to comment
Share on other sites

17 hours ago, Kyle22 said:

Is there an easy way to contact the original guy mockba the Borg (or similar) that created it?

I have asked the RunCPM developer and unfortunately NZCOM won't work with it. Case closed. This is his response:

Quote

RunCPM doesn't have a real CP/M Bios and BDOS on it. The whole thing is emulated as an abstraction layer which connects the CP/M calls to the underlying operating system, in order to translate file accesses to the underlying oprating system's equivalent ones.
This allows "regular" CP/M programs to run on top of the host system while all disk access (non-physical) is translated.   This way the "regular" CP/M programs "think" they are running on a real CP/M machine.

There is a problem though when we use "advanced" CP/M programs, the ones that will implement direct access to the disk tracks and sectors will fail, because the hardware doesn't exist.   The ones which will embed them onto the CP/Ms memory by capturing BDoS and BIOS memeory addresses will also fail, because the memory is not really there, it is all emulated.

I have not been able yet to understand how NZCOM behaves, but its description is saying that it implements a layer on top of CP/Ms BDOS, thus implementing additional features to the operating system.
If this is done by "hooking" CP/Ms BIOS and BDOS calls, then it will not work at all.

---

The files contained in the NZCOM LBR file suggest that it implements its own BIOS

nzcomlbr.thumb.png.a2d6257898ce53a5f14d4a44cdc63540.png

---

This piece is on NZCOMs user guide:

nzcomguide.png.86ca9a5467ce3abf2cdb465d8695240c.png

This means NZCOM replaces the underlying BDOS/BIOS calls, therefore it will not work with RunCPM, unfortunately.

One cannot replace the command processor for example, as it is hardcoded onto RunCPM.

 

  • Like 3
Link to comment
Share on other sites

37 minutes ago, Kyle22 said:

Thanks so much for finding the answer. I really appreciate it.

 

Next step in the process: I need to find a hard drive adapter that will work on the Indus.

 

Your tenacity isn't what makes my eye twitch.


it's that you spin your wheels doing the most wrong thing possible, while simultaneously ensuring you'll never find a workable solution by not listening to anyone with actual experience.

There is something very....very wrong with you.

 

-Thom

Edited by tschak909
  • Like 1
  • Haha 2
Link to comment
Share on other sites

Case and point, the CP/M module in fujinet can be extended with more BDOS commands. I've done this to add fujinet functionality:

 

https://github.com/FujiNetWIFI/fujinet-platformio/blob/master/lib/runcpm/cpm.h#L829

https://github.com/FujiNetWIFI/fujinet-platformio/blob/master/lib/runcpm/abstraction_fujinet.h#L603

 

and suddenly, you're able to do the following from the Z80 side:

https://github.com/FujiNetWIFI/fujinet-cpm-tools/blob/main/listen/src/listen.c

 

This, coupled with the fact that CP/M usage is completely abstracted to the point where storage is only limited by the SD card space, this creates a better environment.

 

Why are you wasting your time doing the dumbest approach possible?

 

-Thom

  • Haha 1
Link to comment
Share on other sites

runcpm is kind of quick and dirty, it's expedience made it the cut and paste quit fixup go to. It can lead to difficulties when trying to port plato etc.. to the party, cromenco dazzler graphics etc.

but you can see they extended bdos in the github...

 

maybe...

https://planemo.org/2014/07/28/z80pack-cp-m-emulator-and-nz-com/

someone like @apc might peruse this way of doing things... it might be a good choice to port

 

Edited by _The Doctor__
stopped while writing Thom responded...
  • Like 2
Link to comment
Share on other sites

2 minutes ago, _The Doctor__ said:

runcpm is kind of quick and dirty, it's expedience made it the cut and paste quit fixup go to. It can lead to difficulties when trying to port plato etc.. to the party, cromenco dazzler graphics etc.

but you can see they extended bdos in the github...

 

maybe...

https://planemo.org/2014/07/28/z80pack-cp-m-emulator-and-nz-com/

someone like @apc might peruse this way of doing things... it might be a good choice to port

 

with a Tektronix 4014 emulator, the TEK4014 GSX driver can be used, and a port of platoterm becomes possible (or any other GSX program)

 

The 4014 protocol is well documented, and somebody sufficiently motivated (and not working on a dozen other related things in fujinet) could whip one up in a week.

http://www.urbanjost.altervista.org/LIBRARY/libvogle/drivers/tek.html

 

-Thom

 

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...