• Please review our updated Terms and Rules here

NABU PC Emulation under MAME

Windows build of brijohn's code:


- updated built-in network adapter with remote and local functions
- changed caps lock to act like caps lock

edit: it wasn't actually updated when I first made this post due to a typo. Check your readme.txt, if 2022-12-27 is not in the changelog then download it again
 
Last edited:
Windows build of brijohn's code:


- updated built-in network adapter with remote and local functions
- changed caps lock to act like caps lock

edit: it wasn't actually updated when I first made this post due to a typo. Check your readme.txt, if 2022-12-27 is not in the changelog then download it again
Yep, just checked my readme.txt and redownloaded. Thanks for your updated Windows build. Even though I'm using real NABU hardware, what you, brijohn and others are doing is greatly appreciated.
 
Yeah thats what i was seeing as well. it takes the revised_path set by zippath_fopen and sets that as the image path. Initially things work since the first time it is called our path has not been revised, after a hard reset however we will be using the updated path.

I do have a fix that i think should work for this though. The revised_path is set by the OS dependent osd_get_full_path function. If we modify that function to check for a special path (socket,ptty,domain socket) and not in those cases try and get the full path then things work as expected. I'll look into making a patch to fix this issue.
New commit uploaded to my repo to fix the issue were mame creates a local file instead of opening a socket on a hard reset.

With this you should be able to do a hard reset (shift F3) and then reconnect properly to the external IA program.
 
With this you should be able to do a hard reset (shift F3) and then reconnect properly to the external IA program.

With a Windows build and using rom v29, I can confirm that a hard reset always brings up the cable/floppy option menu now.

A soft reset at the option menu boots from floppy, a soft reset when running from the IA reconnects to/loads from the IA, and a soft reset when booted from floppy reboots the floppy.
 
Ok, finally got cpm working and trying it with a Wyse WY-50 in mame

dVudvWi.png


run two instances of mame:

./mame -window wy50 -modem null_modem -bitb socket.127.0.0.1:5817
./mame nabupc -kbd nabu_hle -hcca null_modem -bitb socket.127.0.0.1:5816 -option1 fdc -bios 2 -option2 hdd -hard hdd.chd -option3 rs232 -option3:rs232:rs232 null_modem -bitb2 socket.127.0.0.1:5817
 
Ok, finally got cpm working and trying it with a Wyse WY-50 in mame

...

run two instances of mame:

./mame -window wy50 -modem null_modem -bitb socket.127.0.0.1:5817
./mame nabupc -kbd nabu_hle -hcca null_modem -bitb socket.127.0.0.1:5816 -option1 fdc -bios 2 -option2 hdd -hard hdd.chd -option3 rs232 -option3:rs232:rs232 null_modem -bitb2 socket.127.0.0.1:5817
I was able to get output working TO the Wyse 50 terminal, but can't seem to get keyboard working FROM (i've tried DEVICE,CONIN=KB,RS2 and other things). Am I thinking about this wrong or is the terminal an output only device?
 
I was able to get output working TO the Wyse 50 terminal, but can't seem to get keyboard working FROM (i've tried DEVICE,CONIN=KB,RS2 and other things). Am I thinking about this wrong or is the terminal an output only device?
Yes i have the same issue with using serial input for the terminal (either a separate Wyse emulation or the built in terminal). The input is definitely coming in when i enable logging i can see the emulated 8251 getting input, its just no one is reading that input. In addition testing rs3xfer from the leo1 disk, shows that i can capture serial input and save it to a file, so yeah input is working but when you try to use DEVICE,CONIN to tell the OS to use serial input it just never seems to read the input from the serial device that is receiving the input.
 
Yes i have the same issue with using serial input for the terminal (either a separate Wyse emulation or the built in terminal). The input is definitely coming in when i enable logging i can see the emulated 8251 getting input, its just no one is reading that input. In addition testing rs3xfer from the leo1 disk, shows that i can capture serial input and save it to a file, so yeah input is working but when you try to use DEVICE,CONIN to tell the OS to use serial input it just never seems to read the input from the serial device that is receiving the input.
Is it possible that there's an interrupt coming from the i8251 that isn't connected to the option bus. I've been looking at the option cards and I don't think that the set_int_line is getting used. Perhaps the i8251's rxrdy_handler triggers the interrupt? (I don't really know how it works, so I could be completely wrong)
 
Is it possible that there's an interrupt coming from the i8251 that isn't connected to the option bus. I've been looking at the option cards and I don't think that the set_int_line is getting used. Perhaps the i8251's rxrdy_handler triggers the interrupt? (I don't really know how it works, so I could be completely wrong)
Hmm yeah that is a possibility, I wasn't able to tell from the posted images if the int line was connected to anything on the option bus, but yeah that could be the issue. I'll test connecting it up in emulation for the card and see if that makes CONIN work correctly.
 
I know that updates were made to -hcca options hcca_local and hcca_remote, but were any changes made to the null_modem option? I can't seem to use any channel other than the Nabu Network cycles any more (at least with the v29 rom). My default startup is as follows:

Code:
mame nabupc -window -kbd nabu_hle -hcca null_modem -bitb socket.192.168.168.16:5816 -bios ver29 -option1 fdc -flop1 disks\nabupc\leo1.img -flop2 disks\nabupc\leo2.img

If I have the IA set for the RetroNET Chat channel, and I select Cable at the option menu, I get a "LOADING FROM CABLE - PLEASE WAIT" and it apparently attempts to do so for a couple of seconds, but then gives the message "LOADING FROM FLOPPY DISK" and proceeds to do just that. Demos give an "ADAPTER OR FLOPPY DISK FAILURE" (the Plasma demo sometimes leads to an endless loop, or gives an option menu with CABLE and HARD DISK options?).

I am using the latest (12/27) iteration of the IA, and there were some changes implemented relating to the TCP server according to the brief change log.
 
I know that updates were made to -hcca options hcca_local and hcca_remote, but were any changes made to the null_modem option? I can't seem to use any channel other than the Nabu Network cycles any more (at least with the v29 rom). My default startup is as follows:

Code:
mame nabupc -window -kbd nabu_hle -hcca null_modem -bitb socket.192.168.168.16:5816 -bios ver29 -option1 fdc -flop1 disks\nabupc\leo1.img -flop2 disks\nabupc\leo2.img

If I have the IA set for the RetroNET Chat channel, and I select Cable at the option menu, I get a "LOADING FROM CABLE - PLEASE WAIT" and it apparently attempts to do so for a couple of seconds, but then gives the message "LOADING FROM FLOPPY DISK" and proceeds to do just that. Demos give an "ADAPTER OR FLOPPY DISK FAILURE" (the Plasma demo sometimes leads to an endless loop, or gives an option menu with CABLE and HARD DISK options?).

I am using the latest (12/27) iteration of the IA, and there were some changes implemented relating to the TCP server according to the brief change log.
null_modem is part of mame rather then anything specific to the nabu, so no i didn't change anything there. However there are stability issues with non reva firmware, it might be failing to load from the adapter so then trying to load from floppy instead, however I should point out even if it loads it wil fail to run as homebrew is not supported on non reva firmware as it loads at a different address. The main cycles actually have some position independent code, that will relocate the segment to a known address so it can execute properly.
 
I know that updates were made to -hcca options hcca_local and hcca_remote, but were any changes made to the null_modem option? I can't seem to use any channel other than the Nabu Network cycles any more (at least with the v29 rom). My default startup is as follows:

Code:
mame nabupc -window -kbd nabu_hle -hcca null_modem -bitb socket.192.168.168.16:5816 -bios ver29 -option1 fdc -flop1 disks\nabupc\leo1.img -flop2 disks\nabupc\leo2.img

If I have the IA set for the RetroNET Chat channel, and I select Cable at the option menu, I get a "LOADING FROM CABLE - PLEASE WAIT" and it apparently attempts to do so for a couple of seconds, but then gives the message "LOADING FROM FLOPPY DISK" and proceeds to do just that. Demos give an "ADAPTER OR FLOPPY DISK FAILURE" (the Plasma demo sometimes leads to an endless loop, or gives an option menu with CABLE and HARD DISK options?).

I am using the latest (12/27) iteration of the IA, and there were some changes implemented relating to the TCP server according to the brief change log.
Running into same issues as you stated above using ver29 ROM using IA 2022.12.26.0 and 2022.12.27.2 - I suspect a change on the backend as it was previously more stable.
 
Running into same issues as you stated above using ver29 ROM using IA 2022.12.26.0 and 2022.12.27.2 - I suspect a change on the backend as it was previously more stable.

Yes... although I only tested briefly, I'm reasonably certain that I was able to successfully use several other channels in addition to the standard cycles with the v29 ROM (I've done a fair amount of testing/experimenting with various configurations, so I can't be 100% certain at this point). It seems that DJ is getting feedback on the IA, not sure the best way to connect with him re. potential issues with the software.
 
Running into same issues as you stated above using ver29 ROM using IA 2022.12.26.0 and 2022.12.27.2 - I suspect a change on the backend as it was previously more stable.
Yes... although I only tested briefly, I'm reasonably certain that I was able to successfully use several other channels in addition to the standard cycles with the v29 ROM (I've done a fair amount of testing/experimenting with various configurations, so I can't be 100% certain at this point). It seems that DJ is getting feedback on the IA, not sure the best way to connect with him re. potential issues with the software.
I assure you it is not possible to use anything other then standard cycles on non reva firmware. All current homebrew loads at addresses 0x140D, but firmware other then reva load at 0x240D. So trying to load homebrew will end up executing at the wrong place and who knows what will happen then. For homebrew to work on non reva firmware it would need to do what the main cycles do and use some position independent code to load the main program code at a known address.

I've attached a simple loader then could be used with homebrew to do that, but no current homebrew uses this at the moment.
 

Attachments

  • loader.txt
    338 bytes · Views: 10
Is it possible that there's an interrupt coming from the i8251 that isn't connected to the option bus. I've been looking at the option cards and I don't think that the set_int_line is getting used. Perhaps the i8251's rxrdy_handler triggers the interrupt? (I don't really know how it works, so I could be completely wrong)
So yep you were right attaching the rxrdy line to the interrupt line and now the serial input from a terminal is working. I've update the git repo with the fix.
 
So yep you were right attaching the rxrdy line to the interrupt line and now the serial input from a terminal is working. I've update the git repo with the fix.

Thanks for the fix, brijohn!

input with the terminal (anyone like amber?)
maESegP.png


input with the wy50
LVRUDqs.png


you can do simultaneous input from the keyboard and rs232 on option3 with:

DEVICE CONIN = KB RS2

and simultaneous output to the nabu tv display and rs232 on option3 with:

DEVICE CONOUT=TV RS2


and if you want rs232 only for input and output:

DEVICE CONIN = RS2
DEVICE CONOUT=RS2

for doing wyse 50 connected to nabupc rs232:

./mame wy50 -modem null_modem -bitb socket.127.0.0.1:5817
./mame nabupc -kbd nabu_hle -hcca null_modem -bitb socket.127.0.0.1:5816 -option1 fdc -bios 2 -option2 hdd -hard hdd.chd -option3 rs232 -option3:rs232:rs232 null_modem -bitb2 socket.127.0.0.1:5817


for using mame's rs232 terminal:

./mame nabupc -kbd nabu_hle -hcca null_modem -bitb socket.127.0.0.1:5816 -option1 fdc -bios 2 -option2 hdd -hard hdd.chd -option3 rs232 -option3:rs232:rs232 terminal
 
Last edited:
Try as I might, I'm having no success with the wy50 terminal. I suspect I'm running into another Windows build unique issue, but I would like to insure I'm using the correct approach and with the correct code base. When building, I'm simply doing this:

Code:
make SOURCES=src/mame/nabu/nabupc.cpp,src/mame/wyse/wy50.cpp REGENIE=1 -j4

There are no build errors. When executing this:

Code:
./mame -window wy50 -modem null_modem -bitb socket.127.0.0.1:5817

I see these (in order... obviously the second one is of concern, not sure if it's just because sound isn't implemented, or the whole thing is tanked):

wyse1.jpg

wyse2.jpg

I start the second mame instance with this:

Code:
./mame nabupc -kbd nabu_hle -hcca null_modem -bitb socket.192.168.168.16:5816 -bios 2 -option1 fdc -flop1 disks\nabupc\leo1.img -flop2 disks\nabupc\leo2.img -option3 rs232 -option3:rs232:rs232 null_modem -bitb2 socket.127.0.0.1:5817

After booting CP/M, I then do this:

Code:
DEVICE CONOUT=RS2

Nothing at all on the wy50 terminal window. I also tried using option2 for the terminal, and tried running the IA software on the local machine in case there was something wonky with the using a remote machine. No joy. Any pointers would be welcome.
 
Try as I might, I'm having no success with the wy50 terminal. I suspect I'm running into another Windows build unique issue, but I would like to insure I'm using the correct approach and with the correct code base. When building, I'm simply doing this:

Code:
make SOURCES=src/mame/nabu/nabupc.cpp,src/mame/wyse/wy50.cpp REGENIE=1 -j4

There are no build errors. When executing this:

Code:
./mame -window wy50 -modem null_modem -bitb socket.127.0.0.1:5817

I see these (in order... obviously the second one is of concern, not sure if it's just because sound isn't implemented, or the whole thing is tanked):

View attachment 1250776

View attachment 1250778

I start the second mame instance with this:

Code:
./mame nabupc -kbd nabu_hle -hcca null_modem -bitb socket.192.168.168.16:5816 -bios 2 -option1 fdc -flop1 disks\nabupc\leo1.img -flop2 disks\nabupc\leo2.img -option3 rs232 -option3:rs232:rs232 null_modem -bitb2 socket.127.0.0.1:5817

After booting CP/M, I then do this:

Code:
DEVICE CONOUT=RS2

Nothing at all on the wy50 terminal window. I also tried using option2 for the terminal, and tried running the IA software on the local machine in case there was something wonky with the using a remote machine. No joy. Any pointers would be welcome.
The second message is normal and shouldn't be a problem. For the Wyse terminal to work however you need to make sure you have reset its nvram before trying to use it, to do this hold the g key down while booting it up. If you do it correctly the screen should flash with a print out of the various characters and you should see at the top of the screen above the solid bar the letters "FDX".
 
Back
Top