ali6x944
You might think of a NSC800 as a Z80 instruction set CPU with a 8085 like interface.
You use a 8-bit latch to get A0-A7 from the shared AD0-AD7 bus. The latch is controlled by ALE.
There were CP/M based computers using the NSC800. Note that CP/M can be all ram memory when running.
At power up reset, the NSC800 like most microcomputers needs a program. Anything that can store a program while the NSC800 is powered off will work. This power up boot program needs to be on a parallel bus device. The simple is use a rom, eprom, eeprom or flash chip with parallel memory interface.
Some systems use a second processor to load the power up boot program in ram before releasing the NSC800's reset line. An Arduino, STM32 discover board, MBED board or something like this could preform this task.
The power up boot program does not have to be large if it can load a program from something. One system I have uses 512 bytes for example.
You often see the term bootstrap. A very small program loads a bigger more powerful program that then loads the system. The advantage is very small program in rom, eprom, eeprom or flash does not often change while the following programs are easy to change.
Note the "power up boot program" not just boot program. This is very simple and at the same time very powerful idea. This would let you create a new boot and test it using ram memory.
A reset button resets the NSC800.
A power up reset button resets the NSC800 and clears a FF or a 8-bit latch like a 74xx273.
With the FF or 273 clear the power up boot program device is in memory to be used for power up boot.
Setting the FF or setting a bit in the 273 removes the power up boot device from memory. This allows 64k of ram or some other memory map.
When you have the basics look at simple yet powerful I/O
Think of packets of data.
A floppy disk controller is a register based data packet controller. A hard disk controller, larger registers.
When you are talking to a smart controller, it is cheaper and more powerful to use a command packet stream. One byte in the stream could select which of 256 devices or locations to use. Two bytes increases this to 65,536.
You have command, what device, what location.
SCSI, HPIB, IEE488, HDLC, SDLC and many other interfaces use this idea.
For a write you send the command stream followed by the data stream.
For a read you send the command stream and wait for the data stream return.
You must at the logic level be able to tell the command stream from the data stream. For parallel interface a 9th-bit would work. A command stream is with 9th-bit set while a data stream the 9th-bit is clear. Simple yet very powerful. Many ways to do this.
Using modern parts and ideas can make your NSC800 simpler and at same time more powerful.
The newer static ram is both faster and larger then when NSC800 came out.