• Please review our updated Terms and Rules here

NABU PC Emulation under MAME

I can get the following menu to show (using ver14, ver17, and ver29):

PLEASE SELECT THE LOADING DEVICE

1. CABLE
2. FLOPPY DISK
3. HARD DISK

---

Use the following steps:

1. Using ver14 automatically boots a valid floppy on power on, but ver17 and ver29 prompt "INSERT SYSTEM DISK IN DRIVE A AND PRESS GO" boot
2. Completely boot into CP/M using "leo1.img"
3. Use MameUI (scroll lock) / File Manager to set the floppydisk1 (flop1) to [empty slot] and escape twice to get back to CP/M screen
4. Hit F3 (Mame reset).
5. Press Go after seeing "INSERT SYSTEM DISK IN DRIVE A AND PRESS GO"
6. You'll see "LOADING FROM FLOPPY DISK" and "BOOT ERROR"

The CABLE/FLOPPY DISK/HARD DISK menu will show up.

Cable booting still doesn't work after this, but it may give a hint to why this menu doesn't come up initially.

Also, if using revb you can get "1. CABLE 2. FLOPPY DISK" with same results.
 
Last edited:
Is there newer versions of the images in the "Bad Disk Image" thread? Just wanted to make sure I have the latest.
This is newest uploaded zip with both leo1 and leao2 being patched. The leo1 is an updated copy that has removed some unnecessary edits.
I also have a patched version of NABUPER2 as well which contains developer tools (linker, assembler, etc) not found on either leo1 or leo2, which i will post there as well.
 
I can get the following menu to show (using ver14, ver17, and ver29):

PLEASE SELECT THE LOADING DEVICE

1. CABLE
2. FLOPPY DISK
3. HARD DISK

---

Use the following steps:

1. Using ver14 automatically boots a valid floppy on power on, but ver17 and ver29 prompt "INSERT SYSTEM DISK IN DRIVE A AND PRESS GO" boot
2. Completely boot into CP/M using "leo1.img"
3. Use MameUI (scroll lock) / File Manager to set the floppydisk1 (flop1) to [empty slot] and escape twice to get back to CP/M screen
4. Hit F3 (Mame reset).
5. Press Go after seeing "INSERT SYSTEM DISK IN DRIVE A AND PRESS GO"
6. You'll see "LOADING FROM FLOPPY DISK" and "BOOT ERROR"

The CABLE/FLOPPY DISK/HARD DISK menu will show up.

Cable booting still doesn't work after this, but it may give a hint to why this menu doesn't come up initially.
These steps are not necessary, as long as you have the adapter started AND have the fdc installed in your emulated instance it should bring up the boot menu.

❯ ./mame nabupc -bios ver14 -option1 fdc -flop1 leo1.img

This should be enough to give you a boot menu assuming you have already started your IA client.
 
These steps are not necessary, as long as you have the adapter started AND have the fdc installed in your emulated instance it should bring up the boot menu.

❯ ./mame nabupc -bios ver14 -option1 fdc -flop1 leo1.img

This should be enough to give you a boot menu assuming you have already started your IA client.
I was giving you an alternate method to pull up the menu (my version of mame nabu doesn't have the latest changes for the pin 1 stuff) to see if that would help with anything. As stated earlier, the initial memory state is different than a reset and the menu comes up on the reset (only after CP/M was fully booted).
 
Last edited:
I was giving you an alternate method to pull up the menu (my version of mame nabu doesn't have the latest changes for the pin 1 stuff) to see if that would help with anything. As stated earlier, the initial memory state is different than a reset and the menu comes up on the reset (only after CP/M was fully booted).
Oh interesting that is interesting, that the you can trick it into giving the boot menu that. Cool.
 
Ok so here is an interesting bit of information i just discovered.

Now that i can boot from cable on firmware other then reva, i discovered that other then the main cycle (1 or 2) homebew applications are not loading correctly on the other firmware (they still work with reva).

So i decided to place a break point at address 0x1410 where program execution starts....and it was never triggered, not even for the main cycles which do still work on non reva firmware. This seems to indicate that different firmwares have different load addresses where they place the initial program. Haven't look into it enough figure out where yet, but it definitely does not seem to be 0x1410.
 
Ok so here is an interesting bit of information i just discovered.

Now that i can boot from cable on firmware other then reva, i discovered that other then the main cycle (1 or 2) homebew applications are not loading correctly on the other firmware (they still work with reva).

So i decided to place a break point at address 0x1410 where program execution starts....and it was never triggered, not even for the main cycles which do still work on non reva firmware. This seems to indicate that different firmwares have different load addresses where they place the initial program. Haven't look into it enough figure out where yet, but it definitely does not seem to be 0x1410.
A followup, I haven't traced everything that the official cycle is doing on load, but it is clearly being careful not to call or jump to anything but known addresses, until it has relocated itself to a known location. In otherwords for home brew to work across ROM versions, it needs to have a small loader at the beginning that does not care where it was loaded at but will copy the actual program to whatever location it's origin is set to.
 
Even with the latest compile after git pull, I can't get the menu up other than method I used.
 
Even with the latest compile after git pull, I can't get the menu up other than method I used.
Weird it definately should work as long as you have both the fdc option installed and the null_modem is connected to the IA client. double check that your IA has the TCP server running and not stopped. Since it stops whenerver mame exists, i've sometimes forgotten to restart it before running mame again and then i will go straight to floppy boot.
 
With the newest build, while rom versions 14 and 17 seem fine, version 29 just shows the Nabu logo and hangs. I thought the adding the -hcca and -bitb options (since version 29 supports both network and disk) might do the trick, but no joy.

I just discovered that the revb rom has this same issue.
 
I just discovered that the revb rom has this same issue.
Hmm not sure what to say, I have not had this issue at all, but i run linux. So they only thing i can think of is its related to the windows build. Has anyone had this while running on a different OS?
 
It must have been something I was doing. However I did discover that starting Mame, soft resetting Mame (F3 from UI) , and hard resetting Mame (left shift - F3 from UI) all yield different results. I only get the menu from starting Mame, not from either reset.
 
Hmm not sure what to say, I have not had this issue at all, but i run linux. So they only thing i can think of is its related to the windows build. Has anyone had this while running on a different OS?

I'm guessing that it's the windows build as well. At least it can be narrowed down to dff's between your release that incorporated the out of band DPB stuff and the prior release (which didn't require the F3 restart).
 
I did a clean Windows build using the latest brijohn code and now floppy booting works without having to reset


- HCCA uart transmit buffer starts empty
- Network boot fixed for more BIOS versions (only the Cycles work on all versions, homebrew will need to be modified to work on more than revA)
- Included guidol's NABU_Logo.ico in the zip
 
Last edited:
I did a clean Windows build using the latest brijohn code and now floppy booting works without having to reset


- HCCA uart transmit buffer starts empty
- Network boot fixed for more BIOS versions (only the Cycles work on all versions, homebrew will need to be modified to work on more than revA)
- Included guidol's NABU_Logo.ico in the zip
Planning on trying this, but....

Is there any way to transfer files to and from those floppy images and the PC? There are some interesting software artifacts I'd like to explore. Specifically, something I don't have the source for, but people will have a lot of fun with.

Applications on the cycle like THE INFORMER were built using a markup language called PCL (Page Control Language). The last version was PCLV3. I have the contents of a NABU INFORMER, maybe even the pennysaver one that is being shown in the cycle. PCLV3 would take the markup, and compile it into a segment that was a standalone title. It would let people make their own infotext like titles.

I have yet to find the PCL manual, but markup looked like this:

{comment ****************************************************************}
{comment The following commands are here to indicate the order}
{comment in which the logical pages will appear in this file}
{comment ****************************************************************}
{setorder SOS,MAIN,NEWTHISMONTH,NEWTHISMONTHDATA,TIPOFFS}
{setorder TIPOFFSDATA}
{setorder RECORDSCORES,RECORDSCORESDATA,NEWSROOM}
{setorder NEWSROOMDATA}
{setorder HELP}
{comment ****************************************************************}
{label sos}
{help help}
{CL 0,0,255,191}
{os 2,lgreen,inform4}
{os 2,black,sneak}
{OS 2,BLACK,JIMMY1}
{OS 2,MRED,WAR5}
{OS 2,BLACK,NOVA5}
{bg dblue}{pc clear}{tc white}{tl 0}{bl 18}{lm 8}{rm 29}
{rgb 24,0,nabulogo.grb}
{op 132,70,240,80,main}
{op 132,90,240,100,*helph}
{op 132,110,240,120,*exith}
{op 132,130,240,140,*restarth}

{C THE INFORMER}


{C MAY 15, 1985 ISSUE}~



{lm 1}
READY~TO~GO?~~PRESS~GO~~~~~

NEED~HELP?~~~~PRESS~HELP~~~

NEW~CHOICE?~~~PRESS~EXIT~~~

START~AGAIN?~~PRESS~RESTART



COPYRIGHT~~~1984
{rgb 108,170,copyrite.grb}
NABU~NETWORK~CORP.~~~~~~~01
{label main}
{TOPMENU}
{bg dblue}{tc white}{pc clear}{tl 2}{bl 15}{lm 0}{rm 29}
{CL 0,0,255,191}
{rgb 0,0,spring2}
{op 96,10,172,30,NEWTHISMONTH}
{op 24,30,72,50,TIPOFFS}
{op 96,60,172,80,RECORDSCORES}
{op 24,80,72,100,NEWSROOM}
{TC BLACK}{PC WHITE}
{lm 10}{rm 20}{tl 1}
~NEW THIS
~~MONTH
{lm 1}{rm 7}{tl 3}
TIP
~OFFS
{rm 18}{lm 10}{tl 6}
~RECORD
~SCORES
{lm 1}{rm 7}{tl 8}
~NEWS
~ROOM
{label NEWTHISMONTH}
{TL 0}{BL 18}{comment NEW2 graphic was MON graphic}
{bg GREY}{PC GREY}{rgb 0,0,NEW2}{chr NEWTHISMONTHDATA}{wait 3}
{CL 0,0,255,191}
{label NEWTHISMONTHDATA}
{PC WHITE}{CL 80,40,240,191}
{bg mred}{tc black}{BL 18}{tl 5}{rm 27}{lm 8}
{rgb 0,0,CLOSE7}
{chr main}
{BLKinclude NEWTHISMONTH,INFORMCA.DAT}{comment}
{label TIPOFFS}
{TL 0}{BL 18}
{bg MRED}{PC MGREEN}{rgb 0,0,TIP8}{chr tipoffsdata}{wait 3}
{CL 0,0,255,191}
{label TIPOFFSDATA}
{CL 72,50,224,169}
{PC GREY}{bg Dblue}{tc black}{tl 5}{bl 17}
{rgb 0,0,TIP2}{lm 7}{rm 26}
{chr main}{BLKinclude TIPOFFS1,INFORMCA.dat}{comment}
{label RECORDSCORES}
{TL 0}{BL 18}
{bg DBLUE}{PC LYELLOW}{rgb 0,0,REC2}{chr RECORDSCORESDATA}{wait 3}
{CL 0,0,255,191}
{label RECORDSCORESDATA}
{bg DRED}{PC LYELLOW}{tc black}{tl 0}{bl 10}{lm 4}{rm 24}
{rgb 0,0,record3}
{chr main}
{CL 40,0,208,116}
{include RECSCORE.DAT}{comment DATA here!}
ARE YOU A
SCOREBREAKER?

Send a photo showing
your high score to:

THE INFORMER
1719 St. Laurent Bl.
Ottawa, Ontario
K1G 3V4
{label NEWSROOM}
{TL 0}{BL 18}
{bg DRED}{PC GREY}{rgb 0,0,ROOM2}{chr NEWSROOMDATA}{wait 3}
{CL 0,0,255,191}
{label NEWSROOMDATA}
{CL 40,50,208,190}
{bg DRED}{PC GREY}{tc black}{tl 5}{bl 18}{lm 4}{rm 25}
{rgb 0,0,news}
{chr main}
{BLKinclude NEWSROOM,INFORMCA.DAT}{comment}
{comment label TOP_OF_THE_CHARTS}
{comment TL 0}{comment BL 18}
{comment bg DBLUE}{comment PC DRED}{comment rgb 0,0,CHARTS}{comment chr TOP_OF_THE_CHARTSDATA}{comment wait 3}
{comment CL 0,0,255,191}
{comment label TOP_OF_THE_CHARTSDATA}
{comment bg DBLUE}{comment PC DRED}
{comment tc black}{comment tl 5}{comment bl 18}{comment lm 6}{comment rm 21}
{comment rgb 0,0,charts.txt}
{comment chr main}
{comment CL 64,50,184,191}
{comment BLKinclude TOP_OF_THE_CHARTS,INFORMCA.DAT}{comment comment}
{label help}
{BG DBLUE}{TC WHITE}{PC CLEAR}{LM 0}{RM 27}{tl 0}{bl 18}

THE INFORMER HELP ~~~~1 OF 1

USE THE PAGING KEYS ON YOUR
KEYBOARD TO PAGE THROUGH THE
INFORMER.

ON THE SIGNPOST SCREEN, USE
THE CURSOR KEYS TO HIGHLIGHT
THE "SECTION" SIGN OF YOUR
CHOICE. THEN PRESS "GO" TO
ENTER THE SECTION YOU HAVE
HIGHLIGHTED. AT THE END OF
THE SECTION YOU ARE IN, YOU
WILL AUTOMATICALLY BE SENT
BACK TO THE SIGNPOST SCREEN.

PRESS "RESTART" TO LEAVE
HELP.
 
There's an "NPC DISC" shortcut that will bring up a Disk Diagnostics 1.4 program. (You can just type "NPC" as there's a 3 character minimum on shortcuts). The titles in the menu are basically the shortcuts, so the first program that matches a substring will get launched, so LOGO will launch LOGO and "LOGO A" will launch "LOGO ACTIVITY HELP".

================

I was playing with the new picture programs on the nabu internet adapter and they have a halt instruction that stops the cpu. If I do this at the mame lua console it will restart the system without using F3. (I think F3 is mapped to TV/Nabu and F4 is SYM):

emu.item(manager.machine.devices[":maincpu"].items["0/PC"]):write(0) -- sets the PC to 0
emu.item(manager.machine.devices[":maincpu"].items["0/m_halt"]):write(0) -- turns off the halt

I put them on one line to make it easier:
emu.item(manager.machine.devices[":maincpu"].items["0/PC"]):write(0) emu.item(manager.machine.devices[":maincpu"].items["0/m_halt"]):write(0)

================

I was going to make a LOGO text manual from the logo reference and I can parse some of the bytes in memory that must come from the markup language.

It looks like 8d 0c 95 01 introduces a keyword, so right before ALL and ASK. 7e enters and exits bold, so the keyword ALL is wrapped in 7e.

Theres some 95 0f and 7f 7f as well as 8d 0c (end item? like a CR and FF) 8d 00 (new line)

3YBR4RA.png


Code:
000043c0  4e ff 8d 00 95 0f 7f 7f  8d 0c 95 01 7e 41 4c 4c  |N...........~ALL|
000043d0  7e 8d 00 95 0f 20 20 20  7f 20 20 20 20 20 20 20  |~....   .       |
000043e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000043f0  20 20 20 20 20 20 20 20  20 20 7f 4f 75 74 70 75  |          .Outpu|
00004400  74 73 20 74 68 65 20 6e  75 6d 62 65 72 73 20 6f  |ts the numbers o|
00004410  66 20 61 6c 6c 20 73 70  72 69 74 65 73 2e 7f 7f  |f all sprites...|
00004420  8d 0c 95 01 7e 41 53 4b  20 73 70 72 69 74 65 6e  |....~ASK spriten|
00004430  75 6d 62 65 72 28 73 29  20 69 6e 73 74 72 75 63  |umber(s) instruc|
00004440  74 69 6f 6e 6c 69 73 74  7e 8d 00 95 0f 7f 7f 52  |tionlist~......R|
00004450  75 6e 73 20 74 68 65 20  63 6f 6d 6d 61 6e 64 73  |uns the commands|
00004460  20 69 6e 7e 95 01 8d 0c  7e 69 6e 73 74 72 75 63  | in~....~instruc|
00004470  74 69 6f 6e 6c 69 73 74  7e 95 0f 8d 00 7f 74 65  |tionlist~.....te|
00004480  6d 70 6f 72 61 72 69 6c  79 20 6d 61 6b 69 6e 67  |mporarily making|



so if I load that into lua with and search for a sequence of 0x95 0x1 0x7e then I can make a keyword list:

Code:
f = io.open("nabulogoref.bin","r") a = f:read("*a") print (#a)
for i=1,#a do if a:sub(i,i+2)==(string.char(0x95)..string.char(0x1)..string.char(0x7e)) then s = a:sub(i+3,i+79) _,_,s1 = s:find("(.*)\x7e(.*)\x95") print (s1,s2) end end

LOGO REFERENCE~HELP~~~~~~PAGE    nil
ALL    nil
ASK spritenumber(s) instructionlist~��Runs the commands in    nil
BACK (BK) distance~��                      Moves the current sprite    nil
BG    nil
BRUSH distance interval~��Moves the current sprite forward a total of    nil
CHANGE.COLOR fromcolor tocolor    nil
CLEARSCREEN (CS)    nil
CLEARTEXT    nil
COLOR    nil
COLOR.OVER    nil
etc.

If you could figure out what the exact sequences mean then you could clean up the output automatically. Maybe the easiest thing is to strip out any funny high bit characters and sequences like 95 01 and 8d 00 and 7F.

Maybe I'm overthinking it, just run "strings nabulogoref.bin" to get the text, it converts strange characters to ~ (7e).

~ALL~

Outputs the numbers of all sprites.
~ASK spritenumber(s) instructionlist~
Runs the commands in~
~instructionlist~
temporarily making the current sprite
~spritenumber(s)~
~BACK (BK) distance~
 
Last edited:
Back
Top