• Please review our updated Terms and Rules here

NABU PC Emulation under MAME

And if anyone is looking for binaries that run on Windows, see here. It works fine.
If anyone want a GUI for that under Windows could try the
CFIE - CP/M Image File Explorer - from Uwe Merker a Member
of the german Computer-Forum VzEkC e. V.

I do attach the diskdefs-file as .zip (which is needed for CFIE) with the formats nab1/osborne1.
You could find the CFIE (acutal v0.0.8) here

CIFE_NABU.jpg
 

Attachments

  • NABU_diskdefs.zip
    322 bytes · Views: 12
OK, first of all HELLO to everyone!

1) I'm in despair. Yesterday, I wasted 6 hours browsing for a solution to bring programs onto a NABU readable CP/M disk. I've got NO experience in MS-DOS and less in CP/M. Well, I can start programs and erase ;-) that's what I've learned yesterday. The internet is full of programs for CP/M but you won't get a BASIC-80 image disk for instance. mame crashes if I create a new disk in CP/M mode. Maybe I've got the wrong file ending (.img)? Well, mame crashes and disks, that I want to work with in CIFE (thx guidol) show errors (directory full o.e.). I copied the leo1.img in windows, mounted it as B: and erased every file by era B:*.* Directory should be empty?
I'm really stuck here. I just want a working BASIC-80 disk image for the CP/M 3.0 of NABU

2) But I've got a solution, too. If you boot NABU mame with the v29 rom, just hit F3 when the NABU logo shows up. It's even faster than v14.

3) I found two errors in the "streamed" software, Basic-Tutor should have 6 lessons but only the first 3 work AND Track & Field (1&2) doesn't seem to work, I tried arcade & c64 emus and got 7.73 in 100m dash but only 25 secs on Nabu. Other games work fine with my usb joystick. That's it for today ;-)

Andreas
 
Last edited:
OK I finally got it working... it's not a boot disk but a CP/M disk with CP/M programs on it for the NABU PC

- make a new folder containing CIFE, the diskdefs and a working disk image (leo1.img in my case)
- start cife.exe, navigate FILE->NEW, "Image File" browse to new folder and choose your copy from leo1.img
- navigate EDIT->Format Current Image
- then just drag & drop your files into CIFE
- navigate FILE->CLOSE and end CIFE
- rename leo1.img into example.img and cut&paste it to your mame disks folder

Now I've got a new problem ;-) MBASIC shows 22072 bytes free.
Mr Ken Segler made a boot rom and some attachements and his CP/M boots into BASIC-80 with 48766 bytes free.
Where's my RAM? :)

I've attached a disk image with zork 2+3 for NABU PC CP/M 3.0 to complete the series on NABU PC.
 

Attachments

  • ZORK2+3.zip
    131.3 KB · Views: 9
Last edited:
Now I've got a new problem ;-) MBASIC shows 22072 bytes free.
Mr Ken Segler made a boot rom and some attachements and his CP/M boots into BASIC-80 with 48766 bytes free. Where's my RAM? :)
I also got 22072 bytes free, but thats with CP/M. Ken Segler doess use a Boot-ROM and is loading something like ROM-BASIC 4.7B directly without CP/M - so he has more RAM available - but it isnt MBASIC 5.29 under CP/M
The NABU seems to have only 47K TPA free - the loaded programm - so we have only arounf 22K for MBASIC (NABU-BASIC has with DIsk-functions only around 17K free and seems to be slower)

NABU_MBASIC.jpg
 
I do wonder if it's possible to get CP/M 2.2 (rather than 3) running on a stock Nabu. Might allow for a larger TPA.
 
OK I finally got it working... it's not a boot disk but a CP/M disk with CP/M programs on it for the NABU PC

- make a new folder containing CIFE, the diskdefs and a working disk image (leo1.img in my case)
- start cife.exe, navigate FILE->NEW, "Image File" browse to new folder and choose your copy from leo1.img
- navigate EDIT->Format Current Image
- then just drag & drop your files into CIFE
- navigate FILE->CLOSE and end CIFE
- rename leo1.img into example.img and cut&paste it to your mame disks folder

Now I've got a new problem ;-) MBASIC shows 22072 bytes free.
Mr Ken Segler made a boot rom and some attachements and his CP/M boots into BASIC-80 with 48766 bytes free.
Where's my RAM? :)

I've attached a disk image with zork 2+3 for NABU PC CP/M 3.0 to complete the series on NABU PC.
That youtube video is mine and it does not boot cp/m it boots basic direct off the sd card no os.
Ken
 
It's fantastic what all you guys do. (y)
I actually didn't notice it's not CP/M.
Would be nice to have a ROM like this for mame.
 
I do wonder if it's possible to get CP/M 2.2 (rather than 3) running on a stock Nabu. Might allow for a larger TPA.
If you want the largest of TPA (62K!) you need to run SUPERCPM on the NABU. It used two NABU PCs connected by RS422 in tandem to create one magical CP/M multitasking system. Here is a taste:

SUPERCPM

1.0 Principles of Operation:

The NABU Tandem PC development system fully utilizes the
resources available with a NABU Cabserve development configuration
(two NABU PCs and a 1600 mass storage unit). The system software
physically partitions the system into a system PC and a user PC
(host and target respectively). The systems are coupled via the
RS-422 interface normally connected to the NABU adaptor.

A small software module in the user PC routes system calls and
relevant information to the system PC where they are received by a
conversion program which routes the calls to the CP/M BDOS and acts
as a receptor to the CP/M request's results. The results are returned
to the user PC. This operation is effectively transparent to the
application program.

The software module in the user PC effectively appears as
the CP/M BDOS and BIOS to the user program. It also maintains an
accurate copy of the CP/M system control block. Note that for
-version 2.1 of the Tandem system, not all BIOS calls are supported
precluding the use of certain NABU utilities (those which use
direct BIOS access). These functions may be accessed via BDOS
call 50 (although it is not recommended).



2.0 Narrative of Operation:

2.1) Startup:

When SUPERCPM is run on the System-PC it allocates additional
BCB's for the E: drive. (Normally A:,B:,E: and F: all
share the same BCB's). It then starts monitoring the RS422 port for
CABSERVE and extended CABSERVE requests. The User-PC is then either
reset or powered up. The User-PC requests segment 1 from the System-PC.
SUPERCPM.PAK is loaded into the User-PC and is run.

Once the User stub has been loaded it signals the System-PC
that it has started running. The System-PC removes CABSERVE's FCB's
from the stack and allocates the RAM disk. The RAM disk control routines
are patched into the BIOS jump table.

The initialization software obtains SCB and DEVICE TABLE
information from the System-PC and then loads CCP.COM via system
calls using the extended CABSERVE protocol. From then on the User-PC
functions as a CP/M 3.0 environment routing calls to the System-PC
and obtaining results via the extended protocol.



2.2) System data field updates:

Certain operations are performed at specific times above and
beyond the basic operations requested. CP/M utilities, CCP, and
most CP/M System Extensions modify system fields directly. When
a potentially modified field is critical to an operation, the
System-PC is updated in conjunction with the operation.


2.3) RAM disk:

The RAM disk is a dynamically allocated linked list of sector
buffers used by the hard disk only. ( This eliminates the additional
overhead required checking for media changes etc.). Once the space
has been allocated, the BIOS routines SELECT, SET_TRACK, SET_SECTOR,
SET_DMA_ADDRESS, READ and WRITE are intercepted.

When a read request occurs, the RAM disk block list is checked
to see if the sector is in memory. If so, it is delinked from it's
position in the chain and moved to the top of the list as Most Recently
Used block and the data is copied to the buffer specified by CP/M. If it
is not found, either the first unused block or the last block in
the chain (which will be least recently used) is migrated to the top
of the chain (making it most recently used ) and the sector copied
to it once it has been fetched from the disk.

When a write request occurs, the RAM disk block is checked
to see if the sector is in memory. If so, it is delinked from it's
position in the chain and moved to the top of the list as Most Recently
Used block and the data is copied from the buffer specified by CP/M. If it
is not found, either the first unused block or the last block in
the chain (which will be least recently used) is migrated to the top
of the chain (making it most recently used ) and the sector copied
to it from the CP/M buffer. The write is then performed normally.
Note that all writes are write-through, the write is never deferred.



2.4) Spooler:

SUPERCPM 2.1 has an embedded print spooler which
communicates with physical device LST:. (unfortunately there is
no way to poll status on logical device LST: so LST redirection
will not affect where the print spooler outputs to!). The print
spooler utilizes the idle time on the System-PC to output files
specified by the user. The time utilized is when the System-PC is
awaiting User-PC requests, and console or input.

Up to eight files may be queued for printing at any one time.

Extended BDOS calls (113 spool file ,114 display spool queue,
115 cancel job and 117 restart queue) are provided to allow manipulation
of the spooler from user programs. In addition the programs SPOOL, QUEUE,
CANCEL, and RESTART are provided to allow access from the CCP level.



3.0) Discrepancies:

Due to the necessity of maintaining two sets of data structures
some data areas are not updated until the next warm boot. These are:

1) when Device Table is modified by DEVICE. Change will not
come into effect until device exits.



4.0) Peculiarities Discovered:

1) PIP expects the directory error code (from file operations)
to be in the 'L' register.

2) The LOADER RSX (in CCP) checks the zero bit (set = error)
instead of checking the value of the 'A' reg. on all BDOS calls.

3) Perfectwriter, when editing a new file, MAKEs it, corrupts
the allocation block field, and then OPEN's the file.

4) SUBMIT creates a temporary file, writes to it, closes it,
and then starts reading it again without re-opening it.

5) PIP disables other than Ctrl^C recognition on BDOS11 (expecting
CCP to put it back as required).

6) BDOS11 discards Ctrl^P's and similar control characters when
scannning for console input. The impact of this is that BDOS 06
was used for scanning console input to allow spooling to
continue during BDOS 1 and BDOS 10 functions while maintaining
support of intercepted functons. However when
spooling a file, pressing Ctrl^Q, Ctrl^P, or Ctrl^S after
the CCP prompt will suspend Spooling until a non control
character is pressed.

That console status cannot be sampled for a non-interceptable
character without disabling some of the intercept functions
(i.e. Ctrl^P) seems to be a defeciency of the BDOS.


...I will be releasing this in the new year, as I recover all the components...

I promise it will be more fun than one NABU should be allowed.

Leo
 
I also got 22072 bytes free, but thats with CP/M. Ken Segler doess use a Boot-ROM and is loading something like ROM-BASIC 4.7B directly without CP/M - so he has more RAM available - but it isnt MBASIC 5.29 under CP/M
The NABU seems to have only 47K TPA free - the loaded programm - so we have only arounf 22K for MBASIC (NABU-BASIC has with DIsk-functions only around 17K free and seems to be slower)

View attachment 1250351
CPM3FHT contains Floppy, Hard Drive, and Terminal (RS232) code. If you don't use those services, CPM3FT.SYS is probably the best to use. More memory would be available.
 
Y'know, we did so much magic that we never really revealed back then. We just thought we were all being really clever. We really did think this was all natural, the stuff we accomplished - and all companies operated this way.
 
(BTW, if I ever get to a point where I'm able to emulate a disk system - either in MAME or in Marduk - I'm really considering trying to learn enough 8080 asm or something so I can port the older CP/M 2.2 over, just as a proof of concept.

And I'd kill to be able to get other stuff brought over from the MSX, too. xD Imagine Dragon Warrior on the Nabu...)
 
I've been playing around with getting a bootable hdd image working with the emulator. The floppies already have a version of CPM3.SYS that supports hard disks, but I was currently lacking a boot track for hard disk. Usually you would use copysys.com to copy the system tracks between disks, but the one on the floppies i was unable to get to accept any destination then drives A-D (the hard disks are drive E and F). So I spent some time writing a custom cold boot loader and ldrbios so that I could compile my own cpmldr.com program that can be put on track 0 of a hard disk allowing it to boot into CPM.

I've attached a zip with file the code and a hdd image that can be used with mame. Just add the following CLI options: -option2 hdd -hard hdd.chd
 

Attachments

  • hdd_boot.zip
    42 KB · Views: 23
I've attached a zip with file the code and a hdd image that can be used with mame. Just add the following CLI options: -option2 hdd -hard hdd.chd
Many thanks - does work fine also with the Windows-NABU-MAME ;)
I have added the files from the leo2-floppy and MBASIC to the hdd.chd :)
 

Attachments

  • hdd_leo2_mbasic.zip
    121.6 KB · Views: 19
I made a reference manual for Nabu Logo, you can find it on archive.org, just search for "nabu logo".

If you get the zip file, the original text file is there, it shouldn't be too hard to convert it into html or reformat it how you'd like.
oVKPNlc.png
 
Great stuff. Lacking the "real-hardware" hdd controller, is mame taking over that part? I'm just curious...
Btw this doesn't work with V29. I've put in ROM V14 and there you go.

Edit: This is great, just ~4 seconds from starting mame to the E> prompt.
 
Last edited:
Great stuff. Lacking the "real-hardware" hdd controller, is mame taking over that part? I'm just curious...
Btw this doesn't work with V29. I've put in ROM V14 and there you go.

Edit: This is great, just ~4 seconds from starting mame to the E> prompt.
It should work fine with ver29, that is what I was using to do the testing when I created this image.

I'm sure we will get reproduction hdd controller at some point for real hardware, I just wanted to be able play around with hdd booting so decided to see if a could get it booting from a hard drive in mame.
 
Back
Top