Great news, there is available a newbrain implementation for the Mist Fpga by Carlos Palmero.
It supports the 32Kb and the EIM with CP/M.
An FPGA implementation of the Grundy NewBrain (1982) for the MiST, Calypso, SiDi and Poseidon boards. It runs the original ROMs, including the COP420 keyboard/display microcontroller and the disk controller’s own Z80, and boots BASIC and CP/M 2.2 from EDSK disk images.
Features
- Z80 at 4 MHz (T80), with the whole memory map (ROM and RAM) in SDRAM.
- Real COP420: the original COP ROM runs on a COP400 core and handles the keyboard, the 16-character display and the 50 Hz timer.
- Video: 40 and 80 column text, pixel graphics, reverse video and the 256-character mode, with an OSD choice of phosphor colour and aspect.
- Tape:
.bas/.binfiles from the OSD, or real audio on the audio input. - Expansion Interface Module: paged memory from 96K to 768K and the paged operating system with its main menu.
- Disk controller: a second Z80 running the original controller ROM with a uPD765, reading EDSK images. CP/M 2.2 works both on the 32K machine (
cpmfrom BASIC) and on the 64K paged system (from the main menu). - Optional, off by default: the two serial ports, tape motor remote, and a 16×2 I2C LCD (Arduino LiquidCrystal_I2C module) showing the display text.
- Disk image tools: Teledisk to EDSK, PC folder to bootable CP/M disk, and raw dumps to EDSK.

Implementation https://github.com/shaeon/newbrain
Finally shaeon has published the core at git:
https://github.com/shaeon/newbrain
For the fpga boards:
MiST
MiSTica
SiDi
Poseidon
and Senhor ( mister clone )
I would appreciate a lot if someone having an actual NewBrain computer to run the following basic program:
300 CALL 62383
400 K=0
500 K=K+1
530 A=K^2
540 B=LOG(K)
550 C=SIN(K)
600 IF K<100 THEN 500
700 CALL 62399,MS
750 PRINT "ELAPSED SECONDS: ",MS/50
800 END
Ideally, I would like from you to run it at least 4 times and post your results here.
That will help us to adjust the core in order to be more accurate!
Thanks in advance!
VFD on
Run 1 elapsed 6.98
Run 2 elapsed 7.06
Run 3 elapsed 7.14
Run 4 elapsed 7.2
Run 5 elapsed 6.4 (after put 31 that clears the screen)
So it depends of how many chars the screen is showing. That is the busrq/busack. if a line has a1 char then the video circuit enables the cpu after that char, it does not wait for the line to end.
with put 31:run elapsed 6.38 every time no chars on screen
with vfd off the same results so the only the chars on the screen affects the result.
with list (so the listing is displayed) i get 7.3 secs
That’s the outcome:
https://imgur.com/a/F0RXc87
Thanks a lot Chris!