<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.ndwiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RHansen</id>
	<title>NDWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.ndwiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RHansen"/>
	<link rel="alternate" type="text/html" href="https://www.ndwiki.org/wiki/Special:Contributions/RHansen"/>
	<updated>2026-06-15T14:26:48Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7821</id>
		<title>ND-110 Satellite 9800.20922</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7821"/>
		<updated>2026-02-04T20:53:41Z</updated>

		<summary type="html">&lt;p&gt;RHansen: fixed typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[ND-110 Satellite Series|ND-110 Satellite]] &lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Hardware in the machine is described in this section.&lt;br /&gt;
&lt;br /&gt;
[[File:Satellite-cards-9800-20922.jpg|200px|thumb|right|PCB Cards in the Satellite]]&lt;br /&gt;
&lt;br /&gt;
The machine is probably a model 9883 model T9 as it has:&lt;br /&gt;
* 2MB RAM&lt;br /&gt;
* 125 MB SCSI DISK&lt;br /&gt;
* Streamer tape (125 MB QUIC)&lt;br /&gt;
* 9 Interfaces for terminal/printer&lt;br /&gt;
&lt;br /&gt;
A sales document with more details for the ND-110 Satellite can be found here &lt;br /&gt;
* http://norsk-data.com/library/libsales/ND-SID019-A1-NO.pdf&lt;br /&gt;
* http://www.sintran.com/sintran/library/libpdpi/ND-9881-A1-EN.pdf&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Hardware Components (Leftmost → Rightmost)&lt;br /&gt;
|-&lt;br /&gt;
! Backplane Slot !! Card !! Part Number !! PCB Number !! Description !! Print Version !! ECO&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PIOC || 322613 || PCB [[3013]] || ND-100 8-TERM || Print M || ECO N&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MEGAL || 322615 || PCB [[3015]] || ND100 HDLC W/A.LO. || Print S || ECO&lt;br /&gt;
|-&lt;br /&gt;
| 3 || MEMORY || 322672 || PCB [[3042]] || ND100 2MBY RAM || Print B || ECO D&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FL. SCSI || 350001 || PCB [[3201]] || SCSI / FLOPPY || Print B || ECO E&lt;br /&gt;
|-&lt;br /&gt;
| 5 || CPU || 324140 || PCB [[3095]] || ND110 CPU &amp;amp; MM 32B || Print B || ECO H&lt;br /&gt;
|-&lt;br /&gt;
| 6 || COMM ||  ||  || Empty (can be upgraded with 3094 ETHERNET IF)||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || PIOC ||  ||  || Empty (can be upgraded with 3108 PIOC)||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Switch settings ===&lt;br /&gt;
CPU [[3095]]&lt;br /&gt;
&lt;br /&gt;
* 8J - baud rate switch - 7 - 9600 baud (standard)&lt;br /&gt;
* 28J - ALD switch - 9 - ALD reg I12 = 21560B, Mass load 1560B, comment: &amp;quot;SCSI controller 1, only available on the ND-110/120 CPU&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
* Floppy drive : 5 1/4&amp;quot; (potentially 1.2MB)&lt;br /&gt;
* Tape streamer : Tandberg TDC 3640&lt;br /&gt;
* Hard drive : MICROPOLIS 1375 (125 MB) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&lt;br /&gt;
The CPU is an ND-110/CX with 32 bit floating point running Microcode version 14 &lt;br /&gt;
&lt;br /&gt;
This can be seen by the label on the EPROM&#039;s for the Microcode&lt;br /&gt;
&lt;br /&gt;
* 37932L &lt;br /&gt;
* 37933L &lt;br /&gt;
&lt;br /&gt;
L means version 12 as L is the 12th character in the alphabet, but decimal 12 is 14 octal (latest known version is version 14/L).&lt;br /&gt;
32 (in the 37932L label) means 32 bit floating point.&lt;br /&gt;
&lt;br /&gt;
For more information, check out the [3095] PCB documentation&lt;br /&gt;
&lt;br /&gt;
=== Power Supply ===&lt;br /&gt;
* Wiener DN 01, 390 W&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
* Power connector : [https://en.wikipedia.org/wiki/IEC_60320] C16 type [https://en.wikipedia.org/wiki/IEC_60320#C15.2FC16_coupler C16]&lt;br /&gt;
* Power cable [https://no.farnell.com/bulgin/px0597/socket-iec-hot-free/dp/1172515?MER=sy-me-pd-mi-acce]&lt;br /&gt;
* Console connector : [[Wikipedia:DB25F|DB25F]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
On the devices&lt;br /&gt;
&lt;br /&gt;
 FLOPPY: 187-3187&lt;br /&gt;
 STREAMER: ND 229-1053 TDC 3640 Series SCSI , [[TDC_3640]] (SerialNo 373663) INCOMING DATE 22-04-88&lt;br /&gt;
 DISK: Micropolis 1375 (S/N:6082010769 P/N:900525-09-BA) 125 MB formatted (https://www.micropolis.com/support/hard-drives/1375)&lt;br /&gt;
&lt;br /&gt;
On the front of the cabinet (behind the front door)&lt;br /&gt;
* printed label above tape streamer / floppy drive&lt;br /&gt;
 LOGNR&lt;br /&gt;
  9021&lt;br /&gt;
* Norsk Data ID LABEL at the bottom&lt;br /&gt;
 CAB./ASSY NO: 1.1&lt;br /&gt;
 FUNCTION: SATELLITE &lt;br /&gt;
 SYSTEM NO: 9800/20922&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
* Some basic cleaning as the system has been standing since the 90&#039;s {{done}}&lt;br /&gt;
* Document all serial and model numbers on devices.{{done}}&lt;br /&gt;
* Image the SCSI disk before attempting a boot. {{done}}  Spins up, and was easy to image using ZuluSCSI (somehow the BlueSCSI2 was unable to identify the drive) &lt;br /&gt;
* Check the power supply condition {{done}}&lt;br /&gt;
&lt;br /&gt;
== Operating System ==&lt;br /&gt;
&lt;br /&gt;
* SINTRAN III - VSX/500 K &lt;br /&gt;
* XMSG is configured&lt;br /&gt;
* The password for user SYSTEM is set to 0 (?) or is it empty?&lt;br /&gt;
&lt;br /&gt;
XMSG Remote&lt;br /&gt;
* ND-5200 2105 (*DSSYSTEM, *IDSYSTEM)&lt;br /&gt;
* JUSTIS 2092&lt;br /&gt;
&lt;br /&gt;
X25 &lt;br /&gt;
* Datex-P X.121 - 4561214123&lt;br /&gt;
** 45 Country code → Norway&lt;br /&gt;
** 61 Network identifier → DATEX-P (historically Televerket / Telenor)&lt;br /&gt;
** 214123 - Network internal (Subscriber/NUA)&lt;br /&gt;
* X25 was using HDLC1 controller logical 1360&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
* Based on timestamps on the disk, the system was probably first time configured 28. June 1988.&lt;br /&gt;
* Last time booted: USER SYSTEM ENTERED AT 11.59.52     21 AUGUST   1992&lt;br /&gt;
&lt;br /&gt;
=== 2026  ===&lt;br /&gt;
&lt;br /&gt;
: 2025-01-25: Machine arrived. Started with taking some photos and getting access to the SCSI drive for disk imaging.&lt;br /&gt;
: 2025-01-25: Tried first with BlueSCSI2 (https://bluescsi.com/) but it didnt manage to identify the SCSI drive.&lt;br /&gt;
: 2025-01-25: Then used the ZuluSCSI (https://zuluscsi.com/) which was able to image the drive in less than 3 minutes.&lt;br /&gt;
: 2025-02-01: Tried to boot the SCSI image on the RetroCore emulator. It seems that the CPU type and CPU number for the OS does not match the ND-110 SATELLITE, but a ND-500 COMPACT&lt;br /&gt;
== Boot ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;white-space:pre; font-family:monospace;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    406B&lt;br /&gt;
REVISION (PATCH FILE NO.):    7300B&lt;br /&gt;
CPU TYPE:     5291&lt;br /&gt;
CPU NUMBER:  21057&lt;br /&gt;
GENERATED:   20.35.00     29 SEPTEMBER   1987&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3353B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
The system belongs to Nikolai and is located in Switzerland&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual systems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/libhw.html][Norsk Data library, Hardware]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C4.pdf][Book 2: ND-100 SATELLITE, Assembly Drawings]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C5.pdf][Book 2: ND-100 SATELLITE, Cable Info. Block &amp;amp; Wiring Diagrams]&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual_systems]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7819</id>
		<title>ND-110 Satellite 9800.20922</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7819"/>
		<updated>2026-02-01T23:08:28Z</updated>

		<summary type="html">&lt;p&gt;RHansen: removed test timestamp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[ND-110 Satellite Series|ND-110 Satellite]] &lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Hardware in the machine is described in this section.&lt;br /&gt;
&lt;br /&gt;
[[File:Satellite-cards-9800-20922.jpg|200px|thumb|right|PCB Cards in the Satellite]]&lt;br /&gt;
&lt;br /&gt;
The machine is probably a model 9883 model T9 as it has:&lt;br /&gt;
* 2MB RAM&lt;br /&gt;
* 125 MB SCSI DISK&lt;br /&gt;
* Streamer tape (125 MB QUIC)&lt;br /&gt;
* 9 Interfaces for terminal/printer&lt;br /&gt;
&lt;br /&gt;
A sales document with more details for the ND-110 Satellite can be found here &lt;br /&gt;
* http://norsk-data.com/library/libsales/ND-SID019-A1-NO.pdf&lt;br /&gt;
* http://www.sintran.com/sintran/library/libpdpi/ND-9881-A1-EN.pdf&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Hardware Components (Leftmost → Rightmost)&lt;br /&gt;
|-&lt;br /&gt;
! Backplane Slot !! Card !! Part Number !! PCB Number !! Description !! Print Version !! ECO&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PIOC || 322613 || PCB [[3013]] || ND-100 8-TERM || Print M || ECO N&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MEGAL || 322615 || PCB [[3015]] || ND100 HDLC W/A.LO. || Print S || ECO&lt;br /&gt;
|-&lt;br /&gt;
| 3 || MEMORY || 322672 || PCB [[3042]] || ND100 2MBY RAM || Print B || ECO D&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FL. SCSI || 350001 || PCB [[3201]] || SCSI / FLOPPY || Print B || ECO E&lt;br /&gt;
|-&lt;br /&gt;
| 5 || CPU || 324140 || PCB [[3095]] || ND110 CPU &amp;amp; MM 32B || Print B || ECO H&lt;br /&gt;
|-&lt;br /&gt;
| 6 || COMM ||  ||  || Empty (can be upgraded with 3094 ETHERNET IF)||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || PIOC ||  ||  || Empty (can be upgraded with 3108 PIOC)||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Switch settings ===&lt;br /&gt;
CPU [[3095]]&lt;br /&gt;
&lt;br /&gt;
* 8J - baud rate switch - 7 - 9600 baud (standard)&lt;br /&gt;
* 28J - ALD switch - 9 - ALD reg I12 = 21560B, Mass load 1560B, comment: &amp;quot;SCSI controller 1, only available on the ND-110/120 CPU&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
* Floppy drive : 5 1/4&amp;quot; (potentially 1.2MB)&lt;br /&gt;
* Tape streamer : Tandberg TDC 3640&lt;br /&gt;
* Hard drive : MICROPOLIS 1375 (125 MB) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&lt;br /&gt;
The CPU is an ND-110/CX with 32 bit floating point running Microcode version 14 &lt;br /&gt;
&lt;br /&gt;
This can be seen by the label on the EPROM&#039;s for the Microcode&lt;br /&gt;
&lt;br /&gt;
* 37932L &lt;br /&gt;
* 37933L &lt;br /&gt;
&lt;br /&gt;
L means version 12 as L is the 12th character in the alphabet, but decimal 12 is 14 octal (latest known version is version 14/L).&lt;br /&gt;
32 (in the 37932L label) means 32 bit floating point.&lt;br /&gt;
&lt;br /&gt;
For more information, check out the [3095] PCB documentation&lt;br /&gt;
&lt;br /&gt;
=== Power Supply ===&lt;br /&gt;
* Wiener DN 01, 390 W&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
* Power connector : [https://en.wikipedia.org/wiki/IEC_60320] C16 type [https://en.wikipedia.org/wiki/IEC_60320#C15.2FC16_coupler C16]&lt;br /&gt;
* Power cable [https://no.farnell.com/bulgin/px0597/socket-iec-hot-free/dp/1172515?MER=sy-me-pd-mi-acce]&lt;br /&gt;
* Console connector : [[Wikipedia:DB25F|DB25F]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
On the devices&lt;br /&gt;
&lt;br /&gt;
 FLOPPY: 187-3187&lt;br /&gt;
 STREAMER: ND 229-1053 TDC 3640 Series SCSI , [[TDC_3640]] (SerialNo 373663) INCOMING DATE 22-04-88&lt;br /&gt;
 DISK: Micropolis 1375 (S/N:6082010769 P/N:900525-09-BA) 74 MB formatted (https://www.micropolis.com/support/hard-drives/1375)&lt;br /&gt;
&lt;br /&gt;
On the front of the cabinet (behind the front door)&lt;br /&gt;
* printed label above tape streamer / floppy drive&lt;br /&gt;
 LOGNR&lt;br /&gt;
  9021&lt;br /&gt;
* Norsk Data ID LABEL at the bottom&lt;br /&gt;
 CAB./ASSY NO: 1.1&lt;br /&gt;
 FUNCTION: SATELLITE &lt;br /&gt;
 SYSTEM NO: 9800/20922&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
* Some basic cleaning as the system has been standing since the 90&#039;s {{done}}&lt;br /&gt;
* Document all serial and model numbers on devices.{{done}}&lt;br /&gt;
* Image the SCSI disk before attempting a boot. {{done}}  Spins up, and was easy to image using ZuluSCSI (somehow the BlueSCSI2 was unable to identify the drive) &lt;br /&gt;
* Check the power supply condition {{done}}&lt;br /&gt;
&lt;br /&gt;
== Operating System ==&lt;br /&gt;
&lt;br /&gt;
* SINTRAN III - VSX/500 K &lt;br /&gt;
* XMSG is configured&lt;br /&gt;
* The password for user SYSTEM is set to 0 (?) or is it empty?&lt;br /&gt;
&lt;br /&gt;
XMSG Remote&lt;br /&gt;
* ND-5200 2105 (*DSSYSTEM, *IDSYSTEM)&lt;br /&gt;
* JUSTIS 2092&lt;br /&gt;
&lt;br /&gt;
X25 &lt;br /&gt;
* Datex-P X.121 - 4561214123&lt;br /&gt;
** 45 Country code → Norway&lt;br /&gt;
** 61 Network identifier → DATEX-P (historically Televerket / Telenor)&lt;br /&gt;
** 214123 - Network internal (Subscriber/NUA)&lt;br /&gt;
* X25 was using HDLC1 controller logical 1360&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
* Based on timestamps on the disk, the system was probably first time configured 28. June 1988.&lt;br /&gt;
* Last time booted: USER SYSTEM ENTERED AT 11.59.52     21 AUGUST   1992&lt;br /&gt;
&lt;br /&gt;
=== 2026  ===&lt;br /&gt;
&lt;br /&gt;
: 2025-01-25: Machine arrived. Started with taking some photos and getting access to the SCSI drive for disk imaging.&lt;br /&gt;
: 2025-01-25: Tried first with BlueSCSI2 (https://bluescsi.com/) but it didnt manage to identify the SCSI drive.&lt;br /&gt;
: 2025-01-25: Then used the ZuluSCSI (https://zuluscsi.com/) which was able to image the drive in less than 3 minutes.&lt;br /&gt;
: 2025-02-01: Tried to boot the SCSI image on the RetroCore emulator. It seems that the CPU type and CPU number for the OS does not match the ND-110 SATELLITE, but a ND-500 COMPACT&lt;br /&gt;
== Boot ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;white-space:pre; font-family:monospace;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    406B&lt;br /&gt;
REVISION (PATCH FILE NO.):    7300B&lt;br /&gt;
CPU TYPE:     5291&lt;br /&gt;
CPU NUMBER:  21057&lt;br /&gt;
GENERATED:   20.35.00     29 SEPTEMBER   1987&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3353B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
The system belongs to Nikolai and is located in Switzerland&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual systems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/libhw.html][Norsk Data library, Hardware]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C4.pdf][Book 2: ND-100 SATELLITE, Assembly Drawings]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C5.pdf][Book 2: ND-100 SATELLITE, Cable Info. Block &amp;amp; Wiring Diagrams]&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual_systems]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7818</id>
		<title>ND-110 Satellite 9800.20922</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7818"/>
		<updated>2026-02-01T20:59:01Z</updated>

		<summary type="html">&lt;p&gt;RHansen: checkmark on power&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[ND-110 Satellite Series|ND-110 Satellite]] &lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Hardware in the machine is described in this section.&lt;br /&gt;
&lt;br /&gt;
[[File:Satellite-cards-9800-20922.jpg|200px|thumb|right|PCB Cards in the Satellite]]&lt;br /&gt;
&lt;br /&gt;
The machine is probably a model 9883 model T9 as it has:&lt;br /&gt;
* 2MB RAM&lt;br /&gt;
* 125 MB SCSI DISK&lt;br /&gt;
* Streamer tape (125 MB QUIC)&lt;br /&gt;
* 9 Interfaces for terminal/printer&lt;br /&gt;
&lt;br /&gt;
A sales document with more details for the ND-110 Satellite can be found here &lt;br /&gt;
* http://norsk-data.com/library/libsales/ND-SID019-A1-NO.pdf&lt;br /&gt;
* http://www.sintran.com/sintran/library/libpdpi/ND-9881-A1-EN.pdf&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Hardware Components (Leftmost → Rightmost)&lt;br /&gt;
|-&lt;br /&gt;
! Backplane Slot !! Card !! Part Number !! PCB Number !! Description !! Print Version !! ECO&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PIOC || 322613 || PCB [[3013]] || ND-100 8-TERM || Print M || ECO N&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MEGAL || 322615 || PCB [[3015]] || ND100 HDLC W/A.LO. || Print S || ECO&lt;br /&gt;
|-&lt;br /&gt;
| 3 || MEMORY || 322672 || PCB [[3042]] || ND100 2MBY RAM || Print B || ECO D&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FL. SCSI || 350001 || PCB [[3201]] || SCSI / FLOPPY || Print B || ECO E&lt;br /&gt;
|-&lt;br /&gt;
| 5 || CPU || 324140 || PCB [[3095]] || ND110 CPU &amp;amp; MM 32B || Print B || ECO H&lt;br /&gt;
|-&lt;br /&gt;
| 6 || COMM ||  ||  || Empty (can be upgraded with 3094 ETHERNET IF)||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || PIOC ||  ||  || Empty (can be upgraded with 3108 PIOC)||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Switch settings ===&lt;br /&gt;
CPU [[3095]]&lt;br /&gt;
&lt;br /&gt;
* 8J - baud rate switch - 7 - 9600 baud (standard)&lt;br /&gt;
* 28J - ALD switch - 9 - ALD reg I12 = 21560B, Mass load 1560B, comment: &amp;quot;SCSI controller 1, only available on the ND-110/120 CPU&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
* Floppy drive : 5 1/4&amp;quot; (potentially 1.2MB)&lt;br /&gt;
* Tape streamer : Tandberg TDC 3640&lt;br /&gt;
* Hard drive : MICROPOLIS 1375 (125 MB) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&lt;br /&gt;
The CPU is an ND-110/CX with 32 bit floating point running Microcode version 14 &lt;br /&gt;
&lt;br /&gt;
This can be seen by the label on the EPROM&#039;s for the Microcode&lt;br /&gt;
&lt;br /&gt;
* 37932L &lt;br /&gt;
* 37933L &lt;br /&gt;
&lt;br /&gt;
L means version 12 as L is the 12th character in the alphabet, but decimal 12 is 14 octal (latest known version is version 14/L).&lt;br /&gt;
32 (in the 37932L label) means 32 bit floating point.&lt;br /&gt;
&lt;br /&gt;
For more information, check out the [3095] PCB documentation&lt;br /&gt;
&lt;br /&gt;
=== Power Supply ===&lt;br /&gt;
* Wiener DN 01, 390 W&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
* Power connector : [https://en.wikipedia.org/wiki/IEC_60320] C16 type [https://en.wikipedia.org/wiki/IEC_60320#C15.2FC16_coupler C16]&lt;br /&gt;
* Power cable [https://no.farnell.com/bulgin/px0597/socket-iec-hot-free/dp/1172515?MER=sy-me-pd-mi-acce]&lt;br /&gt;
* Console connector : [[Wikipedia:DB25F|DB25F]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
On the devices&lt;br /&gt;
&lt;br /&gt;
 FLOPPY: 187-3187&lt;br /&gt;
 STREAMER: ND 229-1053 TDC 3640 Series SCSI , [[TDC_3640]] (SerialNo 373663) INCOMING DATE 22-04-88&lt;br /&gt;
 DISK: Micropolis 1375 (S/N:6082010769 P/N:900525-09-BA) 74 MB formatted (https://www.micropolis.com/support/hard-drives/1375)&lt;br /&gt;
&lt;br /&gt;
On the front of the cabinet (behind the front door)&lt;br /&gt;
* printed label above tape streamer / floppy drive&lt;br /&gt;
 LOGNR&lt;br /&gt;
  9021&lt;br /&gt;
* Norsk Data ID LABEL at the bottom&lt;br /&gt;
 CAB./ASSY NO: 1.1&lt;br /&gt;
 FUNCTION: SATELLITE &lt;br /&gt;
 SYSTEM NO: 9800/20922&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
* Some basic cleaning as the system has been standing since the 90&#039;s {{done}}&lt;br /&gt;
* Document all serial and model numbers on devices.{{done}}&lt;br /&gt;
* Image the SCSI disk before attempting a boot. {{done}}  Spins up, and was easy to image using ZuluSCSI (somehow the BlueSCSI2 was unable to identify the drive) &lt;br /&gt;
* Check the power supply condition {{done}}&lt;br /&gt;
&lt;br /&gt;
== Operating System ==&lt;br /&gt;
&lt;br /&gt;
* SINTRAN III - VSX/500 K &lt;br /&gt;
* XMSG is configured&lt;br /&gt;
* The password for user SYSTEM is set to 0 (?) or is it empty?&lt;br /&gt;
&lt;br /&gt;
XMSG Remote&lt;br /&gt;
* ND-5200 2105 (*DSSYSTEM, *IDSYSTEM)&lt;br /&gt;
* JUSTIS 2092&lt;br /&gt;
&lt;br /&gt;
X25 &lt;br /&gt;
* Datex-P X.121 - 4561214123&lt;br /&gt;
** 45 Country code → Norway&lt;br /&gt;
** 61 Network identifier → DATEX-P (historically Televerket / Telenor)&lt;br /&gt;
** 214123 - Network internal (Subscriber/NUA)&lt;br /&gt;
* X25 was using HDLC1 controller logical 1360&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
* Based on timestamps on the disk, the system was probably first time configured 28. June 1988.&lt;br /&gt;
* Last time booted: USER SYSTEM ENTERED AT 11.59.52     21 AUGUST   1992&lt;br /&gt;
&lt;br /&gt;
=== 2026  ===&lt;br /&gt;
&lt;br /&gt;
: 2025-01-25: Machine arrived. Started with taking some photos and getting access to the SCSI drive for disk imaging.&lt;br /&gt;
: 2025-01-25: Tried first with BlueSCSI2 (https://bluescsi.com/) but it didnt manage to identify the SCSI drive.&lt;br /&gt;
: 2025-01-25: Then used the ZuluSCSI (https://zuluscsi.com/) which was able to image the drive in less than 3 minutes.&lt;br /&gt;
: 2025-02-01: Tried to boot the SCSI image on the RetroCore emulator. It seems that the CPU type and CPU number for the OS does not match the ND-110 SATELLITE, but a ND-500 COMPACT&lt;br /&gt;
== Boot ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;white-space:pre; font-family:monospace;&amp;quot; |&lt;br /&gt;
21.42.27      1 FEBRUARY   1998&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    406B&lt;br /&gt;
REVISION (PATCH FILE NO.):    7300B&lt;br /&gt;
CPU TYPE:     5291&lt;br /&gt;
CPU NUMBER:  21057&lt;br /&gt;
GENERATED:   20.35.00     29 SEPTEMBER   1987&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3353B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
The system belongs to Nikolai and is located in Switzerland&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual systems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/libhw.html][Norsk Data library, Hardware]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C4.pdf][Book 2: ND-100 SATELLITE, Assembly Drawings]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C5.pdf][Book 2: ND-100 SATELLITE, Cable Info. Block &amp;amp; Wiring Diagrams]&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual_systems]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7817</id>
		<title>ND-110 Satellite 9800.20922</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7817"/>
		<updated>2026-02-01T20:48:14Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Added boot try&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[ND-110 Satellite Series|ND-110 Satellite]] &lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Hardware in the machine is described in this section.&lt;br /&gt;
&lt;br /&gt;
[[File:Satellite-cards-9800-20922.jpg|200px|thumb|right|PCB Cards in the Satellite]]&lt;br /&gt;
&lt;br /&gt;
The machine is probably a model 9883 model T9 as it has:&lt;br /&gt;
* 2MB RAM&lt;br /&gt;
* 125 MB SCSI DISK&lt;br /&gt;
* Streamer tape (125 MB QUIC)&lt;br /&gt;
* 9 Interfaces for terminal/printer&lt;br /&gt;
&lt;br /&gt;
A sales document with more details for the ND-110 Satellite can be found here &lt;br /&gt;
* http://norsk-data.com/library/libsales/ND-SID019-A1-NO.pdf&lt;br /&gt;
* http://www.sintran.com/sintran/library/libpdpi/ND-9881-A1-EN.pdf&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Hardware Components (Leftmost → Rightmost)&lt;br /&gt;
|-&lt;br /&gt;
! Backplane Slot !! Card !! Part Number !! PCB Number !! Description !! Print Version !! ECO&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PIOC || 322613 || PCB [[3013]] || ND-100 8-TERM || Print M || ECO N&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MEGAL || 322615 || PCB [[3015]] || ND100 HDLC W/A.LO. || Print S || ECO&lt;br /&gt;
|-&lt;br /&gt;
| 3 || MEMORY || 322672 || PCB [[3042]] || ND100 2MBY RAM || Print B || ECO D&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FL. SCSI || 350001 || PCB [[3201]] || SCSI / FLOPPY || Print B || ECO E&lt;br /&gt;
|-&lt;br /&gt;
| 5 || CPU || 324140 || PCB [[3095]] || ND110 CPU &amp;amp; MM 32B || Print B || ECO H&lt;br /&gt;
|-&lt;br /&gt;
| 6 || COMM ||  ||  || Empty (can be upgraded with 3094 ETHERNET IF)||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || PIOC ||  ||  || Empty (can be upgraded with 3108 PIOC)||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Switch settings ===&lt;br /&gt;
CPU [[3095]]&lt;br /&gt;
&lt;br /&gt;
* 8J - baud rate switch - 7 - 9600 baud (standard)&lt;br /&gt;
* 28J - ALD switch - 9 - ALD reg I12 = 21560B, Mass load 1560B, comment: &amp;quot;SCSI controller 1, only available on the ND-110/120 CPU&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
* Floppy drive : 5 1/4&amp;quot; (potentially 1.2MB)&lt;br /&gt;
* Tape streamer : Tandberg TDC 3640&lt;br /&gt;
* Hard drive : MICROPOLIS 1375 (125 MB) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&lt;br /&gt;
The CPU is an ND-110/CX with 32 bit floating point running Microcode version 14 &lt;br /&gt;
&lt;br /&gt;
This can be seen by the label on the EPROM&#039;s for the Microcode&lt;br /&gt;
&lt;br /&gt;
* 37932L &lt;br /&gt;
* 37933L &lt;br /&gt;
&lt;br /&gt;
L means version 12 as L is the 12th character in the alphabet, but decimal 12 is 14 octal (latest known version is version 14/L).&lt;br /&gt;
32 (in the 37932L label) means 32 bit floating point.&lt;br /&gt;
&lt;br /&gt;
For more information, check out the [3095] PCB documentation&lt;br /&gt;
&lt;br /&gt;
=== Power Supply ===&lt;br /&gt;
* Wiener DN 01, 390 W&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
* Power connector : [https://en.wikipedia.org/wiki/IEC_60320] C16 type [https://en.wikipedia.org/wiki/IEC_60320#C15.2FC16_coupler C16]&lt;br /&gt;
* Power cable [https://no.farnell.com/bulgin/px0597/socket-iec-hot-free/dp/1172515?MER=sy-me-pd-mi-acce]&lt;br /&gt;
* Console connector : [[Wikipedia:DB25F|DB25F]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
On the devices&lt;br /&gt;
&lt;br /&gt;
 FLOPPY: 187-3187&lt;br /&gt;
 STREAMER: ND 229-1053 TDC 3640 Series SCSI , [[TDC_3640]] (SerialNo 373663) INCOMING DATE 22-04-88&lt;br /&gt;
 DISK: Micropolis 1375 (S/N:6082010769 P/N:900525-09-BA) 74 MB formatted (https://www.micropolis.com/support/hard-drives/1375)&lt;br /&gt;
&lt;br /&gt;
On the front of the cabinet (behind the front door)&lt;br /&gt;
* printed label above tape streamer / floppy drive&lt;br /&gt;
 LOGNR&lt;br /&gt;
  9021&lt;br /&gt;
* Norsk Data ID LABEL at the bottom&lt;br /&gt;
 CAB./ASSY NO: 1.1&lt;br /&gt;
 FUNCTION: SATELLITE &lt;br /&gt;
 SYSTEM NO: 9800/20922&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
* Some basic cleaning as the system has been standing since the 90&#039;s {{done}}&lt;br /&gt;
* Document all serial and model numbers on devices.{{done}}&lt;br /&gt;
* Image the SCSI disk before attempting a boot. {{done}}  Spins up, and was easy to image using ZuluSCSI (somehow the BlueSCSI2 was unable to identify the drive) &lt;br /&gt;
* Check the power supply condition {{in progress}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operating System ==&lt;br /&gt;
&lt;br /&gt;
* SINTRAN III - VSX/500 K &lt;br /&gt;
* XMSG is configured&lt;br /&gt;
* The password for user SYSTEM is set to 0 (?) or is it empty?&lt;br /&gt;
&lt;br /&gt;
XMSG Remote&lt;br /&gt;
* ND-5200 2105 (*DSSYSTEM, *IDSYSTEM)&lt;br /&gt;
* JUSTIS 2092&lt;br /&gt;
&lt;br /&gt;
X25 &lt;br /&gt;
* Datex-P X.121 - 4561214123&lt;br /&gt;
** 45 Country code → Norway&lt;br /&gt;
** 61 Network identifier → DATEX-P (historically Televerket / Telenor)&lt;br /&gt;
** 214123 - Network internal (Subscriber/NUA)&lt;br /&gt;
* X25 was using HDLC1 controller logical 1360&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
* Based on timestamps on the disk, the system was probably first time configured 28. June 1988.&lt;br /&gt;
* Last time booted: USER SYSTEM ENTERED AT 11.59.52     21 AUGUST   1992&lt;br /&gt;
&lt;br /&gt;
=== 2026  ===&lt;br /&gt;
&lt;br /&gt;
: 2025-01-25: Machine arrived. Started with taking some photos and getting access to the SCSI drive for disk imaging.&lt;br /&gt;
: 2025-01-25: Tried first with BlueSCSI2 (https://bluescsi.com/) but it didnt manage to identify the SCSI drive.&lt;br /&gt;
: 2025-01-25: Then used the ZuluSCSI (https://zuluscsi.com/) which was able to image the drive in less than 3 minutes.&lt;br /&gt;
: 2025-02-01: Tried to boot the SCSI image on the RetroCore emulator. It seems that the CPU type and CPU number for the OS does not match the ND-110 SATELLITE, but a ND-500 COMPACT&lt;br /&gt;
== Boot ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| style=&amp;quot;white-space:pre; font-family:monospace;&amp;quot; |&lt;br /&gt;
21.42.27      1 FEBRUARY   1998&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    406B&lt;br /&gt;
REVISION (PATCH FILE NO.):    7300B&lt;br /&gt;
CPU TYPE:     5291&lt;br /&gt;
CPU NUMBER:  21057&lt;br /&gt;
GENERATED:   20.35.00     29 SEPTEMBER   1987&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3353B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
The system belongs to Nikolai and is located in Switzerland&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual systems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/libhw.html][Norsk Data library, Hardware]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C4.pdf][Book 2: ND-100 SATELLITE, Assembly Drawings]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C5.pdf][Book 2: ND-100 SATELLITE, Cable Info. Block &amp;amp; Wiring Diagrams]&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual_systems]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7816</id>
		<title>ND-110 Satellite 9800.20922</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7816"/>
		<updated>2026-01-30T14:40:49Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* Switch settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[ND-110 Satellite Series|ND-110 Satellite]] &lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Hardware in the machine is described in this section.&lt;br /&gt;
&lt;br /&gt;
[[File:Satellite-cards-9800-20922.jpg|200px|thumb|right|PCB Cards in the Satellite]]&lt;br /&gt;
&lt;br /&gt;
The machine is probably a model 9883 model T9 as it has:&lt;br /&gt;
* 2MB RAM&lt;br /&gt;
* 125 MB SCSI DISK&lt;br /&gt;
* Streamer tape (125 MB QUIC)&lt;br /&gt;
* 9 Interfaces for terminal/printer&lt;br /&gt;
&lt;br /&gt;
A sales document with more details for the ND-110 Satellite can be found here &lt;br /&gt;
* http://norsk-data.com/library/libsales/ND-SID019-A1-NO.pdf&lt;br /&gt;
* http://www.sintran.com/sintran/library/libpdpi/ND-9881-A1-EN.pdf&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Hardware Components (Leftmost → Rightmost)&lt;br /&gt;
|-&lt;br /&gt;
! Backplane Slot !! Card !! Part Number !! PCB Number !! Description !! Print Version !! ECO&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PIOC || 322613 || PCB [[3013]] || ND-100 8-TERM || Print M || ECO N&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MEGAL || 322615 || PCB [[3015]] || ND100 HDLC W/A.LO. || Print S || ECO&lt;br /&gt;
|-&lt;br /&gt;
| 3 || MEMORY || 322672 || PCB [[3042]] || ND100 2MBY RAM || Print B || ECO D&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FL. SCSI || 350001 || PCB [[3201]] || SCSI / FLOPPY || Print B || ECO E&lt;br /&gt;
|-&lt;br /&gt;
| 5 || CPU || 324140 || PCB [[3095]] || ND110 CPU &amp;amp; MM 32B || Print B || ECO H&lt;br /&gt;
|-&lt;br /&gt;
| 6 || COMM ||  ||  || Empty (can be upgraded with 3094 ETHERNET IF)||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || PIOC ||  ||  || Empty (can be upgraded with 3108 PIOC)||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Switch settings ===&lt;br /&gt;
CPU [[3095]]&lt;br /&gt;
&lt;br /&gt;
* 8J - baud rate switch - 7 - 9600 baud (standard)&lt;br /&gt;
* 28J - ALD switch - 9 - ALD reg I12 = 21560B, Mass load 1560B, comment: &amp;quot;SCSI controller 1, only available on the ND-110/120 CPU&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
* Floppy drive : 5 1/4&amp;quot; (potentially 1.2MB)&lt;br /&gt;
* Tape streamer : Tandberg TDC 3640&lt;br /&gt;
* Hard drive : MICROPOLIS 1375 (125 MB) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&lt;br /&gt;
The CPU is an ND-110/CX with 32 bit floating point running Microcode version 14 &lt;br /&gt;
&lt;br /&gt;
This can be seen by the label on the EPROM&#039;s for the Microcode&lt;br /&gt;
&lt;br /&gt;
* 37932L &lt;br /&gt;
* 37933L &lt;br /&gt;
&lt;br /&gt;
L means version 12 as L is the 12th character in the alphabet, but decimal 12 is 14 octal (latest known version is version 14/L).&lt;br /&gt;
32 (in the 37932L label) means 32 bit floating point.&lt;br /&gt;
&lt;br /&gt;
For more information, check out the [3095] PCB documentation&lt;br /&gt;
&lt;br /&gt;
=== Power Supply ===&lt;br /&gt;
* Wiener DN 01, 390 W&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
* Power connector : [https://en.wikipedia.org/wiki/IEC_60320] C16 type [https://en.wikipedia.org/wiki/IEC_60320#C15.2FC16_coupler C16]&lt;br /&gt;
* Power cable [https://no.farnell.com/bulgin/px0597/socket-iec-hot-free/dp/1172515?MER=sy-me-pd-mi-acce]&lt;br /&gt;
* Console connector : [[Wikipedia:DB25F|DB25F]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
On the devices&lt;br /&gt;
&lt;br /&gt;
 FLOPPY: 187-3187&lt;br /&gt;
 STREAMER: ND 229-1053 TDC 3640 Series SCSI , [[TDC_3640]] (SerialNo 373663) INCOMING DATE 22-04-88&lt;br /&gt;
 DISK: Micropolis 1375 (S/N:6082010769 P/N:900525-09-BA) 74 MB formatted (https://www.micropolis.com/support/hard-drives/1375)&lt;br /&gt;
&lt;br /&gt;
On the front of the cabinet (behind the front door)&lt;br /&gt;
* printed label above tape streamer / floppy drive&lt;br /&gt;
 LOGNR&lt;br /&gt;
  9021&lt;br /&gt;
* Norsk Data ID LABEL at the bottom&lt;br /&gt;
 CAB./ASSY NO: 1.1&lt;br /&gt;
 FUNCTION: SATELLITE &lt;br /&gt;
 SYSTEM NO: 9800/20922&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
* Some basic cleaning as the system has been standing since the 90&#039;s {{done}}&lt;br /&gt;
* Document all serial and model numbers on devices.{{done}}&lt;br /&gt;
* Image the SCSI disk before attempting a boot. {{done}}  Spins up, and was easy to image using ZuluSCSI (somehow the BlueSCSI2 was unable to identify the drive) &lt;br /&gt;
* Check the power supply condition {{in progress}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operating System ==&lt;br /&gt;
&lt;br /&gt;
* SINTRAN III - VSX/500 K &lt;br /&gt;
* XMSG is configured&lt;br /&gt;
* The password for user SYSTEM is set to 0 (?) or is it empty?&lt;br /&gt;
&lt;br /&gt;
XMSG Remote&lt;br /&gt;
* ND-5200 2105 (*DSSYSTEM, *IDSYSTEM)&lt;br /&gt;
* JUSTIS 2092&lt;br /&gt;
&lt;br /&gt;
X25 &lt;br /&gt;
* Datex-P X.121 - 4561214123&lt;br /&gt;
** 45 Country code → Norway&lt;br /&gt;
** 61 Network identifier → DATEX-P (historically Televerket / Telenor)&lt;br /&gt;
** 214123 - Network internal (Subscriber/NUA)&lt;br /&gt;
* X25 was using HDLC1 controller logical 1360&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
* Based on timestamps on the disk, the system was probably first time configured 28. June 1988.&lt;br /&gt;
* Last time booted: USER SYSTEM ENTERED AT 11.59.52     21 AUGUST   1992&lt;br /&gt;
&lt;br /&gt;
=== 2026  ===&lt;br /&gt;
&lt;br /&gt;
: 2025-01-25: Machine arrived. Started with taking some photos and getting access to the SCSI drive for disk imaging.&lt;br /&gt;
: 2025-01-25: Tried first with BlueSCSI2 (https://bluescsi.com/) but it didnt manage to identify the SCSI drive.&lt;br /&gt;
: 2025-01-25: Then used the ZuluSCSI (https://zuluscsi.com/) which was able to image the drive in less than 3 minutes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
The system belongs to Nikolai and is located in Switzerland&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual systems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/libhw.html][Norsk Data library, Hardware]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C4.pdf][Book 2: ND-100 SATELLITE, Assembly Drawings]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C5.pdf][Book 2: ND-100 SATELLITE, Cable Info. Block &amp;amp; Wiring Diagrams]&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual_systems]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7815</id>
		<title>ND-110 Satellite 9800.20922</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7815"/>
		<updated>2026-01-30T14:31:31Z</updated>

		<summary type="html">&lt;p&gt;RHansen: fixed details on microcode version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[ND-110 Satellite Series|ND-110 Satellite]] &lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Hardware in the machine is described in this section.&lt;br /&gt;
&lt;br /&gt;
[[File:Satellite-cards-9800-20922.jpg|200px|thumb|right|PCB Cards in the Satellite]]&lt;br /&gt;
&lt;br /&gt;
The machine is probably a model 9883 model T9 as it has:&lt;br /&gt;
* 2MB RAM&lt;br /&gt;
* 125 MB SCSI DISK&lt;br /&gt;
* Streamer tape (125 MB QUIC)&lt;br /&gt;
* 9 Interfaces for terminal/printer&lt;br /&gt;
&lt;br /&gt;
A sales document with more details for the ND-110 Satellite can be found here &lt;br /&gt;
* http://norsk-data.com/library/libsales/ND-SID019-A1-NO.pdf&lt;br /&gt;
* http://www.sintran.com/sintran/library/libpdpi/ND-9881-A1-EN.pdf&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Hardware Components (Leftmost → Rightmost)&lt;br /&gt;
|-&lt;br /&gt;
! Backplane Slot !! Card !! Part Number !! PCB Number !! Description !! Print Version !! ECO&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PIOC || 322613 || PCB [[3013]] || ND-100 8-TERM || Print M || ECO N&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MEGAL || 322615 || PCB [[3015]] || ND100 HDLC W/A.LO. || Print S || ECO&lt;br /&gt;
|-&lt;br /&gt;
| 3 || MEMORY || 322672 || PCB [[3042]] || ND100 2MBY RAM || Print B || ECO D&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FL. SCSI || 350001 || PCB [[3201]] || SCSI / FLOPPY || Print B || ECO E&lt;br /&gt;
|-&lt;br /&gt;
| 5 || CPU || 324140 || PCB [[3095]] || ND110 CPU &amp;amp; MM 32B || Print B || ECO H&lt;br /&gt;
|-&lt;br /&gt;
| 6 || COMM ||  ||  || Empty (can be upgraded with 3094 ETHERNET IF)||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || PIOC ||  ||  || Empty (can be upgraded with 3108 PIOC)||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Switch settings ===&lt;br /&gt;
CPU [[3095]] ALD= 9 (Mass boot from ____ assuming SCSI ) Console Speed =7 (9600bps) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
* Floppy drive : 5 1/4&amp;quot; (potentially 1.2MB)&lt;br /&gt;
* Tape streamer : Tandberg TDC 3640&lt;br /&gt;
* Hard drive : MICROPOLIS 1375 (125 MB) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&lt;br /&gt;
The CPU is an ND-110/CX with 32 bit floating point running Microcode version 14 &lt;br /&gt;
&lt;br /&gt;
This can be seen by the label on the EPROM&#039;s for the Microcode&lt;br /&gt;
&lt;br /&gt;
* 37932L &lt;br /&gt;
* 37933L &lt;br /&gt;
&lt;br /&gt;
L means version 12 as L is the 12th character in the alphabet, but decimal 12 is 14 octal (latest known version is version 14/L).&lt;br /&gt;
32 (in the 37932L label) means 32 bit floating point.&lt;br /&gt;
&lt;br /&gt;
For more information, check out the [3095] PCB documentation&lt;br /&gt;
&lt;br /&gt;
=== Power Supply ===&lt;br /&gt;
* Wiener DN 01, 390 W&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
* Power connector : [https://en.wikipedia.org/wiki/IEC_60320] C16 type [https://en.wikipedia.org/wiki/IEC_60320#C15.2FC16_coupler C16]&lt;br /&gt;
* Power cable [https://no.farnell.com/bulgin/px0597/socket-iec-hot-free/dp/1172515?MER=sy-me-pd-mi-acce]&lt;br /&gt;
* Console connector : [[Wikipedia:DB25F|DB25F]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
On the devices&lt;br /&gt;
&lt;br /&gt;
 FLOPPY: 187-3187&lt;br /&gt;
 STREAMER: ND 229-1053 TDC 3640 Series SCSI , [[TDC_3640]] (SerialNo 373663) INCOMING DATE 22-04-88&lt;br /&gt;
 DISK: Micropolis 1375 (S/N:6082010769 P/N:900525-09-BA) 74 MB formatted (https://www.micropolis.com/support/hard-drives/1375)&lt;br /&gt;
&lt;br /&gt;
On the front of the cabinet (behind the front door)&lt;br /&gt;
* printed label above tape streamer / floppy drive&lt;br /&gt;
 LOGNR&lt;br /&gt;
  9021&lt;br /&gt;
* Norsk Data ID LABEL at the bottom&lt;br /&gt;
 CAB./ASSY NO: 1.1&lt;br /&gt;
 FUNCTION: SATELLITE &lt;br /&gt;
 SYSTEM NO: 9800/20922&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
* Some basic cleaning as the system has been standing since the 90&#039;s {{done}}&lt;br /&gt;
* Document all serial and model numbers on devices.{{done}}&lt;br /&gt;
* Image the SCSI disk before attempting a boot. {{done}}  Spins up, and was easy to image using ZuluSCSI (somehow the BlueSCSI2 was unable to identify the drive) &lt;br /&gt;
* Check the power supply condition {{in progress}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operating System ==&lt;br /&gt;
&lt;br /&gt;
* SINTRAN III - VSX/500 K &lt;br /&gt;
* XMSG is configured&lt;br /&gt;
* The password for user SYSTEM is set to 0 (?) or is it empty?&lt;br /&gt;
&lt;br /&gt;
XMSG Remote&lt;br /&gt;
* ND-5200 2105 (*DSSYSTEM, *IDSYSTEM)&lt;br /&gt;
* JUSTIS 2092&lt;br /&gt;
&lt;br /&gt;
X25 &lt;br /&gt;
* Datex-P X.121 - 4561214123&lt;br /&gt;
** 45 Country code → Norway&lt;br /&gt;
** 61 Network identifier → DATEX-P (historically Televerket / Telenor)&lt;br /&gt;
** 214123 - Network internal (Subscriber/NUA)&lt;br /&gt;
* X25 was using HDLC1 controller logical 1360&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
* Based on timestamps on the disk, the system was probably first time configured 28. June 1988.&lt;br /&gt;
* Last time booted: USER SYSTEM ENTERED AT 11.59.52     21 AUGUST   1992&lt;br /&gt;
&lt;br /&gt;
=== 2026  ===&lt;br /&gt;
&lt;br /&gt;
: 2025-01-25: Machine arrived. Started with taking some photos and getting access to the SCSI drive for disk imaging.&lt;br /&gt;
: 2025-01-25: Tried first with BlueSCSI2 (https://bluescsi.com/) but it didnt manage to identify the SCSI drive.&lt;br /&gt;
: 2025-01-25: Then used the ZuluSCSI (https://zuluscsi.com/) which was able to image the drive in less than 3 minutes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
The system belongs to Nikolai and is located in Switzerland&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual systems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/libhw.html][Norsk Data library, Hardware]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C4.pdf][Book 2: ND-100 SATELLITE, Assembly Drawings]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C5.pdf][Book 2: ND-100 SATELLITE, Cable Info. Block &amp;amp; Wiring Diagrams]&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual_systems]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7814</id>
		<title>ND-110 Satellite 9800.20922</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7814"/>
		<updated>2026-01-30T14:28:28Z</updated>

		<summary type="html">&lt;p&gt;RHansen: updated some more details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[ND-110 Satellite Series|ND-110 Satellite]] &lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Hardware in the machine is described in this section.&lt;br /&gt;
&lt;br /&gt;
[[File:Satellite-cards-9800-20922.jpg|200px|thumb|right|PCB Cards in the Satellite]]&lt;br /&gt;
&lt;br /&gt;
The machine is probably a model 9883 model T9 as it has:&lt;br /&gt;
* 2MB RAM&lt;br /&gt;
* 125 MB SCSI DISK&lt;br /&gt;
* Streamer tape (125 MB QUIC)&lt;br /&gt;
* 9 Interfaces for terminal/printer&lt;br /&gt;
&lt;br /&gt;
A sales document with more details for the ND-110 Satellite can be found here &lt;br /&gt;
* http://norsk-data.com/library/libsales/ND-SID019-A1-NO.pdf&lt;br /&gt;
* http://www.sintran.com/sintran/library/libpdpi/ND-9881-A1-EN.pdf&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Hardware Components (Leftmost → Rightmost)&lt;br /&gt;
|-&lt;br /&gt;
! Backplane Slot !! Card !! Part Number !! PCB Number !! Description !! Print Version !! ECO&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PIOC || 322613 || PCB [[3013]] || ND-100 8-TERM || Print M || ECO N&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MEGAL || 322615 || PCB [[3015]] || ND100 HDLC W/A.LO. || Print S || ECO&lt;br /&gt;
|-&lt;br /&gt;
| 3 || MEMORY || 322672 || PCB [[3042]] || ND100 2MBY RAM || Print B || ECO D&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FL. SCSI || 350001 || PCB [[3201]] || SCSI / FLOPPY || Print B || ECO E&lt;br /&gt;
|-&lt;br /&gt;
| 5 || CPU || 324140 || PCB [[3095]] || ND110 CPU &amp;amp; MM 32B || Print B || ECO H&lt;br /&gt;
|-&lt;br /&gt;
| 6 || COMM ||  ||  || Empty (can be upgraded with 3094 ETHERNET IF)||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || PIOC ||  ||  || Empty (can be upgraded with 3108 PIOC)||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Switch settings ===&lt;br /&gt;
CPU [[3095]] ALD= 9 (Mass boot from ____ assuming SCSI ) Console Speed =7 (9600bps) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
* Floppy drive : 5 1/4&amp;quot; (potentially 1.2MB)&lt;br /&gt;
* Tape streamer : Tandberg TDC 3640&lt;br /&gt;
* Hard drive : MICROPOLIS 1375 (125 MB) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CPU ===&lt;br /&gt;
&lt;br /&gt;
The CPU is an ND-110/CX with 32 bit floating point running Microcode version 12 (latest known version is version 13).&lt;br /&gt;
&lt;br /&gt;
This can be seen by the label on the EPROM&#039;s for the Microcode&lt;br /&gt;
&lt;br /&gt;
* 37932L &lt;br /&gt;
* 37933L &lt;br /&gt;
&lt;br /&gt;
L means version 12 as L is the 12th character in the alphabet. &lt;br /&gt;
32 (in the 37932L label) means 32 bit floating point.&lt;br /&gt;
&lt;br /&gt;
For more information, check out the [3095] PCB documentation &lt;br /&gt;
&lt;br /&gt;
=== Power Supply ===&lt;br /&gt;
* Wiener DN 01, 390 W&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
* Power connector : [https://en.wikipedia.org/wiki/IEC_60320] C16 type [https://en.wikipedia.org/wiki/IEC_60320#C15.2FC16_coupler C16]&lt;br /&gt;
* Power cable [https://no.farnell.com/bulgin/px0597/socket-iec-hot-free/dp/1172515?MER=sy-me-pd-mi-acce]&lt;br /&gt;
* Console connector : [[Wikipedia:DB25F|DB25F]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
On the devices&lt;br /&gt;
&lt;br /&gt;
 FLOPPY: 187-3187&lt;br /&gt;
 STREAMER: ND 229-1053 TDC 3640 Series SCSI , [[TDC_3640]] (SerialNo 373663) INCOMING DATE 22-04-88&lt;br /&gt;
 DISK: Micropolis 1375 (S/N:6082010769 P/N:900525-09-BA) 74 MB formatted (https://www.micropolis.com/support/hard-drives/1375)&lt;br /&gt;
&lt;br /&gt;
On the front of the cabinet (behind the front door)&lt;br /&gt;
* printed label above tape streamer / floppy drive&lt;br /&gt;
 LOGNR&lt;br /&gt;
  9021&lt;br /&gt;
* Norsk Data ID LABEL at the bottom&lt;br /&gt;
 CAB./ASSY NO: 1.1&lt;br /&gt;
 FUNCTION: SATELLITE &lt;br /&gt;
 SYSTEM NO: 9800/20922&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
* Some basic cleaning as the system has been standing since the 90&#039;s {{done}}&lt;br /&gt;
* Document all serial and model numbers on devices.{{done}}&lt;br /&gt;
* Image the SCSI disk before attempting a boot. {{done}}  Spins up, and was easy to image using ZuluSCSI (somehow the BlueSCSI2 was unable to identify the drive) &lt;br /&gt;
* Check the power supply condition {{in progress}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operating System ==&lt;br /&gt;
&lt;br /&gt;
* SINTRAN III - VSX/500 K &lt;br /&gt;
* XMSG is configured&lt;br /&gt;
* The password for user SYSTEM is set to 0 (?) or is it empty?&lt;br /&gt;
&lt;br /&gt;
XMSG Remote&lt;br /&gt;
* ND-5200 2105 (*DSSYSTEM, *IDSYSTEM)&lt;br /&gt;
* JUSTIS 2092&lt;br /&gt;
&lt;br /&gt;
X25 &lt;br /&gt;
* Datex-P X.121 - 4561214123&lt;br /&gt;
** 45 Country code → Norway&lt;br /&gt;
** 61 Network identifier → DATEX-P (historically Televerket / Telenor)&lt;br /&gt;
** 214123 - Network internal (Subscriber/NUA)&lt;br /&gt;
* X25 was using HDLC1 controller logical 1360&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
* Based on timestamps on the disk, the system was probably first time configured 28. June 1988.&lt;br /&gt;
* Last time booted: USER SYSTEM ENTERED AT 11.59.52     21 AUGUST   1992&lt;br /&gt;
&lt;br /&gt;
=== 2026  ===&lt;br /&gt;
&lt;br /&gt;
: 2025-01-25: Machine arrived. Started with taking some photos and getting access to the SCSI drive for disk imaging.&lt;br /&gt;
: 2025-01-25: Tried first with BlueSCSI2 (https://bluescsi.com/) but it didnt manage to identify the SCSI drive.&lt;br /&gt;
: 2025-01-25: Then used the ZuluSCSI (https://zuluscsi.com/) which was able to image the drive in less than 3 minutes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Location==&lt;br /&gt;
The system belongs to Nikolai and is located in Switzerland&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual systems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/libhw.html][Norsk Data library, Hardware]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C4.pdf][Book 2: ND-100 SATELLITE, Assembly Drawings]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C5.pdf][Book 2: ND-100 SATELLITE, Cable Info. Block &amp;amp; Wiring Diagrams]&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual_systems]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=3096&amp;diff=7813</id>
		<title>3096</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=3096&amp;diff=7813"/>
		<updated>2026-01-30T13:18:48Z</updated>

		<summary type="html">&lt;p&gt;RHansen: added some description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;3096&#039;&#039;&#039; N-100 Octobus/MPM Line Driver&lt;br /&gt;
{{Stub}}&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Controller for the ND-100 bus to communicate with ND-5000 CPU&#039;s using Octobus&lt;br /&gt;
&lt;br /&gt;
== Switches and indicators ==&lt;br /&gt;
&lt;br /&gt;
==Connectors==&lt;br /&gt;
A address and control, B data and control, the C connector is used for the [[ND-100 Bus]].&lt;br /&gt;
&lt;br /&gt;
== I/O devices on the card ==&lt;br /&gt;
&lt;br /&gt;
== ECO ==&lt;br /&gt;
ECO or Engineering Change Order is a hardware change. Here is a list of known ECO&#039;s for this card.&lt;br /&gt;
* ECO 100-759 - power test program failing&amp;lt;ref name=&amp;quot;ECO&amp;quot;&amp;gt;sintran.com, Norsk Data library, ECO [http://sintran.com/sintran/library/libeco/libeco.html]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
* &lt;br /&gt;
[[Category:ND-100 hardware]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7812</id>
		<title>ND-110 Satellite 9800.20922</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-110_Satellite_9800.20922&amp;diff=7812"/>
		<updated>2026-01-30T13:10:57Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Created new entry for a new machine sold on Finn&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[ND-110 Satellite Series|ND-110 Satellite]] &lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Hardware in the machine is described in this section.&lt;br /&gt;
&lt;br /&gt;
[[File:Satellite-cards-9800-20922.jpg|200px|thumb|right|PCB Cards in the Satellite]]&lt;br /&gt;
&lt;br /&gt;
A sales document with more details for the ND-110 Satellite can be found here http://norsk-data.com/library/libsales/ND-SID019-A1-NO.pdf&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Hardware Components (Leftmost → Rightmost)&lt;br /&gt;
|-&lt;br /&gt;
! Backplane Slot !! Card !! Part Number !! PCB Number !! Description !! Print Version !! ECO&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PIOC || 322613 || PCB [[3013]] || ND-100 8-TERM || Print M || ECO N&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MEGAL || 322615 || PCB [[3015]] || ND100 HDLC W/A.LO. || Print S || ECO&lt;br /&gt;
|-&lt;br /&gt;
| 3 || MEMORY || 322672 || PCB [[3042]] || ND100 2MBY RAM || Print B || ECO D&lt;br /&gt;
|-&lt;br /&gt;
| 4 || FL. SCSI || 350001 || PCB [[3201]] || SCSI / FLOPPY || Print B || ECO E&lt;br /&gt;
|-&lt;br /&gt;
| 5 || CPU || 324140 || PCB [[3095]] || ND110 CPU &amp;amp; MM 32B || Print B || ECO H&lt;br /&gt;
|-&lt;br /&gt;
| 6 || COMM ||  ||  || Empty ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || PIOC ||  ||  || Empty ||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Switch settings ===&lt;br /&gt;
CPU [[3095]] ALD= 9 (Mass boot from ____ assuming SCSI ) Console Speed =7 (9600bps) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
* Floppy drive : 5 1/4&amp;quot; (potentially 1.2MB)&lt;br /&gt;
* Tape streamer : Tandberg TDC 3309&lt;br /&gt;
* Hard drive : MICROPOLIS 1375 (125 MB) -  &lt;br /&gt;
Mounted on Disc-board 1824B&lt;br /&gt;
&lt;br /&gt;
=== Power Supply ===&lt;br /&gt;
* Wiener DN 01, 390 W&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
* Power connector : [https://en.wikipedia.org/wiki/IEC_60320] C16 type [https://en.wikipedia.org/wiki/IEC_60320#C15.2FC16_coupler C16]&lt;br /&gt;
* Power cable [https://no.farnell.com/bulgin/px0597/socket-iec-hot-free/dp/1172515?MER=sy-me-pd-mi-acce]&lt;br /&gt;
* Console connector : [[Wikipedia:DB25F|DB25F]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
On the devices&lt;br /&gt;
&lt;br /&gt;
 FLOPPY: 187-3187&lt;br /&gt;
 STREAMER: ND 229-1053 TDC 3640 Series SCSI , [[TDC_3640]] (SerialNo 373663) INCOMING DATE 22-04-88&lt;br /&gt;
 DISK: Micropolis 1375 (S/N:6082010769 P/N:900525-09-BA) 74 MB formatted (https://www.micropolis.com/support/hard-drives/1375)&lt;br /&gt;
&lt;br /&gt;
On the front of the cabinet (behind the front door)&lt;br /&gt;
* printed label above tape streamer / floppy drive&lt;br /&gt;
 LOGNR&lt;br /&gt;
  9021&lt;br /&gt;
* Norsk Data ID LABEL at the bottom&lt;br /&gt;
 CAB./ASSY NO: 1.1&lt;br /&gt;
 FUNCTION: SATELLITE &lt;br /&gt;
 SYSTEM NO: 9800/20922&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
* Some basic cleaning as the system has been standing since the 90&#039;s {{done}}&lt;br /&gt;
* Document all serial and model numbers on devices.{{done}}&lt;br /&gt;
* Image the SCSI disk before attempting a boot. {{done}}  Spins up, and was easy to image using ZuluSCSI (somehow the BlueSCSI2 was unable to identify the drive) &lt;br /&gt;
* Check the power supply condition {{in progress}}&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
=== 2026  ===&lt;br /&gt;
&lt;br /&gt;
: 2025-01-25: Machine arrived. Started with taking some photos and getting access to the SCSI drive for disk imaging.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/libhw.html][Norsk Data library, Hardware]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C4.pdf][Book 2: ND-100 SATELLITE, Assembly Drawings]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C5.pdf][Book 2: ND-100 SATELLITE, Cable Info. Block &amp;amp; Wiring Diagrams]&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual_systems]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=File:Satellite-cards-9800-20922.jpg&amp;diff=7811</id>
		<title>File:Satellite-cards-9800-20922.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=File:Satellite-cards-9800-20922.jpg&amp;diff=7811"/>
		<updated>2026-01-30T13:09:57Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Photo of the Controller cards in the machine&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Photo of the Controller cards in the machine&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{self|cc-by-sa-3.0|author={{Userlink}}}}&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-500_Assembler&amp;diff=7804</id>
		<title>ND-500 Assembler</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-500_Assembler&amp;diff=7804"/>
		<updated>2025-12-02T19:56:31Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Added install procedure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;ND-500 ASSEMBLER&#039;&#039;&#039; is an [[Wikipedia:Assembly_language#Assembler|assembler]] for computers of the [[ND-500]] and [[ND-5000 family|ND-5000]] lines from [[Norsk Data]].&lt;br /&gt;
&lt;br /&gt;
The assembler is a two-pass cross assembler which runs under [[SINTRAN III|SINTRAN]] on the [[ND-100]] CPU, and produces [[ND Relocatable Format|relocatable code]] (NRF files) for the ND-500 CPU. The same assembler version executes on both 32-bit and 48-bit floating point hardware versions of the ND-100 CPU.&lt;br /&gt;
&lt;br /&gt;
The NRF files can be linked with programs written in high level languages, but full stand-alone programs can also be produced in assembly.&lt;br /&gt;
The assembler also outputs a listing file, and a symbol table at the end of the listing. A cross reference table may also be produced.&lt;br /&gt;
It can be used interactively, or alternatively with all parameters (source file, list file, object file) specified on the command line.&lt;br /&gt;
&lt;br /&gt;
The original documentation (1979, and second edition 1980) called the assembler &#039;&#039;NORD-500 ASSEMBLER&#039;&#039;, but the program referred to itself as &#039;&#039;ND-500 ASSEMBLER&#039;&#039; at least as early as from version 2.15. Version 2.5 still used &#039;&#039;NORD-500 ASSEMBLER&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Known versions ==&lt;br /&gt;
(Note that the invocation name can be arbitrarily decided by the system administrator, by dumping it by any chosen name. The 2.15 BPUN file was called ASSEMBLER-500:BPUN though)&lt;br /&gt;
&lt;br /&gt;
 @N500-ASSEMBLER&lt;br /&gt;
 NORD-500 ASSEMBLER 2.5, 19 November 1979&lt;br /&gt;
 $&lt;br /&gt;
 $HELP&lt;br /&gt;
 COMMAND NAME:&lt;br /&gt;
 HELP         &amp;lt;COMMAND NAME&amp;gt;&lt;br /&gt;
 EXIT&lt;br /&gt;
 LINES        &amp;lt;LINES PER PAGE&amp;gt;&lt;br /&gt;
 ASSEMBLE     &amp;lt;SOURCE FILE&amp;gt; &amp;lt;LIST FILE&amp;gt; &amp;lt;OBJECT FILE&amp;gt;&lt;br /&gt;
 LIST         &amp;lt;LIST DIRECIVE&amp;gt;&lt;br /&gt;
 NO-LIST      &amp;lt;LIST DIRECIVE&amp;gt;&lt;br /&gt;
 PRINT-MACRO  &amp;lt;MACRO NAME&amp;gt; &amp;lt;OUTPUT FILE&amp;gt;&lt;br /&gt;
 TABLE-SIZES  &amp;lt;SIZE PARAMETER&amp;gt;&lt;br /&gt;
 $EXIT&lt;br /&gt;
 @&lt;br /&gt;
&lt;br /&gt;
 @ASSEMBLER-500&lt;br /&gt;
 ND-500 ASSEMBLER 2.15, 13 JANUARY 1982.&lt;br /&gt;
 $&lt;br /&gt;
 $HELP&lt;br /&gt;
 COMMAND NAME: &lt;br /&gt;
 HELP         &amp;lt;COMMAND NAME&amp;gt;&lt;br /&gt;
 EXIT&lt;br /&gt;
 PAGE-SIZE    &amp;lt;LINES PER PAGE&amp;gt;&lt;br /&gt;
 ASSEMBLE     &amp;lt;SOURCE FILE&amp;gt; &amp;lt;LIST FILE&amp;gt; &amp;lt;OBJECT FILE&amp;gt;&lt;br /&gt;
 LIST         &amp;lt;LIST DIRECIVE&amp;gt;&lt;br /&gt;
 NO-LIST      &amp;lt;LIST DIRECIVE&amp;gt;&lt;br /&gt;
 PRINT-MACRO  &amp;lt;MACRO NAME&amp;gt; &amp;lt;OUTPUT FILE&amp;gt;&lt;br /&gt;
 TABLE-SIZES  &amp;lt;SIZE PARAMETER&amp;gt;&lt;br /&gt;
 $EXIT&lt;br /&gt;
 @&lt;br /&gt;
(and yes, &#039;DIRECIVE&#039; is spelled incorrectly by the program.)&lt;br /&gt;
&lt;br /&gt;
The versions above are obviously unaware of the &amp;quot;&#039;87 extensions&amp;quot;, i.e. newer instructions introduced with the [[ND-5000 family|ND-5000]].&lt;br /&gt;
&lt;br /&gt;
== Install from floppy ==&lt;br /&gt;
&lt;br /&gt;
  NORD SOFTWARE LIBRARY&lt;br /&gt;
  Name: Assembler for ND-500&lt;br /&gt;
  ND-Number: 10311A&lt;br /&gt;
  Category: P&lt;br /&gt;
  Issued: Date 81.05.04&lt;br /&gt;
  Documentation: &lt;br /&gt;
    NUMBER 60.113.02&lt;br /&gt;
    TITLE: NORD-500 Assembler Reference Manual&lt;br /&gt;
  Purpose: ND-500 Cross-assembler running on ND-100&lt;br /&gt;
  Program: &lt;br /&gt;
    Prog.Numb: 203132A&lt;br /&gt;
    Name: Assembler-500&lt;br /&gt;
    Type containing: BPUN ND-500 Assembler&lt;br /&gt;
&lt;br /&gt;
LOADING/OPERATING PROCEDURE, USE&lt;br /&gt;
====  Non—reentrant load: ==== &lt;br /&gt;
&lt;br /&gt;
  @ENTER-DIRECTORY ND—10311 &amp;lt;Floppy disk name and unit&amp;gt;&lt;br /&gt;
  @PLACE—BINARY (ND-10311:FLOPPY—USER)ASSEMBLER—SOO&lt;br /&gt;
  @DUMP &amp;quot;ASSEMBLER—500—A&amp;quot;,0,l&lt;br /&gt;
  @RELEASE-DIRECTORY ND-10311&lt;br /&gt;
&lt;br /&gt;
==== Reentrant load: ====&lt;br /&gt;
&lt;br /&gt;
  @ENTER-DIRECTORY ND—103ll &amp;lt;Floppy disk name and unit&amp;gt;&lt;br /&gt;
  @COPY-FILE &amp;quot;ASSEMBLER—500-A:BPUN&amp;quot; (ND—10311:FLOPPY—USER)ASSEMBLER—500:BPUN&lt;br /&gt;
  @RELEASE—DIRECTORY ND-10311&lt;br /&gt;
  @DUMP-REENTRANT ASSEMBLER-500 0 1 ASSEMBLER—500&lt;br /&gt;
&lt;br /&gt;
The assembler is dumped with address space 0&amp;lt;45777 on the BPUN file.&lt;br /&gt;
&lt;br /&gt;
== Product number ==&lt;br /&gt;
* [[:Category:ND-10311|ND-10311]]&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
*{{ND-doc|60.113}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Norsk Data software]]&lt;br /&gt;
[[Category:Programming Languages]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7803</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7803"/>
		<updated>2025-11-12T19:34:47Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* ND-100x Emulator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
=== ND-100 Emulator ===&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
==== Core CPU and Instruction Set details I am working on ====&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s working in the ND-100 emulator ====&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s NOT working in the ND-100 emulator ====&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
==== ND-100 Running in the browser ====&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling &#039;&#039;&#039;C# to WebAssembly&#039;&#039;&#039;&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to (https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/) and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Compiling the C based nd100x emulator to WebAssembly was a better solution - see below&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== ND-100x Emulator ===&lt;br /&gt;
&lt;br /&gt;
ND-100/CX Emulator written in C and its based on the &#039;&#039;&#039;nd100em emulator version 0.2.4&#039;&#039;&#039;  https://github.com/tingox/nd100em&lt;br /&gt;
&lt;br /&gt;
* All test programs validate the CPU, Memory Management and Devices.&lt;br /&gt;
* Missing some opcodes around BCD&lt;br /&gt;
* Boots SINTRAN L from SMD in 6-7 seconds on my machine.&lt;br /&gt;
&lt;br /&gt;
This project includes significant enhancements:&lt;br /&gt;
&lt;br /&gt;
* Opcode Improvements&lt;br /&gt;
** Added support for missing opcodes&lt;br /&gt;
** Fixed bugs in several instructions&lt;br /&gt;
* Memory Management&lt;br /&gt;
** Fully re-implemented with support for MMS1 and MMS2&lt;br /&gt;
** Proper TRAP generation for Page Faults and Access Violations&lt;br /&gt;
* IO Subsystem&lt;br /&gt;
** Complete rewrite: now single-threaded and simplified&lt;br /&gt;
** Old IO code has been removed&lt;br /&gt;
* Supported IO Devices&lt;br /&gt;
** Real-Time Clock (20ms tick emulation pending for full SINTRAN compatibility)&lt;br /&gt;
** Console&lt;br /&gt;
** Floppy (PIO and DMA) for 8&amp;quot; and 5.25&amp;quot; formats&lt;br /&gt;
** SMD Hard Disk (75MB; multi-drive support in progress)&lt;br /&gt;
* Planned IO devices&lt;br /&gt;
** Serial ports&lt;br /&gt;
** HDLC&lt;br /&gt;
** SCSI&lt;br /&gt;
** ND500 Bus Interface&lt;br /&gt;
* Codebase Modernization&lt;br /&gt;
* Tested on multiple host systems&lt;br /&gt;
** Ubuntu 22.04 LTS (x64)&lt;br /&gt;
** FreeBSD 14.2 (x64)&lt;br /&gt;
** WebAssembly (in the browser)&lt;br /&gt;
** Risc-V (runs on tiny chips costing ~5 USD)&lt;br /&gt;
** Raspberry PI 3B (probably works on all Raspberry PI models 2-5)&lt;br /&gt;
** Read more here https://github.com/HackerCorpLabs/nd100x/blob/main/docs/SYSTEMS.md&lt;br /&gt;
&lt;br /&gt;
Source code in GitHub: https://github.com/HackerCorpLabs/nd100x&lt;br /&gt;
&lt;br /&gt;
Run the emulator in your browser: https://nd100x.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
    Boots SINTRAN in 1-2 minutes in the browser on my machine&lt;br /&gt;
&lt;br /&gt;
=== I am looking for the following ===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN COMSOS network software (especially Ethernet and TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 MicroCode Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7802</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7802"/>
		<updated>2025-11-12T19:32:55Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Added more info on host systems nd100x works on&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
=== ND-100 Emulator ===&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
==== Core CPU and Instruction Set details I am working on ====&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s working in the ND-100 emulator ====&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s NOT working in the ND-100 emulator ====&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
==== ND-100 Running in the browser ====&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling &#039;&#039;&#039;C# to WebAssembly&#039;&#039;&#039;&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to (https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/) and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Compiling the C based nd100x emulator to WebAssembly was a better solution - see below&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== ND-100x Emulator ===&lt;br /&gt;
&lt;br /&gt;
ND-100/CX Emulator written in C and its based on the &#039;&#039;&#039;nd100em emulator version 0.2.4&#039;&#039;&#039;  https://github.com/tingox/nd100em&lt;br /&gt;
&lt;br /&gt;
* All test programs validate the CPU, Memory Management and Devices.&lt;br /&gt;
* Missing some opcodes around BCD&lt;br /&gt;
* Boots SINTRAN L from SMD in 6-7 seconds on my machine.&lt;br /&gt;
&lt;br /&gt;
This project includes significant enhancements:&lt;br /&gt;
&lt;br /&gt;
* Opcode Improvements&lt;br /&gt;
** Added support for missing opcodes&lt;br /&gt;
** Fixed bugs in several instructions&lt;br /&gt;
* Memory Management&lt;br /&gt;
** Fully re-implemented with support for MMS1 and MMS2&lt;br /&gt;
** Proper TRAP generation for Page Faults and Access Violations&lt;br /&gt;
* IO Subsystem&lt;br /&gt;
** Complete rewrite: now single-threaded and simplified&lt;br /&gt;
** Old IO code has been removed&lt;br /&gt;
* Supported IO Devices&lt;br /&gt;
** Real-Time Clock (20ms tick emulation pending for full SINTRAN compatibility)&lt;br /&gt;
** Console&lt;br /&gt;
** Floppy (PIO and DMA) for 8&amp;quot; and 5.25&amp;quot; formats&lt;br /&gt;
** SMD Hard Disk (75MB; multi-drive support in progress)&lt;br /&gt;
* Codebase Modernization&lt;br /&gt;
* Tested on multiple host systems&lt;br /&gt;
** Ubuntu 22.04 LTS (x64)&lt;br /&gt;
** FreeBSD 14.2 (x64)&lt;br /&gt;
** WebAssembly (in the browser)&lt;br /&gt;
** Risc-V (runs on tiny chips costing ~5 USD)&lt;br /&gt;
** Raspberry PI 3B (probably works on all Raspberry PI models 2-5)&lt;br /&gt;
** Read more here https://github.com/HackerCorpLabs/nd100x/blob/main/docs/SYSTEMS.md&lt;br /&gt;
&lt;br /&gt;
Source code in GitHub: https://github.com/HackerCorpLabs/nd100x&lt;br /&gt;
&lt;br /&gt;
Run the emulator in your browser: https://nd100x.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
    Boots SINTRAN in 1-2 minutes in the browser on my machine&lt;br /&gt;
&lt;br /&gt;
=== I am looking for the following ===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN COMSOS network software (especially Ethernet and TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 MicroCode Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7801</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7801"/>
		<updated>2025-11-12T19:20:03Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* ND-110 MircroCode Emulator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
=== ND-100 Emulator ===&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
==== Core CPU and Instruction Set details I am working on ====&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s working in the ND-100 emulator ====&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s NOT working in the ND-100 emulator ====&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
==== ND-100 Running in the browser ====&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling &#039;&#039;&#039;C# to WebAssembly&#039;&#039;&#039;&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to (https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/) and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Compiling the C based nd100x emulator to WebAssembly was a better solution - see below&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== ND-100x Emulator ===&lt;br /&gt;
&lt;br /&gt;
ND-100/CX Emulator written in C and its based on the &#039;&#039;&#039;nd100em emulator version 0.2.4&#039;&#039;&#039;  https://github.com/tingox/nd100em&lt;br /&gt;
&lt;br /&gt;
* All test programs validate the CPU, Memory Management and Devices.&lt;br /&gt;
* Missing some opcodes around BCD&lt;br /&gt;
* Boots SINTRAN L from SMD in 6-7 seconds on my machine.&lt;br /&gt;
&lt;br /&gt;
This project includes significant enhancements:&lt;br /&gt;
&lt;br /&gt;
* Opcode Improvements&lt;br /&gt;
** Added support for missing opcodes&lt;br /&gt;
** Fixed bugs in several instructions&lt;br /&gt;
* Memory Management&lt;br /&gt;
** Fully re-implemented with support for MMS1 and MMS2&lt;br /&gt;
** Proper TRAP generation for Page Faults and Access Violations&lt;br /&gt;
* IO Subsystem&lt;br /&gt;
** Complete rewrite: now single-threaded and simplified&lt;br /&gt;
** Old IO code has been removed&lt;br /&gt;
* Supported IO Devices&lt;br /&gt;
** Real-Time Clock (20ms tick emulation pending for full SINTRAN compatibility)&lt;br /&gt;
** Console&lt;br /&gt;
** Floppy (PIO and DMA) for 8&amp;quot; and 5.25&amp;quot; formats&lt;br /&gt;
** SMD Hard Disk (75MB; multi-drive support in progress)&lt;br /&gt;
* Codebase Modernization&lt;br /&gt;
&lt;br /&gt;
Source code in GitHub: https://github.com/HackerCorpLabs/nd100x&lt;br /&gt;
&lt;br /&gt;
Run the emulator in your browser: https://nd100x.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
    Boots SINTRAN in 1-2 minutes in the browser on my machine&lt;br /&gt;
&lt;br /&gt;
=== I am looking for the following ===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN COMSOS network software (especially Ethernet and TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 MicroCode Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7800</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7800"/>
		<updated>2025-11-12T19:13:02Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Added information on the nd100x emulator&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
=== ND-100 Emulator ===&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
==== Core CPU and Instruction Set details I am working on ====&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s working in the ND-100 emulator ====&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s NOT working in the ND-100 emulator ====&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
==== ND-100 Running in the browser ====&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling &#039;&#039;&#039;C# to WebAssembly&#039;&#039;&#039;&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to (https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/) and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Compiling the C based nd100x emulator to WebAssembly was a better solution - see below&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== ND-100x Emulator ===&lt;br /&gt;
&lt;br /&gt;
ND-100/CX Emulator written in C and its based on the &#039;&#039;&#039;nd100em emulator version 0.2.4&#039;&#039;&#039;  https://github.com/tingox/nd100em&lt;br /&gt;
&lt;br /&gt;
* All test programs validate the CPU, Memory Management and Devices.&lt;br /&gt;
* Missing some opcodes around BCD&lt;br /&gt;
* Boots SINTRAN L from SMD in 6-7 seconds on my machine.&lt;br /&gt;
&lt;br /&gt;
This project includes significant enhancements:&lt;br /&gt;
&lt;br /&gt;
* Opcode Improvements&lt;br /&gt;
** Added support for missing opcodes&lt;br /&gt;
** Fixed bugs in several instructions&lt;br /&gt;
* Memory Management&lt;br /&gt;
** Fully re-implemented with support for MMS1 and MMS2&lt;br /&gt;
** Proper TRAP generation for Page Faults and Access Violations&lt;br /&gt;
* IO Subsystem&lt;br /&gt;
** Complete rewrite: now single-threaded and simplified&lt;br /&gt;
** Old IO code has been removed&lt;br /&gt;
* Supported IO Devices&lt;br /&gt;
** Real-Time Clock (20ms tick emulation pending for full SINTRAN compatibility)&lt;br /&gt;
** Console&lt;br /&gt;
** Floppy (PIO and DMA) for 8&amp;quot; and 5.25&amp;quot; formats&lt;br /&gt;
** SMD Hard Disk (75MB; multi-drive support in progress)&lt;br /&gt;
* Codebase Modernization&lt;br /&gt;
&lt;br /&gt;
Source code in GitHub: https://github.com/HackerCorpLabs/nd100x&lt;br /&gt;
&lt;br /&gt;
Run the emulator in your browser: https://nd100x.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
    Boots SINTRAN in 1-2 minutes in the browser on my machine&lt;br /&gt;
&lt;br /&gt;
=== I am looking for the following ===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN COMSOS network software (especially Ethernet and TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 MircroCode Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=File:Cpu-revision.png&amp;diff=7799</id>
		<title>File:Cpu-revision.png</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=File:Cpu-revision.png&amp;diff=7799"/>
		<updated>2025-11-12T18:52:04Z</updated>

		<summary type="html">&lt;p&gt;RHansen: added details about why this happened&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Error after installing SINTRAN M and booting&lt;br /&gt;
* Later learned this happens because I was trying to simulate the ND-110 CPU which is not emulated completely (yet..)&lt;br /&gt;
* This problem does not happen when the CPU identifies as ND-100&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7798</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7798"/>
		<updated>2025-11-12T18:47:28Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* ND-110 Emulator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
=== ND-100 Emulator ===&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
==== Core CPU and Instruction Set details I am working on ====&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s working in the ND-100 emulator ====&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s NOT working in the ND-100 emulator ====&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
==== ND-100 Running in the browser ====&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling &#039;&#039;&#039;C# to WebAssembly&#039;&#039;&#039;&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Compiling the C based nd100x emulator to WebAssembly was a better solution - see below&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I am looking for the following ===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN COMSOS network software (especially Ethernet and TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 MircroCode Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7797</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7797"/>
		<updated>2025-11-12T18:46:37Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* Core CPU and Instruction Set details I am working on */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
=== ND-100 Emulator ===&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
==== Core CPU and Instruction Set details I am working on ====&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s working in the ND-100 emulator ====&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
==== What&#039;s NOT working in the ND-100 emulator ====&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
==== ND-100 Running in the browser ====&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling &#039;&#039;&#039;C# to WebAssembly&#039;&#039;&#039;&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Compiling the C based nd100x emulator to WebAssembly was a better solution - see below&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I am looking for the following ===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN COMSOS network software (especially Ethernet and TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7796</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7796"/>
		<updated>2025-11-12T18:45:33Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* ND-100 Emulator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
=== ND-100 Emulator ===&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
== Core CPU and Instruction Set details I am working on ==&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
=== ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling &#039;&#039;&#039;C# to WebAssembly&#039;&#039;&#039;&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Compiling the C based nd100x emulator to WebAssembly was a better solution - see below&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN COMSOS network software (especially Ethernet and TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7795</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7795"/>
		<updated>2025-11-12T18:45:02Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* Core CPU and Instruction Set details I am working on */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
== Core CPU and Instruction Set details I am working on ==&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
=== ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling &#039;&#039;&#039;C# to WebAssembly&#039;&#039;&#039;&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Compiling the C based nd100x emulator to WebAssembly was a better solution - see below&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN COMSOS network software (especially Ethernet and TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7794</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7794"/>
		<updated>2025-11-12T18:43:17Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* What&amp;#039;s NOT working in the ND-100 emulator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== Core CPU and Instruction Set details I am working on ===&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
=== ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling &#039;&#039;&#039;C# to WebAssembly&#039;&#039;&#039;&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Compiling the C based nd100x emulator to WebAssembly was a better solution - see below&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN COMSOS network software (especially Ethernet and TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7793</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7793"/>
		<updated>2025-11-12T18:41:18Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* ND-100 Running in the browser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== Core CPU and Instruction Set details I am working on ===&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN COMSOS network software (especially Ethernet and TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7792</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7792"/>
		<updated>2025-11-12T18:40:57Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* Things I am working on */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== Core CPU and Instruction Set details I am working on ===&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN COMSOS network software (especially Ethernet and TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
===ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling C# to WebAssembly&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7791</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7791"/>
		<updated>2025-11-12T18:39:30Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* What&amp;#039;s working in the ND-100 emulator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== Core CPU and Instruction Set details I am working on ===&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN network software (especially TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
----&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
===ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling C# to WebAssembly&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7790</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7790"/>
		<updated>2025-11-12T18:38:45Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* Things I am working on */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN network software (especially TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
----&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
===ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling C# to WebAssembly&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7789</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7789"/>
		<updated>2025-11-12T18:38:05Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* I am looking for the following */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* COSMOS software: Ethernet drivers, TCP drivers, TELNET, FTP, NFS, X.21, X.25&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interest. And PATCH files!&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
&lt;br /&gt;
=== Core CPU and Instruction Set ===&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN network software (especially TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
----&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
===ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling C# to WebAssembly&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7788</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7788"/>
		<updated>2025-11-12T18:36:18Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* What&amp;#039;s NOT working in the ND-100 emulator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* Bug found!!!! &#039;&#039;&#039;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&#039;&#039;&#039;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
** This bug also fixed &lt;br /&gt;
*** &#039;&#039;&#039;MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interrest. And PATCH files. Did i mention PATCH files?&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
&lt;br /&gt;
=== Core CPU and Instruction Set ===&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN network software (especially TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
----&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
===ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling C# to WebAssembly&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7787</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7787"/>
		<updated>2025-11-12T18:33:27Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Refactored and updated details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* &amp;lt;s&amp;gt;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&amp;lt;/s&amp;gt;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
* MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&lt;br /&gt;
** Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&lt;br /&gt;
** Guessing there is an opcode not working 100% that failed some initialisation.&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interrest. And PATCH files. Did i mention PATCH files?&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
==Things I am working on==&lt;br /&gt;
&lt;br /&gt;
=== Core CPU and Instruction Set ===&lt;br /&gt;
&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since the ND-110 emulator is now functional, I can analyze the missing opcodes and complete their implementation.  &lt;br /&gt;
*** However, these are mostly performance extensions, so full implementation may not be necessary.  &lt;br /&gt;
*** CX (Segment) opcodes are included in this group.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Controllers and Peripherals ===&lt;br /&gt;
&lt;br /&gt;
==== HDLC / MEGALINK ====&lt;br /&gt;
* Goal: Simulate serial communication over TCP to interconnect emulated ND machines via **COSMOS**.  &lt;br /&gt;
* I/O interface implementation is finished.  &lt;br /&gt;
* The **SMC COM5025** HDLC controller is partially functional — refinement continues using the *HDLC test program*.  &lt;br /&gt;
* First working HDLC-over-TCP demo (still with some bugs):  &lt;br /&gt;
  [https://www.youtube.com/watch?v=LKgdKMxFuRM YouTube Demo]&lt;br /&gt;
* &#039;&#039;&#039;Looking for SINTRAN network software (especially TCP/IP).&#039;&#039;&#039;  &lt;br /&gt;
  This software has not been found on any known floppy images.  &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Ethernet ====&lt;br /&gt;
* The **Ethernet II** controller includes:&lt;br /&gt;
** An onboard **Motorola 68000 CPU**  &lt;br /&gt;
** A **LANCE** Ethernet controller  &lt;br /&gt;
* Work in progress to emulate both chips and their shared-memory communication with the ND-100 host.  &lt;br /&gt;
* The controller has **no EPROM** — its firmware is loaded from ND-100 into shared memory, and the 68K CPU is restarted after load.&lt;br /&gt;
* Reverse engineering of captured firmware is ongoing using [https://github.com/NationalSecurityAgency/ghidra Ghidra]&lt;br /&gt;
* Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
----&lt;br /&gt;
==== SCSI Controller ====&lt;br /&gt;
* I/O interface implementation complete.  &lt;br /&gt;
* Fully implemented **NCR 5386** SCSI controller.  &lt;br /&gt;
* Emulated SCSI bus and generic HDD complete.  &lt;br /&gt;
* Collected documentation and had AI help to analyse SINTRAN source code and reference manuals - &lt;br /&gt;
** https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/Devices/SCSI&lt;br /&gt;
* Successfully emulated **Micropolis 1375 (135 MB)** SCSI hard drive:&lt;br /&gt;
** Works well with *DISK-MM*, *SCSI-TV*, and *Filesystem Investigator*.  &lt;br /&gt;
** [https://youtu.be/EqF9FhFZj2g Test video on YouTube]  &lt;br /&gt;
** Uses an IMG file dumped from a real Micropolis 1375 drive (from [[ND-110_Satellite_9883.21238]])  &lt;br /&gt;
* Remaining issue:  &lt;br /&gt;
** SINTRAN boot / “ENTER-DIRECTORY”** for DISC-SCSI-1 fails with &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
* Goal: Enable ND-100 to boot directly from real SCSI-drive images.  &lt;br /&gt;
* IRQ handling has been improved, allowing SINTRAN K to boot successfully from a Micropolis image, though it ends with the message &amp;quot;APPROACHING END OF ACCOUNTING FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&lt;br /&gt;
DIRECTORY NOT ENTERED&lt;br /&gt;
&lt;br /&gt;
BATCH NUMBER =      1&lt;br /&gt;
INPUT FILE ERROR:&lt;br /&gt;
NO MAIN DIRECTORY&lt;br /&gt;
&lt;br /&gt;
20.29.11      2 NOVEMBER   1997&lt;br /&gt;
SINTRAN III - VSX/500 K&lt;br /&gt;
STANDARD CONFIGURATION:    D&lt;br /&gt;
GENERATION (WORK MODE NO.):    500B&lt;br /&gt;
REVISION (PATCH FILE NO.):   10200B&lt;br /&gt;
CPU TYPE:     9883&lt;br /&gt;
CPU NUMBER:  21238&lt;br /&gt;
GENERATED:   12.11.00      8 JUNE   1988&lt;br /&gt;
SINTRAN III RUNNING -&lt;br /&gt;
&lt;br /&gt;
PAGES FOR SWAPPING:   3336B&lt;br /&gt;
&lt;br /&gt;
NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&lt;br /&gt;
--EXIT--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* I try to press ESC to login, but get &amp;quot;NO SCRATCH FILE 20.29.28      2 NOVEMBER   1997&amp;quot; every time.&lt;br /&gt;
* Booting from SMD drive and trying to enter directory&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-dir&lt;br /&gt;
DIRECTORY NAME:&lt;br /&gt;
DEVICE NAME: disc-scsi-1&lt;br /&gt;
DEVICE UNIT: 0&lt;br /&gt;
&lt;br /&gt;
APPROACHING END OF ACCOUNTING FILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* And no drive is entered&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== ND-500 Controller ====&lt;br /&gt;
* Added skeleton implementation for **PCB 3022** ([https://www.ndwiki.org/wiki/3022 link]) — ND-500 interface.  &lt;br /&gt;
* &#039;&#039;&#039;CONFIGURE&#039;&#039;&#039; detects the controller successfully.  &lt;br /&gt;
* I found documentation on this controller in the Reference Manuals for ND-500/ND-5000 and are slowly working on the details.&lt;br /&gt;
* Analysis and documentation using AI - https://github.com/HackerCorpLabs/NDInsight/tree/main/SINTRAN/ND500&lt;br /&gt;
&lt;br /&gt;
===ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling C# to WebAssembly&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7786</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7786"/>
		<updated>2025-11-12T17:51:08Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* Things I am working on */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* &amp;lt;s&amp;gt;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&amp;lt;/s&amp;gt;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
* MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&lt;br /&gt;
** Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&lt;br /&gt;
** Guessing there is an opcode not working 100% that failed some initialisation.&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interrest. And PATCH files. Did i mention PATCH files?&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
===Things I am working on===&lt;br /&gt;
* Finding the bugs that forces me to have workaround for ABSTR and Memory Management (Guessing: opcodes and/or ALU flags)&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since I now have the ND-110 emulator working, I should be able do decode how the missing opcodes work and get them working. But in reality I dont think I need the ND-110 specific opcodes, as they are mostly added for performance reasons.&lt;br /&gt;
*** CX opcodes (Segment)&lt;br /&gt;
&lt;br /&gt;
* Implementing more controllers&lt;br /&gt;
** HDLC/MEGALINK&lt;br /&gt;
*** IO interface is finished. Implementation of the HDLC controller &amp;quot;COM 5025&amp;quot; from SMC is somewhat working. Now I am ironing out the details using the &amp;quot;HDLC test program&amp;quot;&lt;br /&gt;
*** The goal is to have &amp;quot;simulated&amp;quot; serial communication over TCP to be able to communicate with other emulated ND machines using COSMOS.&lt;br /&gt;
*** &#039;&#039;&#039;Looking for network software (especially TCP-IP) for SINTRAN. So far this software is not on any floppy I know about.&lt;br /&gt;
*** First demo of working HDLC over TCP - there are still bugs to fix - https://www.youtube.com/watch?v=LKgdKMxFuRM&lt;br /&gt;
** Ethernet&#039;&#039;&#039;&lt;br /&gt;
*** Ethernet II controller has an onboard 68000 CPU and a LANCE controller. Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
*** Controller has no EPROM, but shared memory with the ND-100 machine. The program on the controller is loaded from ND-100 and the 68K cpu is restarted after code is loaded to RAM.&lt;br /&gt;
** SCSI Controller &lt;br /&gt;
*** IO interface is finished, implementation of the SCSI is complete. The SCSI Chip is an NCR 5386.&lt;br /&gt;
*** Emulated SCSI Bus and &amp;quot;generic&amp;quot; SCSI HDD is complete.&lt;br /&gt;
*** Emulated 135MB SCSI HD &amp;quot;Micropolis 1375 SCSI Drive&amp;quot; works quite good with DISK-MM, SCSI-TV and Filesystem Investigator&lt;br /&gt;
**** Video of me testing can be seen here https://youtu.be/EqF9FhFZj2g&lt;br /&gt;
**** Using a IMG file that is dumped from a real Micropolis 1375 drive!&lt;br /&gt;
***** I believe the image is from this machine [[ND-110_Satellite_9883.21238]]&lt;br /&gt;
*** SINTRAN boot or &amp;quot;ENTER-DIRECTORY&amp;quot; for DISC-SCSI-1 fails, so there are still some details that need to be fixed.&lt;br /&gt;
*** The goal is to have a working SCSI interface so ND-100 can boot directly from images dumped from SCSI drives.&lt;br /&gt;
** ND-500 controller&lt;br /&gt;
*** Added skeleton for PCB 3022 [https://www.ndwiki.org/wiki/3022], the ND-500 interface&lt;br /&gt;
*** CONFIGURE detects the new controller, but I have not implemented any logic inside&lt;br /&gt;
*** &#039;&#039;&#039;Looking for documentation details on this controller as I am unable to find any.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling C# to WebAssembly&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7785</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7785"/>
		<updated>2025-10-28T19:37:01Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* ND-500 Emulator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* &amp;lt;s&amp;gt;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&amp;lt;/s&amp;gt;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
* MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&lt;br /&gt;
** Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&lt;br /&gt;
** Guessing there is an opcode not working 100% that failed some initialisation.&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interrest. And PATCH files. Did i mention PATCH files?&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
===Things I am working on===&lt;br /&gt;
* Finding the bugs that forces me to have workaround for ABSTR and Memory Management (Guessing: opcodes and/or ALU flags)&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since I now have the ND-110 emulator working, I should be able do decode how the missing opcodes work and get them working. But in reality I dont think I need the ND-110 specific opcodes, as they are mostly added for performance reasons.&lt;br /&gt;
*** CX opcodes (Segment)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Implementing more controllers&lt;br /&gt;
** HDLC/MEGALINK&lt;br /&gt;
*** IO interface is finished. Implementation of the HDLC controller &amp;quot;COM 5025&amp;quot; from SMC is somewhat working. Now I am ironing out the details using the &amp;quot;HDLC test program&amp;quot;&lt;br /&gt;
*** The goal is to have &amp;quot;simulated&amp;quot; serial communication over TCP to be able to communicate with other emulated ND machines using COSMOS.&lt;br /&gt;
*** &#039;&#039;&#039;Looking for network software (especially TCP-IP) for SINTRAN. So far this software is not on any floppy I know about.&lt;br /&gt;
** Ethernet&#039;&#039;&#039;&lt;br /&gt;
*** Ethernet II controller has an onboard 68000 CPU and a LANCE controller. Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
*** Controller has no EPROM, but shared memory with the ND-100 machine. The program on the controller is loaded from ND-100 and the 68K cpu is restarted after code is loaded to RAM.&lt;br /&gt;
** SCSI Controller &lt;br /&gt;
*** IO interface is finished, implementation of the SCSI is complete. The SCSI Chip is an NCR 5386.&lt;br /&gt;
*** Emulated SCSI Bus and &amp;quot;generic&amp;quot; SCSI HDD is complete.&lt;br /&gt;
*** Emulated 135MB SCSI HD &amp;quot;Micropolis 1375 SCSI Drive&amp;quot; works quite good with DISK-MM, SCSI-TV and Filesystem Investigator&lt;br /&gt;
**** Video of me testing can be seen here https://youtu.be/EqF9FhFZj2g&lt;br /&gt;
**** Using a IMG file that is dumped from a real Micropolis 1375 drive!&lt;br /&gt;
***** I believe the image is from this machine [[ND-110_Satellite_9883.21238]]&lt;br /&gt;
*** SINTRAN boot or &amp;quot;ENTER-DIRECTORY&amp;quot; for DISC-SCSI-1 fails, so there are still some details that need to be fixed.&lt;br /&gt;
*** The goal is to have a working SCSI interface so ND-100 can boot directly from images dumped from SCSI drives.&lt;br /&gt;
** ND-500 controller&lt;br /&gt;
*** Added skeleton for PCB 3022 [https://www.ndwiki.org/wiki/3022], the ND-500 interface&lt;br /&gt;
*** CONFIGURE detects the new controller, but I have not implemented any logic inside&lt;br /&gt;
*** &#039;&#039;&#039;Looking for documentation details on this controller as I am unable to find any.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling C# to WebAssembly&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7784</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7784"/>
		<updated>2025-10-28T19:02:47Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Added info on ND-500 emu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* &amp;lt;s&amp;gt;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&amp;lt;/s&amp;gt;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
* MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&lt;br /&gt;
** Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&lt;br /&gt;
** Guessing there is an opcode not working 100% that failed some initialisation.&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interrest. And PATCH files. Did i mention PATCH files?&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
===Things I am working on===&lt;br /&gt;
* Finding the bugs that forces me to have workaround for ABSTR and Memory Management (Guessing: opcodes and/or ALU flags)&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since I now have the ND-110 emulator working, I should be able do decode how the missing opcodes work and get them working. But in reality I dont think I need the ND-110 specific opcodes, as they are mostly added for performance reasons.&lt;br /&gt;
*** CX opcodes (Segment)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ND-500 Emulator ==&lt;br /&gt;
I am in the process of implementing a ND-500 cpu emulator that has these features&lt;br /&gt;
* ND-500 instruction set (fetch-decode-execute)&lt;br /&gt;
* MMU (complete MMU with Domains and Segments)&lt;br /&gt;
* Dissassembler and debugger&lt;br /&gt;
* Loader with aout, PSEG/DSEG and the more modern DOM format&lt;br /&gt;
&lt;br /&gt;
I also have the PCC-500 C compiler with&lt;br /&gt;
* C compiler&lt;br /&gt;
* Assembler (ported from NDIX-C)&lt;br /&gt;
* Linker (ported from NDIX-C)&lt;br /&gt;
* Generates a.out format and can be converted to PSEG and DSEG files.&lt;br /&gt;
&lt;br /&gt;
I hope I will be able to integrate this into ND-100 with emulating the bus unterfaces&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	    ND-100 Side                   ND-500 Side&lt;br /&gt;
		├─ 3022 Bus Interface     ←→  5015 Control Board&lt;br /&gt;
		├─ Multiport Memory (5MPM)←→  Direct Memory Access&lt;br /&gt;
		├─ SINTRAN Monitor        ←→  ND-500 Microcode&lt;br /&gt;
		└─ Message Buffers        ←→  Process Descriptors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be tested here: https://nd500x.hackercorp.no/&lt;br /&gt;
(At the moment all instructions are NOP)&lt;br /&gt;
&lt;br /&gt;
* Implementing more controllers&lt;br /&gt;
** HDLC/MEGALINK&lt;br /&gt;
*** IO interface is finished. Implementation of the HDLC controller &amp;quot;COM 5025&amp;quot; from SMC is somewhat working. Now I am ironing out the details using the &amp;quot;HDLC test program&amp;quot;&lt;br /&gt;
*** The goal is to have &amp;quot;simulated&amp;quot; serial communication over TCP to be able to communicate with other emulated ND machines using COSMOS.&lt;br /&gt;
*** &#039;&#039;&#039;Looking for network software (especially TCP-IP) for SINTRAN. So far this software is not on any floppy I know about.&lt;br /&gt;
** Ethernet&#039;&#039;&#039;&lt;br /&gt;
*** Ethernet II controller has an onboard 68000 CPU and a LANCE controller. Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
*** Controller has no EPROM, but shared memory with the ND-100 machine. The program on the controller is loaded from ND-100 and the 68K cpu is restarted after code is loaded to RAM.&lt;br /&gt;
** SCSI Controller &lt;br /&gt;
*** IO interface is finished, implementation of the SCSI is complete. The SCSI Chip is an NCR 5386.&lt;br /&gt;
*** Emulated SCSI Bus and &amp;quot;generic&amp;quot; SCSI HDD is complete.&lt;br /&gt;
*** Emulated 135MB SCSI HD &amp;quot;Micropolis 1375 SCSI Drive&amp;quot; works quite good with DISK-MM, SCSI-TV and Filesystem Investigator&lt;br /&gt;
**** Video of me testing can be seen here https://youtu.be/EqF9FhFZj2g&lt;br /&gt;
**** Using a IMG file that is dumped from a real Micropolis 1375 drive!&lt;br /&gt;
***** I believe the image is from this machine [[ND-110_Satellite_9883.21238]]&lt;br /&gt;
*** SINTRAN boot or &amp;quot;ENTER-DIRECTORY&amp;quot; for DISC-SCSI-1 fails, so there are still some details that need to be fixed.&lt;br /&gt;
*** The goal is to have a working SCSI interface so ND-100 can boot directly from images dumped from SCSI drives.&lt;br /&gt;
** ND-500 controller&lt;br /&gt;
*** Added skeleton for PCB 3022 [https://www.ndwiki.org/wiki/3022], the ND-500 interface&lt;br /&gt;
*** CONFIGURE detects the new controller, but I have not implemented any logic inside&lt;br /&gt;
*** &#039;&#039;&#039;Looking for documentation details on this controller as I am unable to find any.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling C# to WebAssembly&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=BPUN_File_Format&amp;diff=7764</id>
		<title>BPUN File Format</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=BPUN_File_Format&amp;diff=7764"/>
		<updated>2025-09-11T07:58:56Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Added C code to show how to load BPUN into memory&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The :BPUN file format ((Bootable Punched Tape)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Preamble || Start || Boot ||! || Address || Count || Data || Checksum || Action&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;b&amp;gt;Preamble&amp;lt;/b&amp;gt; || May contain any characters except &amp;quot;!&amp;quot; (41 octal, 0x21). Its original use was a bootstrap loader for stand-alone CPUs. This is no longer used. But various tools still generate the bootstrap loader, including the BPUN command in [[NRL]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;b&amp;gt;Start&amp;lt;/b&amp;gt; || A field containing an ASCII encoded octal start address for the program. It is terminated by a carriage return (15 octal) and optionally a line feed (12 octal).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;b&amp;gt;Boot&amp;lt;/b&amp;gt;|| A field containing an ASCII encoded octal value giving the start address of the bootstrap loader (see Pre-amble) and terminated by the &amp;quot;!&amp;quot; character (i.e. the next field, below). No longer used, but still created by tools that generate the bootstrap loader.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;b&amp;gt;&amp;quot;!&amp;quot;&amp;lt;/b&amp;gt; || Exclamation mark: Start-of-data signal.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;b&amp;gt;Address&amp;lt;/b&amp;gt; || Address where the binary load of the data will start. Two-byte word in big endian format.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;b&amp;gt;Count&amp;lt;/b&amp;gt; || Number of 16-bit words in the following Data field. Two-byte word in big endian format.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;b&amp;gt;Data&amp;lt;/b&amp;gt; || A field containing &amp;lt;Count&amp;gt; 16-bit words. Big endian format.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;b&amp;gt;Checksum&amp;lt;/b&amp;gt; || Arithmetic sum of all the words in the Data field, modulo 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt;. Two-byte word in big endian format.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;b&amp;gt;Action&amp;lt;/b&amp;gt; || Two-byte field. If the action field is zero, execution will start at the address specified in the Start field. If not zero, the CPU will remain in OPCOM mode. The &amp;lt;b&amp;gt;P&amp;lt;/b&amp;gt; register will contain the value read from the Start field.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Everything before the &amp;quot;!&amp;quot; mark is in 7-bit ASCII with even parity, except that there may be a string of binary zeroes before the actual preamble starts. The preamble itself (the bootstrap) is code encoded as octal values of the instructions, with carriage return and line feed between each instruction. CR/LF also use parity, so CR is encoded as 0x8D.&lt;br /&gt;
&lt;br /&gt;
The preamble (boostrap loader) starts with a command that instructs the hardware loader about where in memory to load the following code. The command is an address followed by the &amp;quot;/&amp;quot; character.&lt;br /&gt;
Example of preamble below (hexdump with parity stripped off in the ascii section at the right):&lt;br /&gt;
 000000: 8D 0A B1 B7 B7 B4 30 30 AF B1 B4 36 B1 30 B1 8D    ..177400/146101.&lt;br /&gt;
 000010: 0A B1 33 B4 30 B2 B1 8D 0A B1 B4 36 B1 35 B7 8D    .134021..146157.&lt;br /&gt;
 000020: 0A B1 33 B4 30 B1 B7 8D 0A B1 B4 36 B1 35 36 8D    .134017..146156.&lt;br /&gt;
 000030: 0A B1 33 B4 30 B1 35 8D 0A 30 30 36 30 30 30 8D    .134015..006000.&lt;br /&gt;
 000040: 0A B1 B4 36 30 35 B1 8D 0A B1 B4 36 B2 30 36 8D    .146051..146206.&lt;br /&gt;
 000050: 0A B1 B4 B2 30 30 36 8D 0A B1 B2 B4 30 30 33 8D    .142006..124003.&lt;br /&gt;
 000060: 0A B1 B7 33 B4 30 B1 8D 0A B1 B2 B4 33 B7 B1 8D    .173401..124371.&lt;br /&gt;
 000070: 0A B1 33 B4 30 30 35 8D 0A B1 B4 36 36 B1 35 8D    .134005..146615.&lt;br /&gt;
 000080: 0A B1 33 B1 30 B2 33 8D 0A B1 35 B1 30 B7 B7 8D    .131023..151077.&lt;br /&gt;
 000090: 0A 30 36 35 35 30 B4 8D 0A B1 B4 36 B1 B4 35 8D    .065504..146145.&lt;br /&gt;
 0000a0: 0A 30 30 B4 30 B1 36 8D 0A B1 33 B4 30 30 36 8D    .004016..134006.&lt;br /&gt;
 0000b0: 0A B1 35 35 35 B7 30 8D 0A 30 30 B4 33 B7 33 8D    .155570..004373.&lt;br /&gt;
 0000c0: 0A B1 33 B4 30 30 33 8D 0A 30 36 30 33 B7 B1 8D    .134003..060371.&lt;br /&gt;
 0000d0: 0A B1 B2 35 30 B1 30 8D 0A B1 B7 30 B4 30 B4 8D    .125010..170404.&lt;br /&gt;
 0000e0: 0A B1 36 B4 B4 30 33 8D 0A B1 36 B4 B4 30 B2 8D    .164403..164402.&lt;br /&gt;
 0000f0: 0A B1 B7 35 B2 33 35 8D 0A B1 B2 B4 33 B7 36 8D    .175235..124376.&lt;br /&gt;
 000100: 0A B1 36 B4 B4 30 30 8D 0A B1 B4 36 B1 B4 B2 8D    .164400..146142.&lt;br /&gt;
 000110: 0A 30 30 30 30 30 30 8D 0A B1 B2 35 30 30 B1 8D    .000000..125001.&lt;br /&gt;
 000120: 0A 30 30 30 30 30 30 8D 0A B1 B7 B7 B4 30 30 21    .000000..177400!&lt;br /&gt;
&lt;br /&gt;
The last line shows the &#039;Start&#039; and &#039;Boot&#039; fields, with the value 000000 for the start address of the program, and 177400 as the address of the bootstrap. It matches the bootstrap load address seen in the first line. A &#039;!&#039; character indicates that the program part follows, and that part is in binary unlike the section before the exclamation mark. The actual bootstrap loader is position independent code, so the bootstrap load address may vary between :BPUN files (the 177400 value in the example above, i.e. first and last numbers), but the actual bootstrap code appears to always be the same. The load address of the bootstrap code will be after the end of the actual program code which the bootstrap is loading, so not to overwrite the bootstrap code itself. But :BPUN files do not always follow this rule, and can thus not be loaded by this mechanism. For these files the preamble section is a vestigal non-functioning section. But tools like [[DITAP]] will produce :BPUN files from :PROG files with correctly adjusted boostrap load address. The above hexdump is from such a file, PED-ENG-J:BPUN as generated bu DITAP from PED-ENG-J:PROG. PED loads from 0 to 177377, and the boostrap loader is placed at 177400 by the hardware loader. PED can therefore be safely loaded without overwriting the bootstrap loader itself.&lt;br /&gt;
&lt;br /&gt;
Some :BPUN files have no preamble, they start with just the &#039;Start&#039; and &#039;Boot&#039; fields, followed by the exclamation mark and the rest.&lt;br /&gt;
These files obviously can&#039;t run stand-alone.&lt;br /&gt;
&lt;br /&gt;
The bootstrap loader used for :BPUN files is as follows. &#039;ORG&#039; would be 177400 for the example in the hexdump above.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%&lt;br /&gt;
% Paper Tape Reader Bootstrap Loader&lt;br /&gt;
% The paper tape is a character (byte) storage.&lt;br /&gt;
% &#039;ORG&#039; is a 16-bit word, in octal.&lt;br /&gt;
% The rest of the bootstrap loader is also in octal,&lt;br /&gt;
% all written as ASCII with parity, each octal value&lt;br /&gt;
% terminated with CR or CR/LF.&lt;br /&gt;
% Loading of the Boostrap Loader stops when an exclamation&lt;br /&gt;
% mark (!) is found on the tape.&lt;br /&gt;
%&lt;br /&gt;
       ORG/		% Tell hardware loader where to write the following.&lt;br /&gt;
ORG,   COPY 0 DD	% 0 =: D % Init checksum register&lt;br /&gt;
% Read Address word:&lt;br /&gt;
       JPL * 21		% Call GetW&lt;br /&gt;
       COPY SA DX	% A =: X % Store address in X&lt;br /&gt;
% Read Count word:&lt;br /&gt;
       JPL * 17		% Call GetW&lt;br /&gt;
       COPY SA DT	% A =: T % Store count in T&lt;br /&gt;
&lt;br /&gt;
% Read Data (program), word by word, decrement T until T is zero:&lt;br /&gt;
next,  JPL * 15		% Call GetW&lt;br /&gt;
       STA ,X 0		% A =: (X) % Store word in (X) (i.e. at address)&lt;br /&gt;
       RADD SA DD	% A+D =: D % Add up checksum&lt;br /&gt;
       RADD CM1 0 DT	% T-1 =: T % Decrement T&lt;br /&gt;
       SKP IF DT UEQ 0	% IF T != 0 goto cont % Done?&lt;br /&gt;
       JMP * 3		% Otherwise goto done (i.e. T has become zero)&lt;br /&gt;
cont,  AAX 1		% X+1 =: X % Increment X (which points to address)&lt;br /&gt;
       JMP * - 7	% goto next&lt;br /&gt;
&lt;br /&gt;
% Read Checksum word:&lt;br /&gt;
done,  JPL * 5		% Call GetW&lt;br /&gt;
       RSUB SD DA	% A-D =: D % Check if A = D           % Checksum OK?&lt;br /&gt;
       JAZ * 23		% Goto Run		              % Yes&lt;br /&gt;
       WAIT 77		% Stop,[1]  show 77 in operator panel % No&lt;br /&gt;
&lt;br /&gt;
tmp,			% Holding space for upper byte of a word&lt;br /&gt;
&lt;br /&gt;
% Function to get a 16-bit word from paper tape reader:&lt;br /&gt;
GetW,  COPY SL DA	% L =: A&lt;br /&gt;
       STA * 16		% A =: L-reg   % Store L in memory&lt;br /&gt;
       JPL * 6		% Call rdbyt   % Get higher byte&lt;br /&gt;
       SHA ROT - 10	% A &amp;lt;&amp;lt; 8       % (shift 8 bits arithmetic left)&lt;br /&gt;
       STA * - 5	% A =: tmp     % Store upper byte of word&lt;br /&gt;
       JPL * 3		% Call rdbyt   % Get lower byte&lt;br /&gt;
       ADD * - 7	% A + tmp =: A % A now contains 16-bit word&lt;br /&gt;
       JMP I * 10	% Goto (L-reg) % Return&lt;br /&gt;
&lt;br /&gt;
rdbyt, SAA 4		% 4 =: A       % Set bit 2: function &amp;quot;Activate&amp;quot;&lt;br /&gt;
       IOX 403		% Write control register paper tape reader (activate)&lt;br /&gt;
wait,  IOX 402		% STATUS =: A  % Read status register&lt;br /&gt;
       BSKP ONE 30 DA	% If bit 3 goto getbyt % Test bit 3: Data ready&lt;br /&gt;
       JMP * - 2	% goto wait    % Data not available yet&lt;br /&gt;
getbyt,IOX 400		% DATA =: A    % Read data register (8 bits for PTR[2])&lt;br /&gt;
       COPY SL DP	% L =: P       % Return (COPY SL DP: Also called EXIT)&lt;br /&gt;
&lt;br /&gt;
L-reg,	    		% L-reg temporary storage&lt;br /&gt;
&lt;br /&gt;
Run    JMP I * 1	% Goto (start)&lt;br /&gt;
start  000000		% Start address (hardcoded, may be != 000000)&lt;br /&gt;
btldr  177400		% Boot loader address (hardcoded)&lt;br /&gt;
&lt;br /&gt;
[1] WAIT stops CPU if interrupt system is off&lt;br /&gt;
[2] PTR: Paper Tape Reader&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that the bootstrap loader completely ignores the Action field. If the Checksum is correct then the loaded program will start.&lt;br /&gt;
&lt;br /&gt;
== Reading BPUN Files into Memory Using C ==&lt;br /&gt;
&lt;br /&gt;
The following C example demonstrates how to read BPUN files into memory.  &lt;br /&gt;
It is from the ND-100 emulator implementation in (https://github.com/open-simh/simh/blob/master/ND100/nd100_sys.c)&lt;br /&gt;
&lt;br /&gt;
=== Code Example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2023 Anders Magnusson.&lt;br /&gt;
 *&lt;br /&gt;
 * Bootable (BPUN) tape format.&lt;br /&gt;
 * Disks can use it as well with a max of 64 words data.  In this case &lt;br /&gt;
 * the bytes are stored in the LSB of the words from beginning of disk.&lt;br /&gt;
 * 1kw block should be read at address 0 in memory.&lt;br /&gt;
 *&lt;br /&gt;
 * A bootable tape consists of nine segments, named A-I.&lt;br /&gt;
 *&lt;br /&gt;
 * A - Any chars not including &#039;!&#039;&lt;br /&gt;
 * B - (optional) octal number terminated by CR (LF ignored).&lt;br /&gt;
 * C - (optional) octal number terminated by &#039;!&#039;.&lt;br /&gt;
 * D - A &#039;!&#039; delimeter&lt;br /&gt;
 * E - Block start address (in memory), two byte, MSB first.&lt;br /&gt;
 * F - Word count in G section, two byte, MSB first.&lt;br /&gt;
 * G - Words as counted in F section.&lt;br /&gt;
 * H - Checksum of G section, one word.&lt;br /&gt;
 * I - Action code.  If non-zero, start at address in B, otherwise nothing.&lt;br /&gt;
 */&lt;br /&gt;
t_stat&lt;br /&gt;
sim_load(FILE *f, CONST char *buf, CONST char *fnam, t_bool flag)&lt;br /&gt;
{&lt;br /&gt;
        int B, C, E, F, H, I;&lt;br /&gt;
        int w, i, rv;&lt;br /&gt;
        uint16 s;&lt;br /&gt;
&lt;br /&gt;
        rv = SCPE_OK;&lt;br /&gt;
        if (sim_switches &amp;amp; SWMASK(&#039;D&#039;)) {       /* read file from disk */&lt;br /&gt;
                mlp = 0;&lt;br /&gt;
                for (i = 0; i &amp;lt; 1024; i++) {&lt;br /&gt;
                        /* images have MSB first */&lt;br /&gt;
                        s = (getc(f) &amp;amp; 0377) &amp;lt;&amp;lt; 8;&lt;br /&gt;
                        s |= getc(f) &amp;amp; 0377;&lt;br /&gt;
                        pwrmem(i, s, PM_CPU);&lt;br /&gt;
                }&lt;br /&gt;
                f = NULL;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /* read B/C section */&lt;br /&gt;
        for (B = C = 0;(w = gb(f) &amp;amp; 0177) != &#039;!&#039;; ) {&lt;br /&gt;
                switch (w) {&lt;br /&gt;
                case &#039;\n&#039;:&lt;br /&gt;
                        continue;&lt;br /&gt;
                case &#039;\r&#039;:&lt;br /&gt;
                        B = C, C = 0;&lt;br /&gt;
                        break;&lt;br /&gt;
                case &#039;0&#039;: case &#039;1&#039;: case &#039;2&#039;: case &#039;3&#039;: &lt;br /&gt;
                case &#039;4&#039;: case &#039;5&#039;: case &#039;6&#039;: case &#039;7&#039;: &lt;br /&gt;
                        C = (C &amp;lt;&amp;lt; 3) | (w - &#039;0&#039;);&lt;br /&gt;
                        break;&lt;br /&gt;
                default:&lt;br /&gt;
                        B = C = 0;&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
        printf(&amp;quot;B address    %06o\n&amp;quot;, B);&lt;br /&gt;
        printf(&amp;quot;C address    %06o\n&amp;quot;, C);&lt;br /&gt;
        regP = B;&lt;br /&gt;
        printf(&amp;quot;Load address %06o\n&amp;quot;, E = gw(f));&lt;br /&gt;
        printf(&amp;quot;Word count   %06o\n&amp;quot;, F = gw(f));&lt;br /&gt;
        for (i = s = 0; i &amp;lt; F; i++) {&lt;br /&gt;
                pwrmem(E+i, gw(f), PM_CPU);&lt;br /&gt;
                s += prdmem(E+i, PM_CPU);&lt;br /&gt;
        }&lt;br /&gt;
        printf(&amp;quot;Checksum     %06o\n&amp;quot;, H = gw(f));&lt;br /&gt;
        if (H != s)&lt;br /&gt;
                rv = STOP_CKSUM;&lt;br /&gt;
        printf(&amp;quot;Execute      %06o\n&amp;quot;, I = gw(f));&lt;br /&gt;
        printf(&amp;quot;Words read   %06o\n&amp;quot;, i);&lt;br /&gt;
        ald = 0300;     /* from tape reader */&lt;br /&gt;
        return rv;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-110/CX_Compact_3392.16505&amp;diff=7763</id>
		<title>ND-110/CX Compact 3392.16505</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-110/CX_Compact_3392.16505&amp;diff=7763"/>
		<updated>2025-09-01T09:24:38Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Added photo of the cards&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[ND-110/C Compact Series|ND-110 Compact]] model 12 machine in [[User:RHansen|RHansen]]&#039;s collection, &lt;br /&gt;
&lt;br /&gt;
Could not find any serial number information inside the chassis, but the machine has been marked with &amp;quot;C3&amp;quot; and on the data i managed to recover from the hard-drive I could see that XMSG was configured for C3 to point at ND-16505. I assume this is the serial number.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Hardware in the machine is described in this section.&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
[[File:3392_16505_Cards.jpg|200px|thumb|right|Cards]] &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ PCB Description Print&lt;br /&gt;
|-&lt;br /&gt;
! SLOT !! ID !! PCB !! Description !! Print and ECO&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 324113 || PCB 3042 || 1 MB Memory || Print A ECO D&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 324534 || PCB 3094 || ETHERNET IF. II || Print C&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 324011 || PCB 3111 || 8 TERM IF W/FIFO || Print C&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 324012 || PCB 3112 || 8&amp;quot; + 5 1/4 FLOPPY || Print B&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 322671 || PCB 3041 || N-100 ST 506 DISK CONTR. || Print E ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO G&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 322615 || PCB 3015 || ND100 HDLC W/A.LO || Print &amp;lt;unknown&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 322615 || PCB 3015 || ND100 HDLC W/A.LO. || Print S ECO V&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 324137 || PCB 3090 || ND110 - CPU&amp;amp;MM 32B || Print K ECO R&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 322672 || PCB 3042 || N100 2MB RAM || Print A ECO D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
* Floppy drive : 1.2 Mbytes, 5.25 inch, ND 187-0418 NEC FD-1155C &lt;br /&gt;
* Tape streamer : Tandberg TDC 3309 (TDC 3300 Series), ND 106270, ND 150-001442&lt;br /&gt;
* Hard drive : Micropolis 1325, ST506, Formatted as 74MB. Controller name in SINTRAN is &amp;quot;DISC-74-1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The machine also has a Micropolis 1325 ST506 74MB drive. Sadly there is some issues with reading data from it.&lt;br /&gt;
* Reading head 0-3 works on all tracks&lt;br /&gt;
* Reading head 4-7 fails on all tracks with error &amp;quot;Address mismatch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After buying an MFM emulator from [https://www.pdp8online.com/mfm/] and getting help and support, including firmware extension to identify and read ND disk format I have been able to partially dump the contents of the disk.&lt;br /&gt;
The challenge is that the heads 4-7 is reading the &amp;quot;next&amp;quot; track because they are misaligned - and I need to add some HW to try to make the disk adjust how it reads it heads - as described here [http://www.pdp8online.com/mfm/head_servo/]&lt;br /&gt;
&lt;br /&gt;
Using the MFM emulator I am now able to boot the ND-100/CX machine from an disk image I have prepared in my emulator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Connecting from my PC to the Console ==&lt;br /&gt;
&lt;br /&gt;
To connect to the ND machine I use a serial-to-current loop adapter i bought from Mouser. [https://no.mouser.com/ProductDetail/Advantech/BB-232CL9R?qs=zW32dvEIR3vYFmSSVfM7ig%3D%3D&amp;amp;countryCode=NO&amp;amp;currencyCode=NOK]&lt;br /&gt;
&lt;br /&gt;
Later I have learned that you can connect to the console using RS-232, but I dont have the pin/signal pinout description so I havent tested.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* Find COSMOS software to install ETHERNET drivers and TCP to get the machine connected to my local network.&lt;br /&gt;
* Getting serial ports (and cables) to work so I can test to connect via RS-232 as a none-console user.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
=== 2023 ===&lt;br /&gt;
&lt;br /&gt;
: 2023-4-29: Picket up the machine in Halden. It’s a heavy machine weighing around 85 kg.&lt;br /&gt;
: 2023-4-30: Machine does not boot from hard-drive, unsure why. I dont have a working TDV terminal to connect to the console.&lt;br /&gt;
: 2023-6-1: Building a Current-loop adapter, but it doesnt work against the ND[https://oldfellowstoys.net/current-loop-to-rs-232-converter/]&lt;br /&gt;
: 2023-6-20: Got current-loop adapter from Mouser and now I have access to console (Advantech 232CL9R) from my PC&lt;br /&gt;
: 2023-7-5: Discovered that the MFM HDD drive has physical head-alignment problems. Head 0-3 is aligned correct, head 4-7 reads &amp;quot;next track&amp;quot;.&lt;br /&gt;
: 2023-10-9: Ordered MFM emulator from David Gesswein [https://www.pdp8online.com/mfm/]&lt;br /&gt;
: 2023-10-13: David extended the firmware to support ND disk format (format nd100_3041). Can read parts of the HDD but a lot of bad data. &lt;br /&gt;
: 2023-10-15: Using RetroCore to create complete bootable SINTRAN 74MB image and transferred to MFM emulator able to boot SINTRAN from emulated MFM drive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2024 ===&lt;br /&gt;
: 2024-2-05: Managed to recover 98.7% of the data from the drive using special firmware combined with an DAC (Digital to Analog) controller to force drive heads to align with the tracks/cylinders.&lt;br /&gt;
&lt;br /&gt;
=== 2025 ===&lt;br /&gt;
: 2025-31-8 : Reconfigured the HDLC controller to use lower speed, can now communicate with my HDLC gw device.&lt;br /&gt;
: 2025-31-8 : Tried to format the MFM drive, but it just hangs. Need a low-level formatter in hope of getting the MFM drive to be usable.&lt;br /&gt;
: 2025-31-8 : Tested using Gotek/FlashFloppy as &amp;quot;emulated floppy drive&amp;quot; to get access to ND images. Had partially success, some images work - some dont. Unsure why. NOTE: Must use external 5V power supply, as the ND power supply was higher then 5V and earlier tries fried my USB memorysticks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TEST PROGRAMS ==&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT FROM TEST PROGRAM &#039;CONFIGURE&#039; ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;gt; RUN&lt;br /&gt;
                  H A R D W A R E   C O N F I G U R A T I O N&lt;br /&gt;
                 =============================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CPU type.............: ND-110&lt;br /&gt;
Floating format......: 32 bits&lt;br /&gt;
Memory management....: MMS-2 included on CPU board&lt;br /&gt;
Cache................: Yes&lt;br /&gt;
ALD register content.: 20500B&lt;br /&gt;
Print number.........: 3090&lt;br /&gt;
Print release version: K&lt;br /&gt;
Microprogram version.: 14B&lt;br /&gt;
ECO level............: R&lt;br /&gt;
Total memory size....: 3.512 Mbytes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                            FIRST   LAST       I D E N T  C O D E S       LOG.&lt;br /&gt;
HARDWARE DEVICE NAME        DEVNO  DEVNO    LEV10  LEV11  LEV12  LEV13    DEVNO&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
REAL TIME CLOCK          1     10     13                             1&lt;br /&gt;
TERMINAL INTERFACE       1    300    307   == Identcode not checked ==        1&lt;br /&gt;
TERMINAL INTERFACE       5    340    347       44            44              44&lt;br /&gt;
TERMINAL INTERFACE       6    350    357       45            45              45&lt;br /&gt;
TERMINAL INTERFACE       7    360    367       46            46              46&lt;br /&gt;
TERMINAL INTERFACE       8    370    377       47            47              47&lt;br /&gt;
ST506  5&amp;quot; DISC CONTR.    1    500    507               1                   1224&lt;br /&gt;
TERMINAL INTERFACE       9   1300   1307       50            50              60&lt;br /&gt;
TERMINAL INTERFACE      10   1310   1317       51            51              61&lt;br /&gt;
TERMINAL INTERFACE      11   1320   1327       52            52              62&lt;br /&gt;
TERMINAL INTERFACE      12   1330   1337       53            53              63&lt;br /&gt;
FLOPPY &amp;amp; STREAMER 5 &amp;amp; 8  1   1560   1567              21                   1145&lt;br /&gt;
HDLC REMOTE LOAD         1   1604   1607&lt;br /&gt;
HDLC REMOTE LOAD         2   1610   1613&lt;br /&gt;
HDLC / MEGALINK          1   1640   1657                    150    150     1360&lt;br /&gt;
HDLC / MEGALINK          2   1660   1677                    151    151     1362&lt;br /&gt;
HDLC / MEGALINK          3   1700   1717                    152    152     1364&lt;br /&gt;
HDLC / MEGALINK          4   1720   1737                    153    153     1366&lt;br /&gt;
HDLC / MEGALINK          5   1740   1757                    154    154     1370&lt;br /&gt;
ECCR                       100115 100115&lt;br /&gt;
ETHERNET CONTR.          1 140360 140363                 140034            2240&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   I N T E R R U P T    P R I O R I T Y&lt;br /&gt;
  ======================================&lt;br /&gt;
&lt;br /&gt;
LEVEL   IDENT   HARDWARE DEVICE NAME&lt;br /&gt;
------------------------------------------&lt;br /&gt;
   13       1   REAL TIME CLOCK          1&lt;br /&gt;
   13     151   HDLC / MEGALINK          2&lt;br /&gt;
   13     152   HDLC / MEGALINK          3&lt;br /&gt;
   13     150   HDLC / MEGALINK          1&lt;br /&gt;
   13     153   HDLC / MEGALINK          4&lt;br /&gt;
   13     154   HDLC / MEGALINK          5&lt;br /&gt;
   12     151   HDLC / MEGALINK          2&lt;br /&gt;
   12     152   HDLC / MEGALINK          3&lt;br /&gt;
   12     150   HDLC / MEGALINK          1&lt;br /&gt;
   12     153   HDLC / MEGALINK          4&lt;br /&gt;
   12      44   TERMINAL INTERFACE       5&lt;br /&gt;
   12      45   TERMINAL INTERFACE       6&lt;br /&gt;
   12      46   TERMINAL INTERFACE       7&lt;br /&gt;
   12      47   TERMINAL INTERFACE       8&lt;br /&gt;
   12      50   TERMINAL INTERFACE       9&lt;br /&gt;
   12      51   TERMINAL INTERFACE      10&lt;br /&gt;
   12      52   TERMINAL INTERFACE      11&lt;br /&gt;
   12      53   TERMINAL INTERFACE      12&lt;br /&gt;
   12  140034   ETHERNET CONTR.          1&lt;br /&gt;
   12     154   HDLC / MEGALINK          5&lt;br /&gt;
   11       1   ST506  5&amp;quot; DISC CONTR.    1&lt;br /&gt;
   11      21   FLOPPY &amp;amp; STREAMER 5 &amp;amp; 8  1&lt;br /&gt;
   10      44   TERMINAL INTERFACE       5&lt;br /&gt;
   10      45   TERMINAL INTERFACE       6&lt;br /&gt;
   10      46   TERMINAL INTERFACE       7&lt;br /&gt;
   10      47   TERMINAL INTERFACE       8&lt;br /&gt;
   10      50   TERMINAL INTERFACE       9&lt;br /&gt;
   10      51   TERMINAL INTERFACE      10&lt;br /&gt;
   10      52   TERMINAL INTERFACE      11&lt;br /&gt;
   10      53   TERMINAL INTERFACE      12&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== END OF INVESTIGATION ===&lt;br /&gt;
===  NO ERRORS DETECTED  ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                              M E M O R Y   M A P&lt;br /&gt;
                            =======================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
!=============!=======!=======!=======!=======!=======!=======!=======!=======!&lt;br /&gt;
!   Bank no   !   0   !   1   !   2   !   3   !   4   !   5   !   6   !   7   !&lt;br /&gt;
!=============!=======!=======!=======!=======!=======!=======!=======!=======!&lt;br /&gt;
! 000B / 000D ! Mpm 5 ! Mpm 5 ! Mpm 5 ! Mpm 5 ! Mpm 5 ! Mpm 5 ! Mpm 5 ! Mpm 5 !&lt;br /&gt;
!-------------!-------!-------!-------!-------!-------!-------!-------!-------!&lt;br /&gt;
! 010B / 008D ! Local ! Local ! Local ! Local ! Local ! Local ! Local ! Local !&lt;br /&gt;
!-------------!-------!-------!-------!-------!-------!-------!-------!-------!&lt;br /&gt;
! 020B / 016D ! Local ! Local ! Local ! Local ! Local ! Local ! Local ! Local !&lt;br /&gt;
!-------------!-------!-------!-------!-------!-------!-------!-------!-------!&lt;br /&gt;
! 030B / 024D ! Ether ! Ether ! Ether ! Ether !       !       !       !       !&lt;br /&gt;
!-------------!-------!-------!-------!-------!-------!-------!-------!-------!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Local memory size....:  2.000 Mbytes&lt;br /&gt;
Ether memory size....:  0.512 Mbytes&lt;br /&gt;
Mpm 5 memory size....:  1.000 Mbytes&lt;br /&gt;
------------------------------------&lt;br /&gt;
Total memory size....:  3.512 Mbytes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== REFERENCES ==&lt;br /&gt;
https://www.ndwiki.org/wiki/ND-1xx_Compact_family&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=File:3392_16505_Cards.jpg&amp;diff=7762</id>
		<title>File:3392 16505 Cards.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=File:3392_16505_Cards.jpg&amp;diff=7762"/>
		<updated>2025-09-01T09:23:28Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Photo of ND-110/CX Compact 3392.16505 cards&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Photo of ND-110/CX Compact 3392.16505 cards&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{self|cc-by-sa-3.0|author={{Userlink}}}}&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-100_Satellite_14.16796&amp;diff=7761</id>
		<title>ND-100 Satellite 14.16796</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-100_Satellite_14.16796&amp;diff=7761"/>
		<updated>2025-09-01T09:15:39Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[ND-100 Satellite Series|ND-100 Satellite]] model 14 machine in [[User:RHansen|RHansen]]&#039;s collection, &lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Hardware in the machine is described in this section.&lt;br /&gt;
&lt;br /&gt;
[[File:Satellite-cards-14-16796.jpg|200px|thumb|right|PCB Cards in the Satellite]]&lt;br /&gt;
&lt;br /&gt;
Even if its an ND-100 Satellite, it seems it uses the same chassis as the ND-110 Satellite.&lt;br /&gt;
In this case its the Model 14 chassis.&lt;br /&gt;
&lt;br /&gt;
A sales document with more details for the ND-110 Satellite can be found here http://norsk-data.com/library/libsales/ND-SID019-A1-NO.pdf&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Hardware Components &lt;br /&gt;
|-&lt;br /&gt;
! Slot!! Part Number !! PCB Number !! Description !! Print Version !! ECO&lt;br /&gt;
|-&lt;br /&gt;
| 8 TI || 322613 || PCB [[3013]] || 8 TERM IF || Print L || &lt;br /&gt;
|-&lt;br /&gt;
| HDLC &lt;br /&gt;
|-&lt;br /&gt;
| FL+STR || 324012 || PCB [[3112]] || 8&amp;quot; + 5 1/4 FLOPPY || Print B || ECO J&lt;br /&gt;
|-&lt;br /&gt;
| ST506 || 322671 || PCB [[3041]] || N-100 ST 506 DISK CONTR. || Print E || ECO ?&lt;br /&gt;
|-&lt;br /&gt;
| DRAM || 322672 || PCB [[3042]] || ND100 2MBY RAM || Print B || ECO C&lt;br /&gt;
|-&lt;br /&gt;
| MMS || 324107 || PCB [[3104]] || MEM-MAN II EX. Cach || Print E || ECO N&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 322663 || PCB [[3033]] || ND100 CPU || Print ? || ECO V (48Bits CX)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Switch settings ===&lt;br /&gt;
CPU [[3033]] ALD=13 (Mass boot from 500) Console Speed =7 (9600bps)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
* Floppy drive : 5 1/4&amp;quot; (potentially 1.2MB)&lt;br /&gt;
* Tape streamer : Tandberg TDC 3309&lt;br /&gt;
* Hard drive : MICROPOLIS 1325 (74 MB) - Unable to read drive/bad sectors. Head stuck, but could get ut unstuck by opening the drive and using a chop-stick like described here [https://www.pdp8online.com/rd53/rd53.shtml]&lt;br /&gt;
&lt;br /&gt;
Mounted on Disc-board 1824B&lt;br /&gt;
&lt;br /&gt;
=== Power Supply ===&lt;br /&gt;
* Wiener DN 01, 390 W&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
* Power connector : [https://en.wikipedia.org/wiki/IEC_60320] C16 type [https://en.wikipedia.org/wiki/IEC_60320#C15.2FC16_coupler C16]&lt;br /&gt;
* Power cable [https://no.farnell.com/bulgin/px0597/socket-iec-hot-free/dp/1172515?MER=sy-me-pd-mi-acce]&lt;br /&gt;
* Console connector : [[Wikipedia:DB25F|DB25F]]&lt;br /&gt;
&lt;br /&gt;
== Labels ==&lt;br /&gt;
&lt;br /&gt;
On the devices&lt;br /&gt;
&lt;br /&gt;
 FLOPPY: ND 187-3464&lt;br /&gt;
 STREAMER: ND 150-001021 TDC 3300 Series, [[TDC_3309]] (partno ? 326112) (serialno ? 564323)&lt;br /&gt;
 DISK: Micropolis 1325 (S/N:6082010769 P/N:900525-09-BA) 74 MB formatted (https://www.micropolis.com/support/hard-drives/1325)&lt;br /&gt;
&lt;br /&gt;
On the front of the cabinet (behind the front door)&lt;br /&gt;
* printed label above tape streamer / floppy drive&lt;br /&gt;
 LOGNR&lt;br /&gt;
 1064&lt;br /&gt;
* Norsk Data ID LABEL at the bottom&lt;br /&gt;
 CAB./ASSY NO: 1.1&lt;br /&gt;
 FUNCTION: SATELLITE 14&lt;br /&gt;
 SYSTEM NO: 16796&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
* Some basic cleaning as the system has been standing since the 90&#039;s {{done}}&lt;br /&gt;
* Document all serial and model numbers on devices.{{done}}&lt;br /&gt;
* Image the MFM disk before attempting a boot. {{failed}} Drive unreadable.&lt;br /&gt;
** Heads was stuck, had to &amp;quot;unstuck&amp;quot; them using a chopstick ref https://www.pdp8online.com/rd53/rd53.shtml&lt;br /&gt;
** Using MFM_READ tool and the MFM emulator I tried to dump the disk, but was unsuccessful due to &amp;quot;Bad sectors&amp;quot; on (almost) all cylinders&lt;br /&gt;
** Tested using ND program DISK-MM (DISK Media Maintenance - Version: C03 - 1990-06-11) &lt;br /&gt;
*** Connected the drive to another ND machine (ND-110 Compact) to run MFM test programs&lt;br /&gt;
*** Reported &amp;quot;NOT ON CYLINDER&amp;quot; when the heads was stuck, but after it changed to &amp;quot;Address mismatch&amp;quot; - sadly no data can be retrieved at this point&lt;br /&gt;
*** Doing seek-test shows that the heads move freely across all cylinders. Can see that because the disk is opened, and I can visually inspect the head movements.&lt;br /&gt;
* Check the power supply condition {{in progress}}&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
=== 2025  ===&lt;br /&gt;
&lt;br /&gt;
: 2025-08-30: Machine will suddenly no longer start up. Seems there is some issues with power supply or keylock, same issue as I had and fixed n 2024-10-03. But thus time I am unable to get power back.&lt;br /&gt;
&lt;br /&gt;
=== 2024  ===&lt;br /&gt;
: 2024-10-03: Trying to identify signals from the HDLC output connector using a scope to find clock signal, but was rather unsuccessful.. maybe I am not expected to see clean digital clock signals - all I could find was somewhat analog. I really need to find some description for where where TX +/- and send clock +/- is supposed to be on the connectors.&lt;br /&gt;
: 2024-10-03: Tried to get ASYNC terminals to work. Unable to find any way to do loopback test with valid results. I might need to re-configure to RS-232 as it may be Current-Loop. Maybe card is defect?&lt;br /&gt;
: 2024-10-03: Booted SINTRAN from the MFM HDD emulator. Managed to get MegaLink card to work with XMSG subsystem, but I first had to reconfigure the device address so it became MegaLink #1 (was #5 in the other machine)&lt;br /&gt;
: 2024-10-03: There was one free slot in the machine, marked HDLC. Moved over a MegaLink card from my other machine, and now I could boot from floppy. Ran test programs and things seeem ok. Still some strange results in CONFIGURE first time I run it.&lt;br /&gt;
: 2024-10-03: Tried to boot from floppy, but system just hung. Seemed like INTERRUPT or IDENT signals somehow got lost.&lt;br /&gt;
: 2024-10-03: Opened the keylock and managed to get power to the system. Inserted back all the cards, one by one, and no smoke signals. Got console access.&lt;br /&gt;
: 2024-08-18: Tried to image the MFM HDD, but failed - disk unreadable&lt;br /&gt;
: 2024-08-18: Started going through the system, documenting it and basic cleaning in preparation for getting it up.&lt;br /&gt;
: 2024-08-17: System donated to me from Håvard Sten&lt;br /&gt;
&lt;br /&gt;
== TEST PROGRAMS ==&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT FROM TEST PROGRAM &#039;CONFIGURE&#039; ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  CONFIGURATION - Version: D05 - 1988-11-08&lt;br /&gt;
&amp;gt; RUN&lt;br /&gt;
 &lt;br /&gt;
                  H A R D W A R E   C O N F I G U R A T I O N&lt;br /&gt;
                 =============================================&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
CPU type.............: ND-100/CX upgraded for 16 PITs&lt;br /&gt;
Floating format......: 48 bits&lt;br /&gt;
Memory management....: MMS-2&lt;br /&gt;
Cache................: Manually disabled&lt;br /&gt;
ALD register content.: 20500B&lt;br /&gt;
Total memory size....: 2.000 Mbytes&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
                            FIRST   LAST       I D E N T  C O D E S       LOG.&lt;br /&gt;
HARDWARE DEVICE NAME        DEVNO  DEVNO    LEV10  LEV11  LEV12  LEV13    DEVNO&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
REAL TIME CLOCK          1     10     13                             1  &lt;br /&gt;
TERMINAL INTERFACE       1    300    307   == Identcode not checked ==        1&lt;br /&gt;
TERMINAL INTERFACE       5    340    347       44            44              44&lt;br /&gt;
TERMINAL INTERFACE       6    350    357       45            45              45&lt;br /&gt;
TERMINAL INTERFACE       7    360    367       46            46              46&lt;br /&gt;
TERMINAL INTERFACE       8    370    377       47            47              47&lt;br /&gt;
ST506  5&amp;quot; DISC CONTR.    1    500    507               1                   1224&lt;br /&gt;
TERMINAL INTERFACE       9   1300   1307       50            50              60&lt;br /&gt;
TERMINAL INTERFACE      10   1310   1317       51            51              61&lt;br /&gt;
TERMINAL INTERFACE      11   1320   1327       52            52              62&lt;br /&gt;
TERMINAL INTERFACE      12   1330   1337       53            53              63&lt;br /&gt;
FLOPPY &amp;amp; STREAMER 5 &amp;amp; 8  1   1560   1567              21                   1145&lt;br /&gt;
HDLC REMOTE LOAD         1   1604   1607                                &lt;br /&gt;
HDLC / MEGALINK          5   1740   1757                    154    154     1370&lt;br /&gt;
ECCR                       100115 100115                                &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
   I N T E R R U P T    P R I O R I T Y&lt;br /&gt;
  ======================================&lt;br /&gt;
 &lt;br /&gt;
LEVEL   IDENT   HARDWARE DEVICE NAME&lt;br /&gt;
------------------------------------------&lt;br /&gt;
   13       1   REAL TIME CLOCK          1&lt;br /&gt;
   13     154   HDLC / MEGALINK          5&lt;br /&gt;
   12     154   HDLC / MEGALINK          5&lt;br /&gt;
   12      44   TERMINAL INTERFACE       5&lt;br /&gt;
   12      45   TERMINAL INTERFACE       6&lt;br /&gt;
   12      46   TERMINAL INTERFACE       7&lt;br /&gt;
   12      47   TERMINAL INTERFACE       8&lt;br /&gt;
   12      50   TERMINAL INTERFACE       9&lt;br /&gt;
   12      51   TERMINAL INTERFACE      10&lt;br /&gt;
   12      52   TERMINAL INTERFACE      11&lt;br /&gt;
   12      53   TERMINAL INTERFACE      12&lt;br /&gt;
   11       1   ST506  5&amp;quot; DISC CONTR.    1&lt;br /&gt;
   11      21   FLOPPY &amp;amp; STREAMER 5 &amp;amp; 8  1&lt;br /&gt;
   10      44   TERMINAL INTERFACE       5&lt;br /&gt;
   10      45   TERMINAL INTERFACE       6&lt;br /&gt;
   10      46   TERMINAL INTERFACE       7&lt;br /&gt;
   10      47   TERMINAL INTERFACE       8&lt;br /&gt;
   10      50   TERMINAL INTERFACE       9&lt;br /&gt;
   10      51   TERMINAL INTERFACE      10&lt;br /&gt;
   10      52   TERMINAL INTERFACE      11&lt;br /&gt;
   10      53   TERMINAL INTERFACE      12&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
=== END OF INVESTIGATION ===&lt;br /&gt;
===  NO ERRORS DETECTED  ===&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT FROM TEST PROGRAM &#039;INSTRUCTION&#039; ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    INSTRUCTION - Version: C03 - 1988-03-04&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
CPU type.............: ND-100/CX upgraded for 16 PITs&lt;br /&gt;
Floating format......: 48 bits&lt;br /&gt;
Memory management....: MMS-2&lt;br /&gt;
Cache................: Manually disabled&lt;br /&gt;
ALD register content.: 20500B&lt;br /&gt;
Cpu cycle............: Fast&lt;br /&gt;
 &lt;br /&gt;
TPE&amp;gt;run&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Running Tests on Level 1  ===&lt;br /&gt;
=== Argument instructions                   === End of test ===&lt;br /&gt;
=== Memory reference instructions           === End of test ===&lt;br /&gt;
=== Sequencing instructions                 === End of test ===&lt;br /&gt;
=== Register instructions                   === End of test ===&lt;br /&gt;
=== Bit instructions                        === End of test ===&lt;br /&gt;
=== Shift instructions                      === End of test ===&lt;br /&gt;
=== 48 bits floating instructions           === End of test ===&lt;br /&gt;
=== Privileged instructions                 === End of test ===&lt;br /&gt;
=== Byte instructions                       === End of test ===&lt;br /&gt;
=== Physical memory instructions            === End of test ===&lt;br /&gt;
=== Binary coded decimal instructions       === End of test ===&lt;br /&gt;
=== Cx instructions                         === End of test ===&lt;br /&gt;
=== Stack instructions                      === End of test ===&lt;br /&gt;
=== Segment instructions                    === End of test ===&lt;br /&gt;
=== Internal interrupts                     === End of test ===&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT FROM TEST PROGRAM &#039;PAGING&#039; ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
PAGING - Version: C02 - 1988-03-01&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
CPU type.............: ND-100/CX upgraded for 16 PITs&lt;br /&gt;
Floating format......: 48 bits&lt;br /&gt;
Memory management....: MMS-2&lt;br /&gt;
Cache................: Manually disabled&lt;br /&gt;
ALD register content.: 20500B&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Correct ECO level for running SINTRAN-III VSX/K&lt;br /&gt;
&lt;br /&gt;
TPE&amp;gt;run&lt;br /&gt;
Test number(s) (1 to 11 dec): All-tests&lt;br /&gt;
&lt;br /&gt;
Run mode: Single pass. Abort after 10 errors.&lt;br /&gt;
Test started. Time: 1979.01.01 20:27:29&lt;br /&gt;
&lt;br /&gt;
   1. PAGETABLE AREA as MEMORY (Address and data bits)  - End of test -&lt;br /&gt;
   2. PAGING CONTROL REGISTERS on all levels            - End of test -&lt;br /&gt;
   3. PGU/WIP bits for all PITS and ENTRIES             - End of test -&lt;br /&gt;
   4. ALTERNATIVE PIT usage on all levels               - End of test -&lt;br /&gt;
   5. RING VIOLATION interrupt on all levels            - End of test -&lt;br /&gt;
   6. PAGE FAULT interrupt                              - End of test -&lt;br /&gt;
   7. READ PROTECT VIOLATION interrupt                  - End of test -&lt;br /&gt;
   8. WRITE PROTECT VIOLATION interrupt                 - End of test -&lt;br /&gt;
   9. FETCH PROTECT VIOLATION interrupt                 - End of test -&lt;br /&gt;
  10. PRIVILEGED INSTRUCTION interrupt                  - End of test -&lt;br /&gt;
  11. PHYSICAL ADDRESS generation                       - End of test -&lt;br /&gt;
&lt;br /&gt;
Test finished. Time: 1979.01.01 20:35:26&lt;br /&gt;
&lt;br /&gt;
(Note: first time it was run it hang at #4)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT FROM TEST PROGRAM &#039;CONFIGURATION&#039; AFTER HDLC Controller was added ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
(Only listing changes)&lt;br /&gt;
&lt;br /&gt;
                            FIRST   LAST       I D E N T  C O D E S       LOG.&lt;br /&gt;
HARDWARE DEVICE NAME        DEVNO  DEVNO    LEV10  LEV11  LEV12  LEV13    DEVNO&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
HDLC REMOTE LOAD         1   1604   1607&lt;br /&gt;
HDLC / MEGALINK          1   1640   1657                    150    150     1360&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   I N T E R R U P T    P R I O R I T Y&lt;br /&gt;
  ======================================&lt;br /&gt;
&lt;br /&gt;
LEVEL   IDENT   HARDWARE DEVICE NAME&lt;br /&gt;
------------------------------------------&lt;br /&gt;
   13     150   HDLC / MEGALINK          1&lt;br /&gt;
   12     150   HDLC / MEGALINK          1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Original settings on Megalink card&lt;br /&gt;
* TH1=6 &amp;lt;= Baud rate 9.6 kbps&lt;br /&gt;
* TH2=1 &amp;lt;= Autoload 1 - device address 1604-1607 (octal) &amp;lt;= Logical device no  1370&lt;br /&gt;
* TH3=4 &amp;lt;= megalink #5 - device address 1740-1757 (octal) - ident code 154 (octal)&lt;br /&gt;
* SW 26G &amp;lt;= 110011 = Special 983 kbps, normal operation  (6:on, 5:on, 4:off, 3:off, 2:on, 1:x - special 983 kbps, normal operation)&lt;br /&gt;
* SW 13A &amp;lt;= 1000 = 4:x, 3:x, 2:off, 1:on - normal operation, BUSY enabled&lt;br /&gt;
&lt;br /&gt;
Changed settings&lt;br /&gt;
TH3=0 &amp;lt;= Megalink #1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT FROM TEST PROGRAM &#039;MEMORY&#039; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    MEMORY - Version: D04 - 1988-02-01&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Total memory size....: 2.000 Mbytes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TPE&amp;gt;run&lt;br /&gt;
&lt;br /&gt;
AREA TESTED: 0.12-15.15&lt;br /&gt;
READ TEST ON  PROGRAM  PART    === END OF TEST ===&lt;br /&gt;
ADDRESSES  IN  ADDRESSES       === END OF TEST ===&lt;br /&gt;
WRITE/READ TEST (7 PATTERNS)   === END OF TEST ===&lt;br /&gt;
RAPIDLY CHANGING ADDRESS BITS  === END OF TEST ===&lt;br /&gt;
PARITY  ERROR  DETECTION       === END OF TEST ===&lt;br /&gt;
WALK TEST (34 PATTERNS)        === END OF TEST ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OTHER TEST PROGRAMS ===&lt;br /&gt;
&lt;br /&gt;
* HDLC-MEGALIN-D00 (HDLC-MEGALINK - Version: D00 - 1986-10-30)&lt;br /&gt;
  Validated both PIO and DMA successfully.&lt;br /&gt;
&lt;br /&gt;
* TERMINAL-ASY-F01 (TERMINAL-ASYNC - Version: F01 - 1987-09-01)&lt;br /&gt;
  Unable to find any way to do loopback test. I might need to re-configure to RS-232 as it may be Current-Loop&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/libhw.html][Norsk Data library, Hardware]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C4.pdf][Book 2: ND-100 SATELLITE, Assembly Drawings]&lt;br /&gt;
&lt;br /&gt;
[http://norsk-data.com/library/libhw/ND-B2C5.pdf][Book 2: ND-100 SATELLITE, Cable Info. Block &amp;amp; Wiring Diagrams]&lt;br /&gt;
&lt;br /&gt;
[[Category:Individual_systems]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7760</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7760"/>
		<updated>2025-09-01T09:10:09Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* ND-110 Compact - moved info to its own page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* &amp;lt;s&amp;gt;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&amp;lt;/s&amp;gt;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
* MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&lt;br /&gt;
** Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&lt;br /&gt;
** Guessing there is an opcode not working 100% that failed some initialisation.&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interrest. And PATCH files. Did i mention PATCH files?&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
===Things I am working on===&lt;br /&gt;
* Finding the bugs that forces me to have workaround for ABSTR and Memory Management (Guessing: opcodes and/or ALU flags)&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since I now have the ND-110 emulator working, I should be able do decode how the missing opcodes work and get them working. But in reality I dont think I need the ND-110 specific opcodes, as they are mostly added for performance reasons.&lt;br /&gt;
*** CX opcodes (Segment)&lt;br /&gt;
&lt;br /&gt;
* Implementing more controllers&lt;br /&gt;
** HDLC/MEGALINK&lt;br /&gt;
*** IO interface is finished. Implementation of the HDLC controller &amp;quot;COM 5025&amp;quot; from SMC is somewhat working. Now I am ironing out the details using the &amp;quot;HDLC test program&amp;quot;&lt;br /&gt;
*** The goal is to have &amp;quot;simulated&amp;quot; serial communication over TCP to be able to communicate with other emulated ND machines using COSMOS.&lt;br /&gt;
*** &#039;&#039;&#039;Looking for network software (especially TCP-IP) for SINTRAN. So far this software is not on any floppy I know about.&lt;br /&gt;
** Ethernet&#039;&#039;&#039;&lt;br /&gt;
*** Ethernet II controller has an onboard 68000 CPU and a LANCE controller. Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
*** Controller has no EPROM, but shared memory with the ND-100 machine. The program on the controller is loaded from ND-100 and the 68K cpu is restarted after code is loaded to RAM.&lt;br /&gt;
** SCSI Controller &lt;br /&gt;
*** IO interface is finished, implementation of the SCSI is complete. The SCSI Chip is an NCR 5386.&lt;br /&gt;
*** Emulated SCSI Bus and &amp;quot;generic&amp;quot; SCSI HDD is complete.&lt;br /&gt;
*** Emulated 135MB SCSI HD &amp;quot;Micropolis 1375 SCSI Drive&amp;quot; works quite good with DISK-MM, SCSI-TV and Filesystem Investigator&lt;br /&gt;
**** Video of me testing can be seen here https://youtu.be/EqF9FhFZj2g&lt;br /&gt;
**** Using a IMG file that is dumped from a real Micropolis 1375 drive!&lt;br /&gt;
***** I believe the image is from this machine [[ND-110_Satellite_9883.21238]]&lt;br /&gt;
*** SINTRAN boot or &amp;quot;ENTER-DIRECTORY&amp;quot; for DISC-SCSI-1 fails, so there are still some details that need to be fixed.&lt;br /&gt;
*** The goal is to have a working SCSI interface so ND-100 can boot directly from images dumped from SCSI drives.&lt;br /&gt;
** ND-500 controller&lt;br /&gt;
*** Added skeleton for PCB 3022 [https://www.ndwiki.org/wiki/3022], the ND-500 interface&lt;br /&gt;
*** CONFIGURE detects the new controller, but I have not implemented any logic inside&lt;br /&gt;
*** &#039;&#039;&#039;Looking for documentation details on this controller as I am unable to find any.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling C# to WebAssembly&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact&lt;br /&gt;
[https://www.ndwiki.org/wiki/ND-110/CX_Compact_3392.16505]&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-110/CX_Compact_3392.16505&amp;diff=7759</id>
		<title>ND-110/CX Compact 3392.16505</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-110/CX_Compact_3392.16505&amp;diff=7759"/>
		<updated>2025-09-01T09:08:06Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Added machine to its own page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[ND-110/C Compact Series|ND-110 Compact] model 12 machine in [[User:RHansen|RHansen]]&#039;s collection, &lt;br /&gt;
&lt;br /&gt;
Could not find any serial number information inside the chassis, but the machine has been marked with &amp;quot;C3&amp;quot; and on the data i managed to recover from the hard-drive I could see that XMSG was configured for C3 to point at ND-16505. I assume this is the serial number.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Hardware in the machine is described in this section.&lt;br /&gt;
&lt;br /&gt;
=== Cards ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ PCB Description Print&lt;br /&gt;
|-&lt;br /&gt;
! SLOT !! ID !! PCB !! Description !! Print and ECO&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 324113 || PCB 3042 || 1 MB Memory || Print A ECO D&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 324534 || PCB 3094 || ETHERNET IF. II || Print C&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 324011 || PCB 3111 || 8 TERM IF W/FIFO || Print C&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 324012 || PCB 3112 || 8&amp;quot; + 5 1/4 FLOPPY || Print B&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 322671 || PCB 3041 || N-100 ST 506 DISK CONTR. || Print E ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO G&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 322615 || PCB 3015 || ND100 HDLC W/A.LO || Print &amp;lt;unknown&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 322615 || PCB 3015 || ND100 HDLC W/A.LO. || Print S ECO V&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 324137 || PCB 3090 || ND110 - CPU&amp;amp;MM 32B || Print K ECO R&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 322672 || PCB 3042 || N100 2MB RAM || Print A ECO D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
* Floppy drive : 1.2 Mbytes, 5.25 inch, ND 187-0418 NEC FD-1155C &lt;br /&gt;
* Tape streamer : Tandberg TDC 3309 (TDC 3300 Series), ND 106270, ND 150-001442&lt;br /&gt;
* Hard drive : Micropolis 1325, ST506, Formatted as 74MB. Controller name in SINTRAN is &amp;quot;DISC-74-1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The machine also has a Micropolis 1325 ST506 74MB drive. Sadly there is some issues with reading data from it.&lt;br /&gt;
* Reading head 0-3 works on all tracks&lt;br /&gt;
* Reading head 4-7 fails on all tracks with error &amp;quot;Address mismatch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After buying an MFM emulator from [https://www.pdp8online.com/mfm/] and getting help and support, including firmware extension to identify and read ND disk format I have been able to partially dump the contents of the disk.&lt;br /&gt;
The challenge is that the heads 4-7 is reading the &amp;quot;next&amp;quot; track because they are misaligned - and I need to add some HW to try to make the disk adjust how it reads it heads - as described here [http://www.pdp8online.com/mfm/head_servo/]&lt;br /&gt;
&lt;br /&gt;
Using the MFM emulator I am now able to boot the ND-100/CX machine from an disk image I have prepared in my emulator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Connecting from my PC to the Console ==&lt;br /&gt;
&lt;br /&gt;
To connect to the ND machine I use a serial-to-current loop adapter i bought from Mouser. [https://no.mouser.com/ProductDetail/Advantech/BB-232CL9R?qs=zW32dvEIR3vYFmSSVfM7ig%3D%3D&amp;amp;countryCode=NO&amp;amp;currencyCode=NOK]&lt;br /&gt;
&lt;br /&gt;
Later I have learned that you can connect to the console using RS-232, but I dont have the pin/signal pinout description so I havent tested.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* Find COSMOS software to install ETHERNET drivers and TCP to get the machine connected to my local network.&lt;br /&gt;
* Getting serial ports (and cables) to work so I can test to connect via RS-232 as a none-console user.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
=== 2023 ===&lt;br /&gt;
&lt;br /&gt;
: 2023-4-29: Picket up the machine in Halden. It’s a heavy machine weighing around 85 kg.&lt;br /&gt;
: 2023-4-30: Machine does not boot from hard-drive, unsure why. I dont have a working TDV terminal to connect to the console.&lt;br /&gt;
: 2023-6-1: Building a Current-loop adapter, but it doesnt work against the ND[https://oldfellowstoys.net/current-loop-to-rs-232-converter/]&lt;br /&gt;
: 2023-6-20: Got current-loop adapter from Mouser and now I have access to console (Advantech 232CL9R) from my PC&lt;br /&gt;
: 2023-7-5: Discovered that the MFM HDD drive has physical head-alignment problems. Head 0-3 is aligned correct, head 4-7 reads &amp;quot;next track&amp;quot;.&lt;br /&gt;
: 2023-10-9: Ordered MFM emulator from David Gesswein [https://www.pdp8online.com/mfm/]&lt;br /&gt;
: 2023-10-13: David extended the firmware to support ND disk format (format nd100_3041). Can read parts of the HDD but a lot of bad data. &lt;br /&gt;
: 2023-10-15: Using RetroCore to create complete bootable SINTRAN 74MB image and transferred to MFM emulator able to boot SINTRAN from emulated MFM drive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2024 ===&lt;br /&gt;
: 2024-2-05: Managed to recover 98.7% of the data from the drive using special firmware combined with an DAC (Digital to Analog) controller to force drive heads to align with the tracks/cylinders.&lt;br /&gt;
&lt;br /&gt;
=== 2025 ===&lt;br /&gt;
: 2025-31-8 : Reconfigured the HDLC controller to use lower speed, can now communicate with my HDLC gw device.&lt;br /&gt;
: 2025-31-8 : Tried to format the MFM drive, but it just hangs. Need a low-level formatter in hope of getting the MFM drive to be usable.&lt;br /&gt;
: 2025-31-8 : Tested using Gotek/FlashFloppy as &amp;quot;emulated floppy drive&amp;quot; to get access to ND images. Had partially success, some images work - some dont. Unsure why. NOTE: Must use external 5V power supply, as the ND power supply was higher then 5V and earlier tries fried my USB memorysticks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TEST PROGRAMS ==&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT FROM TEST PROGRAM &#039;CONFIGURE&#039; ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;gt; RUN&lt;br /&gt;
                  H A R D W A R E   C O N F I G U R A T I O N&lt;br /&gt;
                 =============================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CPU type.............: ND-110&lt;br /&gt;
Floating format......: 32 bits&lt;br /&gt;
Memory management....: MMS-2 included on CPU board&lt;br /&gt;
Cache................: Yes&lt;br /&gt;
ALD register content.: 20500B&lt;br /&gt;
Print number.........: 3090&lt;br /&gt;
Print release version: K&lt;br /&gt;
Microprogram version.: 14B&lt;br /&gt;
ECO level............: R&lt;br /&gt;
Total memory size....: 3.512 Mbytes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                            FIRST   LAST       I D E N T  C O D E S       LOG.&lt;br /&gt;
HARDWARE DEVICE NAME        DEVNO  DEVNO    LEV10  LEV11  LEV12  LEV13    DEVNO&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
REAL TIME CLOCK          1     10     13                             1&lt;br /&gt;
TERMINAL INTERFACE       1    300    307   == Identcode not checked ==        1&lt;br /&gt;
TERMINAL INTERFACE       5    340    347       44            44              44&lt;br /&gt;
TERMINAL INTERFACE       6    350    357       45            45              45&lt;br /&gt;
TERMINAL INTERFACE       7    360    367       46            46              46&lt;br /&gt;
TERMINAL INTERFACE       8    370    377       47            47              47&lt;br /&gt;
ST506  5&amp;quot; DISC CONTR.    1    500    507               1                   1224&lt;br /&gt;
TERMINAL INTERFACE       9   1300   1307       50            50              60&lt;br /&gt;
TERMINAL INTERFACE      10   1310   1317       51            51              61&lt;br /&gt;
TERMINAL INTERFACE      11   1320   1327       52            52              62&lt;br /&gt;
TERMINAL INTERFACE      12   1330   1337       53            53              63&lt;br /&gt;
FLOPPY &amp;amp; STREAMER 5 &amp;amp; 8  1   1560   1567              21                   1145&lt;br /&gt;
HDLC REMOTE LOAD         1   1604   1607&lt;br /&gt;
HDLC REMOTE LOAD         2   1610   1613&lt;br /&gt;
HDLC / MEGALINK          1   1640   1657                    150    150     1360&lt;br /&gt;
HDLC / MEGALINK          2   1660   1677                    151    151     1362&lt;br /&gt;
HDLC / MEGALINK          3   1700   1717                    152    152     1364&lt;br /&gt;
HDLC / MEGALINK          4   1720   1737                    153    153     1366&lt;br /&gt;
HDLC / MEGALINK          5   1740   1757                    154    154     1370&lt;br /&gt;
ECCR                       100115 100115&lt;br /&gt;
ETHERNET CONTR.          1 140360 140363                 140034            2240&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   I N T E R R U P T    P R I O R I T Y&lt;br /&gt;
  ======================================&lt;br /&gt;
&lt;br /&gt;
LEVEL   IDENT   HARDWARE DEVICE NAME&lt;br /&gt;
------------------------------------------&lt;br /&gt;
   13       1   REAL TIME CLOCK          1&lt;br /&gt;
   13     151   HDLC / MEGALINK          2&lt;br /&gt;
   13     152   HDLC / MEGALINK          3&lt;br /&gt;
   13     150   HDLC / MEGALINK          1&lt;br /&gt;
   13     153   HDLC / MEGALINK          4&lt;br /&gt;
   13     154   HDLC / MEGALINK          5&lt;br /&gt;
   12     151   HDLC / MEGALINK          2&lt;br /&gt;
   12     152   HDLC / MEGALINK          3&lt;br /&gt;
   12     150   HDLC / MEGALINK          1&lt;br /&gt;
   12     153   HDLC / MEGALINK          4&lt;br /&gt;
   12      44   TERMINAL INTERFACE       5&lt;br /&gt;
   12      45   TERMINAL INTERFACE       6&lt;br /&gt;
   12      46   TERMINAL INTERFACE       7&lt;br /&gt;
   12      47   TERMINAL INTERFACE       8&lt;br /&gt;
   12      50   TERMINAL INTERFACE       9&lt;br /&gt;
   12      51   TERMINAL INTERFACE      10&lt;br /&gt;
   12      52   TERMINAL INTERFACE      11&lt;br /&gt;
   12      53   TERMINAL INTERFACE      12&lt;br /&gt;
   12  140034   ETHERNET CONTR.          1&lt;br /&gt;
   12     154   HDLC / MEGALINK          5&lt;br /&gt;
   11       1   ST506  5&amp;quot; DISC CONTR.    1&lt;br /&gt;
   11      21   FLOPPY &amp;amp; STREAMER 5 &amp;amp; 8  1&lt;br /&gt;
   10      44   TERMINAL INTERFACE       5&lt;br /&gt;
   10      45   TERMINAL INTERFACE       6&lt;br /&gt;
   10      46   TERMINAL INTERFACE       7&lt;br /&gt;
   10      47   TERMINAL INTERFACE       8&lt;br /&gt;
   10      50   TERMINAL INTERFACE       9&lt;br /&gt;
   10      51   TERMINAL INTERFACE      10&lt;br /&gt;
   10      52   TERMINAL INTERFACE      11&lt;br /&gt;
   10      53   TERMINAL INTERFACE      12&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== END OF INVESTIGATION ===&lt;br /&gt;
===  NO ERRORS DETECTED  ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                              M E M O R Y   M A P&lt;br /&gt;
                            =======================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
!=============!=======!=======!=======!=======!=======!=======!=======!=======!&lt;br /&gt;
!   Bank no   !   0   !   1   !   2   !   3   !   4   !   5   !   6   !   7   !&lt;br /&gt;
!=============!=======!=======!=======!=======!=======!=======!=======!=======!&lt;br /&gt;
! 000B / 000D ! Mpm 5 ! Mpm 5 ! Mpm 5 ! Mpm 5 ! Mpm 5 ! Mpm 5 ! Mpm 5 ! Mpm 5 !&lt;br /&gt;
!-------------!-------!-------!-------!-------!-------!-------!-------!-------!&lt;br /&gt;
! 010B / 008D ! Local ! Local ! Local ! Local ! Local ! Local ! Local ! Local !&lt;br /&gt;
!-------------!-------!-------!-------!-------!-------!-------!-------!-------!&lt;br /&gt;
! 020B / 016D ! Local ! Local ! Local ! Local ! Local ! Local ! Local ! Local !&lt;br /&gt;
!-------------!-------!-------!-------!-------!-------!-------!-------!-------!&lt;br /&gt;
! 030B / 024D ! Ether ! Ether ! Ether ! Ether !       !       !       !       !&lt;br /&gt;
!-------------!-------!-------!-------!-------!-------!-------!-------!-------!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Local memory size....:  2.000 Mbytes&lt;br /&gt;
Ether memory size....:  0.512 Mbytes&lt;br /&gt;
Mpm 5 memory size....:  1.000 Mbytes&lt;br /&gt;
------------------------------------&lt;br /&gt;
Total memory size....:  3.512 Mbytes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== REFERENCES ==&lt;br /&gt;
https://www.ndwiki.org/wiki/ND-1xx_Compact_family&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7729</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7729"/>
		<updated>2025-07-28T14:01:41Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Added new section &amp;quot;ND Library&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* &amp;lt;s&amp;gt;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&amp;lt;/s&amp;gt;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
* MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&lt;br /&gt;
** Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&lt;br /&gt;
** Guessing there is an opcode not working 100% that failed some initialisation.&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interrest. And PATCH files. Did i mention PATCH files?&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
===Things I am working on===&lt;br /&gt;
* Finding the bugs that forces me to have workaround for ABSTR and Memory Management (Guessing: opcodes and/or ALU flags)&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since I now have the ND-110 emulator working, I should be able do decode how the missing opcodes work and get them working. But in reality I dont think I need the ND-110 specific opcodes, as they are mostly added for performance reasons.&lt;br /&gt;
*** CX opcodes (Segment)&lt;br /&gt;
&lt;br /&gt;
* Implementing more controllers&lt;br /&gt;
** HDLC/MEGALINK&lt;br /&gt;
*** IO interface is finished. Implementation of the HDLC controller &amp;quot;COM 5025&amp;quot; from SMC is somewhat working. Now I am ironing out the details using the &amp;quot;HDLC test program&amp;quot;&lt;br /&gt;
*** The goal is to have &amp;quot;simulated&amp;quot; serial communication over TCP to be able to communicate with other emulated ND machines using COSMOS.&lt;br /&gt;
*** &#039;&#039;&#039;Looking for network software (especially TCP-IP) for SINTRAN. So far this software is not on any floppy I know about.&lt;br /&gt;
** Ethernet&#039;&#039;&#039;&lt;br /&gt;
*** Ethernet II controller has an onboard 68000 CPU and a LANCE controller. Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
*** Controller has no EPROM, but shared memory with the ND-100 machine. The program on the controller is loaded from ND-100 and the 68K cpu is restarted after code is loaded to RAM.&lt;br /&gt;
** SCSI Controller &lt;br /&gt;
*** IO interface is finished, implementation of the SCSI is complete. The SCSI Chip is an NCR 5386.&lt;br /&gt;
*** Emulated SCSI Bus and &amp;quot;generic&amp;quot; SCSI HDD is complete.&lt;br /&gt;
*** Emulated 135MB SCSI HD &amp;quot;Micropolis 1375 SCSI Drive&amp;quot; works quite good with DISK-MM, SCSI-TV and Filesystem Investigator&lt;br /&gt;
**** Video of me testing can be seen here https://youtu.be/EqF9FhFZj2g&lt;br /&gt;
**** Using a IMG file that is dumped from a real Micropolis 1375 drive!&lt;br /&gt;
***** I believe the image is from this machine [[ND-110_Satellite_9883.21238]]&lt;br /&gt;
*** SINTRAN boot or &amp;quot;ENTER-DIRECTORY&amp;quot; for DISC-SCSI-1 fails, so there are still some details that need to be fixed.&lt;br /&gt;
*** The goal is to have a working SCSI interface so ND-100 can boot directly from images dumped from SCSI drives.&lt;br /&gt;
** ND-500 controller&lt;br /&gt;
*** Added skeleton for PCB 3022 [https://www.ndwiki.org/wiki/3022], the ND-500 interface&lt;br /&gt;
*** CONFIGURE detects the new controller, but I have not implemented any logic inside&lt;br /&gt;
*** &#039;&#039;&#039;Looking for documentation details on this controller as I am unable to find any.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling C# to WebAssembly&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==ND Library==&lt;br /&gt;
* &#039;&#039;&#039;ND Library&#039;&#039;&#039; - Online digital archive for Norsk Data floppies and documentation&lt;br /&gt;
** &#039;&#039;&#039;Collection Size&#039;&#039;&#039;: Over 600 digitally preserved floppies as of July 2025&lt;br /&gt;
** &#039;&#039;&#039;Search Functionality&#039;&#039;&#039;: Browse and search through archived floppy disks and technical documentation&lt;br /&gt;
** &#039;&#039;&#039;Direct Downloads&#039;&#039;&#039;: Download floppy images directly for use in emulators or preservation&lt;br /&gt;
** &#039;&#039;&#039;Future Plans&#039;&#039;&#039;: &lt;br /&gt;
*** Continue digitizing additional floppies to expand the archive&lt;br /&gt;
*** Implement direct &amp;quot;floppy mount&amp;quot; integration with popular emulators:&lt;br /&gt;
**** nd100x emulator&lt;br /&gt;
**** ND-100 emulator within RetroCore&lt;br /&gt;
*** Streamline installation of SINTRAN and other historical software&lt;br /&gt;
** &#039;&#039;&#039;Access&#039;&#039;&#039;: Available at https://ndlib.hackercorp.no/&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact with the following HW configuration&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ PCB Description Print&lt;br /&gt;
|-&lt;br /&gt;
! SLOT !! ID !! PCB !! Description !! Print and ECO&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 324113 || PCB 3042 || 1 MB Memory || Print A ECO D&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 324534 || PCB 3094 || ETHERNET IF. II || Print C&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 324011 || PCB 3111 || 8 TERM IF W/FIFO || Print C&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 324012 || PCB 3112 || 8&amp;quot; + 5 1/4 FLOPPY || Print B&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 322671 || PCB 3041 || N-100 ST 506 DISK CONTR. || Print E ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO G&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 322615 || PCB 3015 || ND100 HDLC W/A.LO || Print &amp;lt;unknown&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 322615 || PCB 3015 || ND100 HDLC W/A.LO. || Print S ECO V&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 324137 || PCB 3090 || ND110 - CPU&amp;amp;MM 32B || Print K ECO R&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 322672 || PCB 3042 || N100 2MB RAM || Print A ECO D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The machine also has a Micropolis 1325 ST506 74MB drive. Sadly there is some issues with reading data from it.&lt;br /&gt;
* Reading head 0-3 works on all tracks&lt;br /&gt;
* Reading head 4-7 fails on all tracks with error &amp;quot;Address mismatch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After buying an MFM emulator from [https://www.pdp8online.com/mfm/] and getting help and support, including firmware extension to identify and read ND disk format I have been able to partially dump the contents of the disk.&lt;br /&gt;
The challenge is that the heads 4-7 is reading the &amp;quot;next&amp;quot; track because they are misaligned - and I need to add some HW to try to make the disk adjust how it reads it heads - as described here [http://www.pdp8online.com/mfm/head_servo/]&lt;br /&gt;
&lt;br /&gt;
Using the MFM emulator I am now able to boot the ND-100/CX machine from an disk image I have prepared in my emulator.&lt;br /&gt;
&lt;br /&gt;
I also got a TDV 1200 terminal, which upon startup had a capacitor in the powersupply to burn. I have replaced the capacitors in the powersupply, but there is some unstability that I believe is related to heat (read:old chips - or more capacitors that needs to be replaced)&lt;br /&gt;
Short YouTube video showing the problem: [https://youtube.com/shorts/uek6hpqzYvE]&lt;br /&gt;
&lt;br /&gt;
To connect to the ND machine I use a serial-to-current loop adapter i bought from Mouser. [https://no.mouser.com/ProductDetail/Advantech/BB-232CL9R?qs=zW32dvEIR3vYFmSSVfM7ig%3D%3D&amp;amp;countryCode=NO&amp;amp;currencyCode=NOK]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7721</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7721"/>
		<updated>2025-07-12T12:17:30Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Added new section &amp;quot;Modern ND Assembly programming using Visual Studio Code&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* &amp;lt;s&amp;gt;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&amp;lt;/s&amp;gt;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
* MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&lt;br /&gt;
** Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&lt;br /&gt;
** Guessing there is an opcode not working 100% that failed some initialisation.&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interrest. And PATCH files. Did i mention PATCH files?&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
===Things I am working on===&lt;br /&gt;
* Finding the bugs that forces me to have workaround for ABSTR and Memory Management (Guessing: opcodes and/or ALU flags)&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since I now have the ND-110 emulator working, I should be able do decode how the missing opcodes work and get them working. But in reality I dont think I need the ND-110 specific opcodes, as they are mostly added for performance reasons.&lt;br /&gt;
*** CX opcodes (Segment)&lt;br /&gt;
&lt;br /&gt;
* Implementing more controllers&lt;br /&gt;
** HDLC/MEGALINK&lt;br /&gt;
*** IO interface is finished. Implementation of the HDLC controller &amp;quot;COM 5025&amp;quot; from SMC is somewhat working. Now I am ironing out the details using the &amp;quot;HDLC test program&amp;quot;&lt;br /&gt;
*** The goal is to have &amp;quot;simulated&amp;quot; serial communication over TCP to be able to communicate with other emulated ND machines using COSMOS.&lt;br /&gt;
*** &#039;&#039;&#039;Looking for network software (especially TCP-IP) for SINTRAN. So far this software is not on any floppy I know about.&lt;br /&gt;
** Ethernet&#039;&#039;&#039;&lt;br /&gt;
*** Ethernet II controller has an onboard 68000 CPU and a LANCE controller. Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
*** Controller has no EPROM, but shared memory with the ND-100 machine. The program on the controller is loaded from ND-100 and the 68K cpu is restarted after code is loaded to RAM.&lt;br /&gt;
** SCSI Controller &lt;br /&gt;
*** IO interface is finished, implementation of the SCSI is complete. The SCSI Chip is an NCR 5386.&lt;br /&gt;
*** Emulated SCSI Bus and &amp;quot;generic&amp;quot; SCSI HDD is complete.&lt;br /&gt;
*** Emulated 135MB SCSI HD &amp;quot;Micropolis 1375 SCSI Drive&amp;quot; works quite good with DISK-MM, SCSI-TV and Filesystem Investigator&lt;br /&gt;
**** Video of me testing can be seen here https://youtu.be/EqF9FhFZj2g&lt;br /&gt;
**** Using a IMG file that is dumped from a real Micropolis 1375 drive!&lt;br /&gt;
***** I believe the image is from this machine [[ND-110_Satellite_9883.21238]]&lt;br /&gt;
*** SINTRAN boot or &amp;quot;ENTER-DIRECTORY&amp;quot; for DISC-SCSI-1 fails, so there are still some details that need to be fixed.&lt;br /&gt;
*** The goal is to have a working SCSI interface so ND-100 can boot directly from images dumped from SCSI drives.&lt;br /&gt;
** ND-500 controller&lt;br /&gt;
*** Added skeleton for PCB 3022 [https://www.ndwiki.org/wiki/3022], the ND-500 interface&lt;br /&gt;
*** CONFIGURE detects the new controller, but I have not implemented any logic inside&lt;br /&gt;
*** &#039;&#039;&#039;Looking for documentation details on this controller as I am unable to find any.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling C# to WebAssembly&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
==Modern ND Assembly programming using Visual Studio Code==&lt;br /&gt;
[[File:Ndasm-vscode.png|200px|thumb|right|&amp;quot;Hello world&amp;quot; being debugged in VS Code]]&lt;br /&gt;
* Created plugin for Visual Studio Code &lt;br /&gt;
** Have lot of functionality like Syntax highlighting, Hover information for instructions and registers, Code completion&lt;br /&gt;
** Uses Microsoft Debug Adapter Protocol (DAP) to talk the the DAP Server implemented and integrated into ND100x&lt;br /&gt;
** Uses Ragge&#039;s ND-100 assembler to assemble the code and create binary file with symbols&lt;br /&gt;
** YouTube video showing VS Code with the plugin [https://youtu.be/AhmU7mJNdHo debugging &amp;quot;Hello World&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact with the following HW configuration&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ PCB Description Print&lt;br /&gt;
|-&lt;br /&gt;
! SLOT !! ID !! PCB !! Description !! Print and ECO&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 324113 || PCB 3042 || 1 MB Memory || Print A ECO D&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 324534 || PCB 3094 || ETHERNET IF. II || Print C&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 324011 || PCB 3111 || 8 TERM IF W/FIFO || Print C&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 324012 || PCB 3112 || 8&amp;quot; + 5 1/4 FLOPPY || Print B&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 322671 || PCB 3041 || N-100 ST 506 DISK CONTR. || Print E ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO G&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 322615 || PCB 3015 || ND100 HDLC W/A.LO || Print &amp;lt;unknown&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 322615 || PCB 3015 || ND100 HDLC W/A.LO. || Print S ECO V&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 324137 || PCB 3090 || ND110 - CPU&amp;amp;MM 32B || Print K ECO R&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 322672 || PCB 3042 || N100 2MB RAM || Print A ECO D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The machine also has a Micropolis 1325 ST506 74MB drive. Sadly there is some issues with reading data from it.&lt;br /&gt;
* Reading head 0-3 works on all tracks&lt;br /&gt;
* Reading head 4-7 fails on all tracks with error &amp;quot;Address mismatch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After buying an MFM emulator from [https://www.pdp8online.com/mfm/] and getting help and support, including firmware extension to identify and read ND disk format I have been able to partially dump the contents of the disk.&lt;br /&gt;
The challenge is that the heads 4-7 is reading the &amp;quot;next&amp;quot; track because they are misaligned - and I need to add some HW to try to make the disk adjust how it reads it heads - as described here [http://www.pdp8online.com/mfm/head_servo/]&lt;br /&gt;
&lt;br /&gt;
Using the MFM emulator I am now able to boot the ND-100/CX machine from an disk image I have prepared in my emulator.&lt;br /&gt;
&lt;br /&gt;
I also got a TDV 1200 terminal, which upon startup had a capacitor in the powersupply to burn. I have replaced the capacitors in the powersupply, but there is some unstability that I believe is related to heat (read:old chips - or more capacitors that needs to be replaced)&lt;br /&gt;
Short YouTube video showing the problem: [https://youtube.com/shorts/uek6hpqzYvE]&lt;br /&gt;
&lt;br /&gt;
To connect to the ND machine I use a serial-to-current loop adapter i bought from Mouser. [https://no.mouser.com/ProductDetail/Advantech/BB-232CL9R?qs=zW32dvEIR3vYFmSSVfM7ig%3D%3D&amp;amp;countryCode=NO&amp;amp;currencyCode=NOK]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=File:Ndasm-vscode.png&amp;diff=7720</id>
		<title>File:Ndasm-vscode.png</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=File:Ndasm-vscode.png&amp;diff=7720"/>
		<updated>2025-07-12T12:04:55Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Screenshot of &amp;quot;Hello World&amp;quot; being debugged in Visual Studio code using the VS Code plugin, and relies on ND100x emulator and Ragge&amp;#039;s ND assembler (asm)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Screenshot of &amp;quot;Hello World&amp;quot; being debugged in Visual Studio code using the VS Code plugin, and relies on ND100x emulator and Ragge&#039;s ND assembler (asm)&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7719</id>
		<title>User:RHansen</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=User:RHansen&amp;diff=7719"/>
		<updated>2025-07-11T15:50:39Z</updated>

		<summary type="html">&lt;p&gt;RHansen: /* TDV 2215 Emulator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| style=&amp;quot;background:#D0E0D0; border:2px solid #B0B0B0; border-right:3px solid #B0B0B0; border-radius:3em; border-radius:3em; padding-left:.5em; padding-right:.5em&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color:transparent;&amp;quot; colspan=2|&amp;lt;font face=&amp;quot;comic sans ms&amp;quot; color=&amp;quot;#707070&amp;quot; size=4&amp;gt;&amp;lt;center&amp;gt;&#039;&#039;&#039;Ronny&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Real name:&#039;&#039;&#039;&lt;br /&gt;
|Ronny Hansen&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Role:&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;Developer&#039;&#039;, &#039;&#039;Architect&#039;&#039;, &#039;&#039;Geek&#039;&#039;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Interrested in:&#039;&#039;&#039;&lt;br /&gt;
| Everything between &#039;&#039;Embedded&#039;&#039; and &#039;&#039;Cloud&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
A long time ago, in another universe it seems, I was using SINTRAN on an ND-100 at our electronics/computer school.&lt;br /&gt;
We configured and ran the machine after we inherited it.&lt;br /&gt;
&lt;br /&gt;
These days I am a Cloud Architect, Developer and Geek - and the last years I have been spending an unhealthy amount of time writing emulators. You can read how this crazy journey started here [https://www.linkedin.com/pulse/wow-i-didnt-expect-so-much-fun-ronny-hansen/]&lt;br /&gt;
&lt;br /&gt;
== ND-100 Emulator ==&lt;br /&gt;
I have successfully (with some help) created an ND-100 emulator in .NET/C# with peripherals such as TeleType, Serial Ports,  Floppy and HardDrive.&lt;br /&gt;
&lt;br /&gt;
The emulator contains a debugger, disassembler and code tracer in addition to logic to mount different floppy-image, read/write hardddrive, loading BPUN and PROG files directly into memory.&lt;br /&gt;
&lt;br /&gt;
I have successfully dumped and booted SINTRAN versions H, K, L and M in ND-100 mode.&lt;br /&gt;
&lt;br /&gt;
This YouTube video shows a boot of SINTRAN L in the emulator [https://www.youtube.com/watch?v=HdVbfdQeWOk&amp;amp;ab_channel=RonnyHansen]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Boot-SIII-H.png|Booting SINTRAN H in the emulator]]&lt;br /&gt;
&lt;br /&gt;
[[File:Disk-choice-m.png|200px|thumb|right|Possible disk choices to install SIII M on]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Cpu-revision.png|200px|thumb|right|SIII M ERROR]]&lt;br /&gt;
&lt;br /&gt;
[[File:Paging-test.png|200px|thumb|right|Results from PAGING:TEST]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s working in the ND-100 emulator ===&lt;br /&gt;
* SINTRAN H boots and runs (with a minor hardcode in the emulator to fix ABSTR bug (?))&lt;br /&gt;
* SINTRAN K,L and M boots and runs. XMSG starts in L and M &lt;br /&gt;
* Test programs that validates the opcodes so far&lt;br /&gt;
** ONE—CHECK, TWO—CHECK, THREE—CHECK&lt;br /&gt;
** FOUR—CHECK (a few bugs still)&lt;br /&gt;
** INSTRUCTION-B.BPUN (PROGRAM NUMBER: 204384B DATE ISSUED   : 83.11.01)&lt;br /&gt;
** PAGING-B.BPUN (PROGRAM NUMBER: 203098B 1982)&lt;br /&gt;
** FLOPPY-FU-1986F (All tests work except Test 2 &amp;quot;Format Decoder Test&amp;quot; on my PIO floppy driver)&lt;br /&gt;
** Test programs on floppy &amp;quot;210523E00-XX-01D&amp;quot;&lt;br /&gt;
*** INSTRUCTION - Version: C00 - 1986-10-30&lt;br /&gt;
**** &amp;quot;48 BITS FLOATING INSTRUCTIONS&amp;quot; - not working as I am only emulating 32 bits FPU&lt;br /&gt;
**** &lt;br /&gt;
***  PAGING - Version: C00 - 1986-10-16&lt;br /&gt;
**** All tests report success in MMS-1 and MMS-2 mode.&lt;br /&gt;
[[File:fpp32.png|200px|thumb|right|INSTRUCTIONS FPP test]]&lt;br /&gt;
&lt;br /&gt;
[[File:Conf.png|200px|thumb|right|CONFIGURATION test tool]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s NOT working in the ND-100 emulator ===&lt;br /&gt;
* &amp;lt;s&amp;gt;SINTRAN K,L and M triggers a &amp;quot;Memory protection&amp;quot; after a &amp;quot;Page-not-in-memory&amp;quot;. This happens to just one specific page, so at the moment &amp;quot;Memory protection&amp;quot; is disabled while I am trying to identify the reason.&amp;lt;/s&amp;gt;&lt;br /&gt;
** Found the bug after 18 months debugging, and many hundred-thousands of log-lines read... It was related to reading Indirect Data in memory with READ_FETCH properties, and the indirect data was on a page that was &amp;quot;NOT IN MEMORY&amp;quot; (ie it had to be paged in to be able to be read).&lt;br /&gt;
* MON 131 ABSTR behaves &amp;quot;buggy&amp;quot; in SINTRAN H&lt;br /&gt;
** Something odd happens with zero-pointers for some logical devices sending the CPU into a loop at P=0&lt;br /&gt;
** Guessing there is an opcode not working 100% that failed some initialisation.&lt;br /&gt;
&lt;br /&gt;
* Copying file from papertape driver to SINTRAN H disk with &amp;quot;COPY &#039;FILE:BPUN&#039; PT1&#039; fails after 129 bytes. It just stops, and I have to cancel the copy with ESC key.&lt;br /&gt;
&lt;br /&gt;
===I am looking for the following===&lt;br /&gt;
* SINTRAN N (the newest version of SINTRAN) and patch files for Y2K.&lt;br /&gt;
* All SINTRAN III versions are of interrest. And PATCH files. Did i mention PATCH files?&lt;br /&gt;
* Other binary images (Tape, PaperTape, HDD, Floppy,+++) &lt;br /&gt;
* Source Code. Any source code. Especially test programs and IO drivers.&lt;br /&gt;
&lt;br /&gt;
===Things I am working on===&lt;br /&gt;
* Finding the bugs that forces me to have workaround for ABSTR and Memory Management (Guessing: opcodes and/or ALU flags)&lt;br /&gt;
* Validate CE (Commercial Extended) opcodes. They are confirmed working using &amp;quot;INSTRUCTION&amp;quot; test program, but it doesn&#039;t test all variants.&lt;br /&gt;
** BCD &lt;br /&gt;
** Stack (INIT, ENTR, LEAV, ELEAV) - for PLANC programs.&lt;br /&gt;
** ND-110 Specific opcodes &lt;br /&gt;
*** Since I now have the ND-110 emulator working, I should be able do decode how the missing opcodes work and get them working. But in reality I dont think I need the ND-110 specific opcodes, as they are mostly added for performance reasons.&lt;br /&gt;
*** CX opcodes (Segment)&lt;br /&gt;
&lt;br /&gt;
* Implementing more controllers&lt;br /&gt;
** HDLC/MEGALINK&lt;br /&gt;
*** IO interface is finished. Implementation of the HDLC controller &amp;quot;COM 5025&amp;quot; from SMC is somewhat working. Now I am ironing out the details using the &amp;quot;HDLC test program&amp;quot;&lt;br /&gt;
*** The goal is to have &amp;quot;simulated&amp;quot; serial communication over TCP to be able to communicate with other emulated ND machines using COSMOS.&lt;br /&gt;
*** &#039;&#039;&#039;Looking for network software (especially TCP-IP) for SINTRAN. So far this software is not on any floppy I know about.&lt;br /&gt;
** Ethernet&#039;&#039;&#039;&lt;br /&gt;
*** Ethernet II controller has an onboard 68000 CPU and a LANCE controller. Work is in progress to emulate the chips and map the devices together.&lt;br /&gt;
*** Controller has no EPROM, but shared memory with the ND-100 machine. The program on the controller is loaded from ND-100 and the 68K cpu is restarted after code is loaded to RAM.&lt;br /&gt;
** SCSI Controller &lt;br /&gt;
*** IO interface is finished, implementation of the SCSI is complete. The SCSI Chip is an NCR 5386.&lt;br /&gt;
*** Emulated SCSI Bus and &amp;quot;generic&amp;quot; SCSI HDD is complete.&lt;br /&gt;
*** Emulated 135MB SCSI HD &amp;quot;Micropolis 1375 SCSI Drive&amp;quot; works quite good with DISK-MM, SCSI-TV and Filesystem Investigator&lt;br /&gt;
**** Video of me testing can be seen here https://youtu.be/EqF9FhFZj2g&lt;br /&gt;
**** Using a IMG file that is dumped from a real Micropolis 1375 drive!&lt;br /&gt;
***** I believe the image is from this machine [[ND-110_Satellite_9883.21238]]&lt;br /&gt;
*** SINTRAN boot or &amp;quot;ENTER-DIRECTORY&amp;quot; for DISC-SCSI-1 fails, so there are still some details that need to be fixed.&lt;br /&gt;
*** The goal is to have a working SCSI interface so ND-100 can boot directly from images dumped from SCSI drives.&lt;br /&gt;
** ND-500 controller&lt;br /&gt;
*** Added skeleton for PCB 3022 [https://www.ndwiki.org/wiki/3022], the ND-500 interface&lt;br /&gt;
*** CONFIGURE detects the new controller, but I have not implemented any logic inside&lt;br /&gt;
*** &#039;&#039;&#039;Looking for documentation details on this controller as I am unable to find any.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===ND-100 Running in the browser===&lt;br /&gt;
** Working on making the emulator(s) working in the browser by compiling C# to WebAssembly&lt;br /&gt;
** CPU is running nicely, working on giving access to IO devices&lt;br /&gt;
** You can test by going to [https://retrocore.hackercorp.no/ https://retrocore.hackercorp.no/] and selecting machine=ND100 then powering on the Emulator.&lt;br /&gt;
** Feedback, comments, and help is much appreciated&lt;br /&gt;
*** I am able to mount HDD for code running in the browser, but booting and running SINTRAN is painfully slow. So maybe not so good idea to do that..&lt;br /&gt;
&lt;br /&gt;
===Open Source===&lt;br /&gt;
* When I have a stable working version, I am planning to put the source code on GitHub under a BSD License. Then everyone can look at the code, modify it or just run it.&lt;br /&gt;
* I have been playing with the idea on porting my C# code to C - when its stable. And integrate it in the SIMH projects [https://github.com/open-simh/simh]. For this I may need help :)&lt;br /&gt;
** I just found out that there exists and ND-100 emulator in OPEN-SIMH written in C by &amp;quot;Ragge&amp;quot;. It is not 100% complete, lacking some opcodes, complete MMU and some devices - so you cannot boot Sintran (yet..) - https://github.com/open-simh/simh/tree/master/ND100&lt;br /&gt;
&lt;br /&gt;
==ND-110 Emulator==&lt;br /&gt;
[[File:ND-110-UC.png|200px|thumb|right|MicroCode with syntax highlighting]]&lt;br /&gt;
&lt;br /&gt;
* ND-110 MicroCode CPU&lt;br /&gt;
** Creating a new CPU emulator at the MicroCode level to teach me more about the internals of the opcodes, but also to (hopefully) help me identify &amp;quot;features&amp;quot; in my ND-100 Emulator&lt;br /&gt;
*** Everything is written in C#/.NET7&lt;br /&gt;
*** MicroCode compiler works. &lt;br /&gt;
*** MicroCode retrieved from PDF document using OCR techniques mixed with some &amp;quot;text washing&amp;quot; gives me a file with 16600 lines of microcode I manually have validate against the PDF. After retriving a copy of a ROM for a ND-110 cpu board, I could compare the compiled result with the ROM and found 150+ errors in the source file. Now that is fixed, and the compiled microcode is identical to the ROM.&lt;br /&gt;
*** &lt;br /&gt;
*** MicroCode CPU working. I have implemented registers, ALU (actually its 4x Am2901 chips) and interrupts (Am2914 chip) &lt;br /&gt;
*** Macro code execution work. &lt;br /&gt;
*** Interrupts and traps &amp;quot;somewhat&amp;quot; works. Still need improvement&lt;br /&gt;
*** Memory management is &amp;quot;copied&amp;quot; from ND-100 emulator, but needs to be re-written to match ND-110/ND-120 hw &lt;br /&gt;
*** This CPU is definitively slower than the ND-100 emulator, but hopefully behave 100% like the original. This way I can verify behavior differences between the ND-100 opcodes and the ND-110 opcodes.&lt;br /&gt;
*** If you want to test the emulator/debugger, its available at [https://nd110.hackercorp.no/ https://nd110.hackercorp.no/]&lt;br /&gt;
* ND-120 MicroCode CPU&lt;br /&gt;
** Extended the ND-110 MicroCode CPU to work with ND-120 microcode.&lt;br /&gt;
*** Microcode almost identical, there are a few bits that has been negated and needs to be handled when reading the PROM&lt;br /&gt;
*** Different UART than ND-100 and ND-110, so support for this has been implemented&lt;br /&gt;
*** OpCom works, so I can communicate via console.&lt;br /&gt;
*** There are other differences, I am guessing in the interrupt subsystem. Consequence is that I cant start programs like INSTRUCTION verify, it just hangs.&lt;br /&gt;
&lt;br /&gt;
==ND-120 in an FPGA ==&lt;br /&gt;
[[File:nd120-gtkwave.png|200px|thumb|right|Debugging Verilog version of ND-120 using GTKWave]]&lt;br /&gt;
&lt;br /&gt;
* Recreating the ND-120 CPU emulator at hardware level using the original design documents from 1988&lt;br /&gt;
** Draw the digital logic using Logisim Evolution. &lt;br /&gt;
*** Finished : CGA (CPU Gate Array)&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array)&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D.&lt;br /&gt;
*** Bugs fixed in Verilog code is backported to the Logisim drawings to make them as accurate and bugfree as possible.&lt;br /&gt;
** Verilog&lt;br /&gt;
*** Convert the schematics to Verilog (Built in functionality in Logisim).&lt;br /&gt;
*** Finished : CGA (CPU Gate Array). Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Finished : DGA (Decoder Gate Array). Verilator test code generated, more automatic  testcases needed.&lt;br /&gt;
*** Finished : CPU BOARD PCB 3202D. Verilator test code generated, more automatic testcases needed.&lt;br /&gt;
*** Creating special chips in Verilog&lt;br /&gt;
**** Finished : PAL Chips- Converting all PALASM sourcecode to Verilog&lt;br /&gt;
**** Working in Verilator: RAM and UART (Needs to be extended to work in real FPGA hardware)&lt;br /&gt;
*** Microcode ROM&lt;br /&gt;
**** Using microcode dumped from EPROM from a real ND-120 CPU (Might need a refactor to work with FPGA hardware(&lt;br /&gt;
** Testing&lt;br /&gt;
*** Using Verilator to test the complete design&lt;br /&gt;
**** One test project to capure signal data for debugging in GTKWave&lt;br /&gt;
**** Another test project to run the CPU and communicate with OPCOM over serial port.&lt;br /&gt;
*** Many bugs has been fixed and more needs fixing&lt;br /&gt;
** Summary&lt;br /&gt;
*** Communicating with OPCOM works, many opcodes work - but there are more bugs to fix &lt;br /&gt;
*** Development is done in the open, check out [https://github.com/RonnyA/nd-120 https://github.com/RonnyA/nd-120]&lt;br /&gt;
*** Help is much appreciated as I am new to Verilog and FPGA programming&lt;br /&gt;
*** When the complete CPU PCB (with CGA and DGA) is finished in Verilog, with serial port access to OPCOM the next step is to implement support for IO devices like floppy and harddrive.&lt;br /&gt;
&lt;br /&gt;
== HDLC Gateway ==&lt;br /&gt;
[[File:Hdlcgw-proto.png|200px|thumb|right|HDLC Gateway Prototype]]&lt;br /&gt;
* Microcontroller (RP2040 or RP2350) with RS-422 to TTL converters.&lt;br /&gt;
** ND machine has a DB-25 connector pr HDLC card.&lt;br /&gt;
** Connect a cable between this DB-25 connector and the HDLC gateway using cable 325402 (described in &amp;quot;Service handbook II&amp;quot;, chapter 2-20 about HDLC to HDLC (Computer link) [http://norsk-data.com/library/libsw/ND-NDSH02-03-EN.pdf]&lt;br /&gt;
** Software on the microcontroller receives and sends HDLC bit-stuffed frames over this cable&lt;br /&gt;
** Software on the microcontroller converts this to byte-stuffed HDLC frames and send/receive over USB cable.&lt;br /&gt;
*** Later it will also be support for TCP/IP&lt;br /&gt;
** The byte stuffed HDLC frames can be send to &lt;br /&gt;
*** The ND-100 emulator via the emulated &amp;quot;HDLC controller card&amp;quot;&lt;br /&gt;
*** To another microcontroller via TCP/IP to connect to another ND machine - to have point-to-point connection over Internet.&lt;br /&gt;
&lt;br /&gt;
== ND Controller card Emulator (NDModulE) ==&lt;br /&gt;
[[File:NDModulE-proto.png|200px|thumb|right|NDModulE Prototype]]&lt;br /&gt;
* Controller card for HDD emulated in hardware using a RP2350 MicroController&lt;br /&gt;
** Today you need an real working HDD or an MFM emulator with MFM controller card in an ND machine to boot. &lt;br /&gt;
*** I bought this [https://www.pdp8online.com/mfm/mfm.shtml MFM Emulator] and worked with the person that made the device, and he was very helpful to extend the code it so the MFM emulator is now able to read and write ND Micropolis MFM disks.&lt;br /&gt;
** If you have an SCSI controller you need a working SCSI HDD or an SCSI HDD emulator. &lt;br /&gt;
*** I just received an [https://store.rabbitholecomputing.com/ZuluSCSI-RP2040-p/zuluscsi-rp2040.htm Zulu SCSI emulator] I am about to test.&lt;br /&gt;
** This project aims to solve this by emulating a real controller using FPGA, and having the &amp;quot;HDD DISK&amp;quot; as an image on a SD card. &lt;br /&gt;
** Emulation of floppy controller is also planned.&lt;br /&gt;
** This way we will be able to run test programs and boot ND hardware that doesn&#039;t have working disk/disk-controllers.&lt;br /&gt;
** First prototype PCB has been created, but needs redesign because of multiple design errors.&lt;br /&gt;
&lt;br /&gt;
==TDV 2215 Emulator==&lt;br /&gt;
[[File:Tdv-2215-boot-emul-err.png|200px|thumb|right|TDV2215 booting with error]]&lt;br /&gt;
[[File:Tdv2215-config.jpg|200px|thumb|right|TDV2215 config page]]&lt;br /&gt;
&lt;br /&gt;
* Creating an emulator of the TDV2215 terminal. &lt;br /&gt;
** Using the original schematics, an emulated 8085 CPU and ROM dumps from an original TDV.&lt;br /&gt;
** &amp;lt;s&amp;gt;The ROM code does some HW validation and fails with &amp;quot;ERROR NO.: qt&amp;quot; -There are multiple areas it can fail: Z80SIO UART emulation, Interrupt handling and memory mapping.&amp;lt;/s&amp;gt;&lt;br /&gt;
*** &amp;lt;s&amp;gt;Error should have been shown as 13 not QT, there was a bug in the 8085 opcodes for BCD &amp;lt;/s&amp;gt;&lt;br /&gt;
** Used Ghidra to reverse engineer the ROM code, but its hard to understand what the ROM code really tries to do, and why it fails.  &lt;br /&gt;
** Connected Claude AI to the Ghidra using an MCP bridge, and together that was powerful enough to dissasemble and decode most (if not all) of the assembly and I was able to find multiple errors in the Z80SIO implementation, signal mappings and FLASH memory implementation. &lt;br /&gt;
** Emulator now boots, but there are still errors related to FLASH init/load/save and hange situation when data is recieved. Guessing interrupt handling in the emulated 8085 CPU.&lt;br /&gt;
** Also, keyboard mapping of _all_ TDV keys not implemented yet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Added TD2200 support directly in the emulators &amp;quot;graphic&amp;quot; mode&lt;br /&gt;
** Decoding ESC sequences and sending ESQ sequences based on TDV manuals describing some of them. Adding in som VT100 emulation to make the rest work. Mapping special keys (arrow keys) to send ESC codes.&lt;br /&gt;
** YouTube video showing TDV emulation running S3-CONF program under SINTRAN [https://youtu.be/-DP_Q-nxQQw]&lt;br /&gt;
&lt;br /&gt;
==ND-110 Compact==&lt;br /&gt;
&lt;br /&gt;
I have beeen so lucky that I have gotten a real ND-110/CX Compact with the following HW configuration&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ PCB Description Print&lt;br /&gt;
|-&lt;br /&gt;
! SLOT !! ID !! PCB !! Description !! Print and ECO&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 324113 || PCB 3042 || 1 MB Memory || Print A ECO D&lt;br /&gt;
|-&lt;br /&gt;
| 11 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 324534 || PCB 3094 || ETHERNET IF. II || Print C&lt;br /&gt;
|-&lt;br /&gt;
| 9 || 324011 || PCB 3111 || 8 TERM IF W/FIFO || Print C&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 324012 || PCB 3112 || 8&amp;quot; + 5 1/4 FLOPPY || Print B&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 322671 || PCB 3041 || N-100 ST 506 DISK CONTR. || Print E ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO K&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 322623 || PCB 3023 || ND100 MEGALINK IF || Print D ECO G&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 322615 || PCB 3015 || ND100 HDLC W/A.LO || Print &amp;lt;unknown&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 322615 || PCB 3015 || ND100 HDLC W/A.LO. || Print S ECO V&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 324137 || PCB 3090 || ND110 - CPU&amp;amp;MM 32B || Print K ECO R&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 322672 || PCB 3042 || N100 2MB RAM || Print A ECO D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The machine also has a Micropolis 1325 ST506 74MB drive. Sadly there is some issues with reading data from it.&lt;br /&gt;
* Reading head 0-3 works on all tracks&lt;br /&gt;
* Reading head 4-7 fails on all tracks with error &amp;quot;Address mismatch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After buying an MFM emulator from [https://www.pdp8online.com/mfm/] and getting help and support, including firmware extension to identify and read ND disk format I have been able to partially dump the contents of the disk.&lt;br /&gt;
The challenge is that the heads 4-7 is reading the &amp;quot;next&amp;quot; track because they are misaligned - and I need to add some HW to try to make the disk adjust how it reads it heads - as described here [http://www.pdp8online.com/mfm/head_servo/]&lt;br /&gt;
&lt;br /&gt;
Using the MFM emulator I am now able to boot the ND-100/CX machine from an disk image I have prepared in my emulator.&lt;br /&gt;
&lt;br /&gt;
I also got a TDV 1200 terminal, which upon startup had a capacitor in the powersupply to burn. I have replaced the capacitors in the powersupply, but there is some unstability that I believe is related to heat (read:old chips - or more capacitors that needs to be replaced)&lt;br /&gt;
Short YouTube video showing the problem: [https://youtube.com/shorts/uek6hpqzYvE]&lt;br /&gt;
&lt;br /&gt;
To connect to the ND machine I use a serial-to-current loop adapter i bought from Mouser. [https://no.mouser.com/ProductDetail/Advantech/BB-232CL9R?qs=zW32dvEIR3vYFmSSVfM7ig%3D%3D&amp;amp;countryCode=NO&amp;amp;currencyCode=NOK]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ND-100 Satellite==&lt;br /&gt;
&lt;br /&gt;
I recently inherited a ND-100 Satellite [https://www.ndwiki.org/wiki/ND-100_Satellite_14.16796] that I am trying to get into working condition. &lt;br /&gt;
The MFM HDD seems to be completely filled with bad sectors, so I am unsure if I can recover that - I will try to get it to boot from an MFM emulator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sources==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=File:Tdv2215-config.jpg&amp;diff=7718</id>
		<title>File:Tdv2215-config.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=File:Tdv2215-config.jpg&amp;diff=7718"/>
		<updated>2025-07-11T15:42:26Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Screenshot of the TDV 2215 configuration page from a beta-release of the emulator for Windows and Linux.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Screenshot of the TDV 2215 configuration page from a beta-release of the emulator for Windows and Linux.&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{self|cc-by-sa-3.0|author={{Userlink}}}}&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=Talk:ND100_emulator_project&amp;diff=7671</id>
		<title>Talk:ND100 emulator project</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=Talk:ND100_emulator_project&amp;diff=7671"/>
		<updated>2025-05-14T14:29:43Z</updated>

		<summary type="html">&lt;p&gt;RHansen: fixed link to nd100x&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Current status ===&lt;br /&gt;
* Unfortunately, there hasn&#039;t been any activity here (or on the dead mailing list) since Roger&#039;s post in 2016. [[User:Tingo|Torfinn]] ([[User talk:Tingo|talk]]) 19:53, 10 October 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
* Revived, and active. /[[User:Roger|Roger]] ([[User talk:Roger|talk]]) 20:52, 29 July 2016 (UTC)&lt;br /&gt;
* Possibly thinking of putting it on github or somewhere public with issue tracker functionality etc. Will look into it.&lt;br /&gt;
* ATM working on floppy code, trying to get that to pass tests, once that is done floppy boot. [[User:Roger|Roger]] ([[User talk:Roger|talk]]) 23:22, 12 August 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[Talk:ND100_emulator_project/Archived1|Archived]] old version of talk page to remove clutter, mostly about stuff that&lt;br /&gt;
is already solved or irrelevant at the moment.&lt;br /&gt;
&lt;br /&gt;
=== Re. Known Bugs ===&lt;br /&gt;
&lt;br /&gt;
Do you have any more info on the undocumented instructions?? I seem to have hit an undocumented IOX as well (IOX 3).&lt;br /&gt;
[[User:Roger|Roger]] 07:29, 2 May 2011 (AWST)&lt;br /&gt;
&lt;br /&gt;
:No success yet with the undocumented instructions. I tried to run 142700 through the disassembler in BRF-LINKER and BRF-EDITOR, but they didn&#039;t know it (I used that method successfully to get on the right track for the undocumented [[IOT]], for example). Did you hit IOX 3 in the test program? Devices below 4 are the only ones which shouldn&#039;t ever exist, so maybe that IOX 3 is a test by iteself, to trigger an IOX error interrupt on level 14? -- [[User:TArntsen|TArntsen]] 09:10, 2 May 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
::Found it through running CONFIGURATIO-C08, it seems there is something called a Rack Controller. No more details yet though. -- [[User:Roger|Roger]] 01:10, 9 May 2011 (AWST)&lt;br /&gt;
&lt;br /&gt;
Well, its tested very early, as the first try with 142700. I have implemented both Illegal instruction and IOX error, so that is not a problem, but the way it&#039;s called very early in the test program sort of hints that it&#039;s checking if somethings available. I was also thinking of either things on NORD1/NORD10 or ND120.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Update: 142700 instruction:&#039;&#039;&#039;. 142700 is the [[GECO]] instruction! GECO, Geophysical Company of Norway (now it&#039;s been through a couple of mergers and is called something else) used to have lots of Norsk Data hardware for seismic processing. They also had ND computers on board (several friends and acquaintances of mine (including a former ND tech) used to work on those ships). They acquired a permanently assigned user-specified instruction. INSTRUCTION-B simply tests for its existence by doing a TRA IIC, then checks for value 4 which means &#039;illegal instruction&#039;. I had forgotten about it, there&#039;s a writeup somewhere about the GECO instruction story but I don&#039;t have the reference handy. However, from what I can figure out from SINTRAN it looks like the instruction is part of the &#039;standard&#039; CPU instruction set after some point, so checking for GECO is part of the code which tries to deduce exactly which CPU this is. The sequence (in SINTRAN) goes something like this:&lt;br /&gt;
 Check if 32-bit or 48-bit floating point (standard NLZ trick mentioned in docu) &lt;br /&gt;
 Check if NORD-10 or ND-100 (there&#039;s a bit for that)&lt;br /&gt;
 (Now it tries to deduce if the commercial (CE) instruction set is there):&lt;br /&gt;
 Here it does some trick with BFILL which I haven&#039;t figured out yet. NB: It _could_ affect the below.&lt;br /&gt;
  (Found it: BFILL simply installs a short level 14 illegal instruction catch handler.)&lt;br /&gt;
 Then it checks for GECO.&lt;br /&gt;
   If GECO is not found, it skips the rest!&lt;br /&gt;
 Else&lt;br /&gt;
   Check for 16 PITS (the alternative is 4 PITS, more common in older systems)&lt;br /&gt;
   Check if VERSN exists, if yes then it&#039;s at least an ND-110&lt;br /&gt;
   If yes, use VERSN to figure out if it&#039;s an ND-120&lt;br /&gt;
 Endif&lt;br /&gt;
 (This is where we end if no GECO).&lt;br /&gt;
 Check if there&#039;s an ND-500.&lt;br /&gt;
&lt;br /&gt;
:Well, there may be more to come if I find out more. -- [[User:TArntsen|TArntsen]] 01:09, 15 May 2011 (CEST)&lt;br /&gt;
::I love this GECO-story! I think it would fit well as a [[Main Page]] Did you know...  /[[User:Mike|Mike]] 01:57, 16 May 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Re. Wanted Information ===&lt;br /&gt;
INSTRUCTION-B has a BCD test but it seems to be a dummy. I haven&#039;t implemented BCD tests in my emulator so it shouldn&#039;t have passed everything, but it does. And executing the BCD test individually just spits out &#039;BINARY CODED DECIMAL (ADDD...)  (NIY)  == END OF TEST ==&#039; (plus levels) as with RUN. -- [[User:TArntsen|TArntsen]] 19:02, 14 May 2011 (CEST)&lt;br /&gt;
:Actually - scratch that. My emulator is in NORD-10 mode when it runs that BCD test, so it makes sense that INSTRUCTION-B handles it as dummy there at least. So, is it dummy also for ND-100/CE ? -- [[User:TArntsen|TArntsen]] 12:28, 15 May 2011 (CEST)&lt;br /&gt;
:&#039;&#039;&#039;Update:&#039;&#039;&#039; INSTRUCTION-B seems to use [[GECO]] (142700) to test for CPU version just like SINTRAN, so without the instruction it won&#039;t even try CX operations like [[CLEPT]], or, presumably, CE instructions (my emulator doesn&#039;t have enough of these to be completely sure, but that&#039;s what it looks like). So, to conclude, implement a dummy 142700 (just increment P, fetch new instruction, no IIC update, and it&#039;ll pass through) and INSTRUCTION-B may start working through the CE/BCD tests. -- [[User:TArntsen|TArntsen]] 10:52, 16 May 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
INSTRUCTION-B detects nd100em as ND100/CX with MMS I, and runs through some of the CE tests, like stack (INIT,ENTR,LEAVE,ELEAV).&lt;br /&gt;
There seems to be something listed in the long documentation inside INSTRUCTION-B thats called ND100S4, and might be the GECO one.&lt;br /&gt;
Will put in a stub for it anyway, and play around.&lt;br /&gt;
Anyway, this is what nd100em is detected as currently, it is set as configurable though, although not quite handled that way fully yet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
COMPUTER: ND-100/CX  48 BIT FLOATING FORMAT WITH FAST CYCLE.&lt;br /&gt;
ALD     : 0&lt;br /&gt;
PAGING  : MEMORY MANAGEMENT I&lt;br /&gt;
CACHE   :  NO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ND100 floating point ===&lt;br /&gt;
Issue is solved in FAD, FDV has not been fixed, probably need to do long division myself to catch the loss of accuracy and thus setting of lsb.&lt;br /&gt;
Note that ND-100 does this before final shifting adjustment if you get a carry, thus wiping it.&lt;br /&gt;
&lt;br /&gt;
I just found this on the ND-12 page....&lt;br /&gt;
:The rounding algorithm for floating point differs between NORD-10 and NORD-12. On NORD-12 there is no TG (Rounding) flip-flop in the Status Register (bit 1 in Status on NORD-1), and for NORD-12 all floating point results are truncated. On the NORD-10 the least significant bit in the result is forced to one if the result could not be exactly represented. For both the NORD-10 and NORD-12 all integers up to 232-1 will be exactly represented in floating point format, and all results to this limit will also be exact.&lt;br /&gt;
: I wonder if this is the issue, I will be checking it as soon as I get back coding.... [[User:Roger|Roger]] ([[User talk:Roger|talk]]) 13:40, 15 July 2016 (UTC)&lt;br /&gt;
::I also noticed that when I read the document some time ago, and yes I think that&#039;s exactly it. The rounding to 1 we discussed is, as far as I can see, perfectly explained by the &amp;quot;..forced to one if the result could not be exactly represented&amp;quot; mechanism. -- [[User:TArntsen|TArntsen]] ([[User talk:TArntsen|talk]]) 12:47, 17 July 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Mailinglist down again ==&lt;br /&gt;
&lt;br /&gt;
Will try and get sorted sometime in the next week and sit down and fix mailinglist IF there is any interest in its revival.&lt;br /&gt;
: Is the mailinglist working now? I don&#039;t get any error messages when posting to it (but I don&#039;t get any replies to my messages either...) --[[User:Tingo|Torfinn]] ([[User talk:Tingo|talk]]) 20:06, 20 September 2016 (UTC)&lt;br /&gt;
: Still down, poke me in a week or so if I haven&#039;t fixed it by then... It&#039;s been on my low prio list.... [[User:Roger|Roger]] ([[User talk:Roger|talk]]) 03:31, 21 September 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
== {{done}}INSTRUCTION-C ==&lt;br /&gt;
&lt;br /&gt;
In case it is still needed, INSTRUCTION-C (INSTRUCTION-C03:TEST) is available on the image of the first floppy in [[ND-210523G]]. If &#039;:TEST&#039; is a new file format (as opposed to a renamed &#039;:BPUN&#039;) I don&#039;t know anything about it. --[[User:Tingo|Torfinn]] ([[User talk:Tingo|talk]]) 18:47, 26 July 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yes I have just  written a program that reads out files from the dd images, so I can testrun bpun files etc. Just started looking through the floppy images to see what I can use. /[[User:Roger|Roger]] ([[User talk:Roger|talk]]) 11:20, 27 July 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;floppy.h&amp;quot; missing? ==&lt;br /&gt;
&lt;br /&gt;
It looks like a file &amp;quot;floppy.h&amp;quot; is missing from the tarballs (v0.2.2, v0.2.3 and v0.2.4) and the repository. Or am I wrong? v0.2.4 compiles if I comment it out in floppy.c --[[User:Tingo|Torfinn]] ([[User talk:Tingo|talk]]) 20:09, 20 September 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yes, just noted now when I downloaded the tarball separately and compiled. Missed to add that one to git, so it slipped through. Will be working on the emulator again later this week, so will try and get a new tarball up by the weekend. [[User:Roger|Roger]] ([[User talk:Roger|talk]]) 03:27, 21 September 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
== git repository unavailable ==&lt;br /&gt;
&lt;br /&gt;
The git repository is unavailable now. It looks like the domain expired. --[[User:Tingo|Torfinn]] ([[User talk:Tingo|talk]]) 07:32, 18 October 2016 (UTC)&lt;br /&gt;
: I put a copy of the last release (0.2.4) up on Github https://github.com/tingox/nd100em  At least then the code is available. --[[User:Tingo|Torfinn]] ([[User talk:Tingo|talk]]) 19:29, 27 February 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== other emulators ==&lt;br /&gt;
&lt;br /&gt;
Other ND-100 emulators:&lt;br /&gt;
* [https://github.com/HackerCorpLabs/nd100x nd100x] - This project continues from nd100em version 0.2.4 and includes significant enhancements. Boots SINTRAN on a varity of devices.&lt;br /&gt;
* [[User talk:CVS|NDSim]] by [[User:CVS|CVS]]. Binary release for Windows available at [https://github.com/CAVISU/NDsim]&lt;br /&gt;
* [[User:RHansen#ND-100_Emulator|ND-100 Emulator]] by [[User:RHansen|RHansen]]&lt;br /&gt;
* initial [https://github.com/open-simh/simh/tree/master/ND100 ND100] support in [https://github.com/open-simh/simh Open SIMH] by [https://github.com/ragge0 ragge],&lt;br /&gt;
* ND-10 Microcode emulator written in C by Ragge [https://github.com/ragge0/norsk_data]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=Talk:ND100_emulator_project&amp;diff=7670</id>
		<title>Talk:ND100 emulator project</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=Talk:ND100_emulator_project&amp;diff=7670"/>
		<updated>2025-05-14T14:27:18Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Added nd100x&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Current status ===&lt;br /&gt;
* Unfortunately, there hasn&#039;t been any activity here (or on the dead mailing list) since Roger&#039;s post in 2016. [[User:Tingo|Torfinn]] ([[User talk:Tingo|talk]]) 19:53, 10 October 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
* Revived, and active. /[[User:Roger|Roger]] ([[User talk:Roger|talk]]) 20:52, 29 July 2016 (UTC)&lt;br /&gt;
* Possibly thinking of putting it on github or somewhere public with issue tracker functionality etc. Will look into it.&lt;br /&gt;
* ATM working on floppy code, trying to get that to pass tests, once that is done floppy boot. [[User:Roger|Roger]] ([[User talk:Roger|talk]]) 23:22, 12 August 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[Talk:ND100_emulator_project/Archived1|Archived]] old version of talk page to remove clutter, mostly about stuff that&lt;br /&gt;
is already solved or irrelevant at the moment.&lt;br /&gt;
&lt;br /&gt;
=== Re. Known Bugs ===&lt;br /&gt;
&lt;br /&gt;
Do you have any more info on the undocumented instructions?? I seem to have hit an undocumented IOX as well (IOX 3).&lt;br /&gt;
[[User:Roger|Roger]] 07:29, 2 May 2011 (AWST)&lt;br /&gt;
&lt;br /&gt;
:No success yet with the undocumented instructions. I tried to run 142700 through the disassembler in BRF-LINKER and BRF-EDITOR, but they didn&#039;t know it (I used that method successfully to get on the right track for the undocumented [[IOT]], for example). Did you hit IOX 3 in the test program? Devices below 4 are the only ones which shouldn&#039;t ever exist, so maybe that IOX 3 is a test by iteself, to trigger an IOX error interrupt on level 14? -- [[User:TArntsen|TArntsen]] 09:10, 2 May 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
::Found it through running CONFIGURATIO-C08, it seems there is something called a Rack Controller. No more details yet though. -- [[User:Roger|Roger]] 01:10, 9 May 2011 (AWST)&lt;br /&gt;
&lt;br /&gt;
Well, its tested very early, as the first try with 142700. I have implemented both Illegal instruction and IOX error, so that is not a problem, but the way it&#039;s called very early in the test program sort of hints that it&#039;s checking if somethings available. I was also thinking of either things on NORD1/NORD10 or ND120.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Update: 142700 instruction:&#039;&#039;&#039;. 142700 is the [[GECO]] instruction! GECO, Geophysical Company of Norway (now it&#039;s been through a couple of mergers and is called something else) used to have lots of Norsk Data hardware for seismic processing. They also had ND computers on board (several friends and acquaintances of mine (including a former ND tech) used to work on those ships). They acquired a permanently assigned user-specified instruction. INSTRUCTION-B simply tests for its existence by doing a TRA IIC, then checks for value 4 which means &#039;illegal instruction&#039;. I had forgotten about it, there&#039;s a writeup somewhere about the GECO instruction story but I don&#039;t have the reference handy. However, from what I can figure out from SINTRAN it looks like the instruction is part of the &#039;standard&#039; CPU instruction set after some point, so checking for GECO is part of the code which tries to deduce exactly which CPU this is. The sequence (in SINTRAN) goes something like this:&lt;br /&gt;
 Check if 32-bit or 48-bit floating point (standard NLZ trick mentioned in docu) &lt;br /&gt;
 Check if NORD-10 or ND-100 (there&#039;s a bit for that)&lt;br /&gt;
 (Now it tries to deduce if the commercial (CE) instruction set is there):&lt;br /&gt;
 Here it does some trick with BFILL which I haven&#039;t figured out yet. NB: It _could_ affect the below.&lt;br /&gt;
  (Found it: BFILL simply installs a short level 14 illegal instruction catch handler.)&lt;br /&gt;
 Then it checks for GECO.&lt;br /&gt;
   If GECO is not found, it skips the rest!&lt;br /&gt;
 Else&lt;br /&gt;
   Check for 16 PITS (the alternative is 4 PITS, more common in older systems)&lt;br /&gt;
   Check if VERSN exists, if yes then it&#039;s at least an ND-110&lt;br /&gt;
   If yes, use VERSN to figure out if it&#039;s an ND-120&lt;br /&gt;
 Endif&lt;br /&gt;
 (This is where we end if no GECO).&lt;br /&gt;
 Check if there&#039;s an ND-500.&lt;br /&gt;
&lt;br /&gt;
:Well, there may be more to come if I find out more. -- [[User:TArntsen|TArntsen]] 01:09, 15 May 2011 (CEST)&lt;br /&gt;
::I love this GECO-story! I think it would fit well as a [[Main Page]] Did you know...  /[[User:Mike|Mike]] 01:57, 16 May 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Re. Wanted Information ===&lt;br /&gt;
INSTRUCTION-B has a BCD test but it seems to be a dummy. I haven&#039;t implemented BCD tests in my emulator so it shouldn&#039;t have passed everything, but it does. And executing the BCD test individually just spits out &#039;BINARY CODED DECIMAL (ADDD...)  (NIY)  == END OF TEST ==&#039; (plus levels) as with RUN. -- [[User:TArntsen|TArntsen]] 19:02, 14 May 2011 (CEST)&lt;br /&gt;
:Actually - scratch that. My emulator is in NORD-10 mode when it runs that BCD test, so it makes sense that INSTRUCTION-B handles it as dummy there at least. So, is it dummy also for ND-100/CE ? -- [[User:TArntsen|TArntsen]] 12:28, 15 May 2011 (CEST)&lt;br /&gt;
:&#039;&#039;&#039;Update:&#039;&#039;&#039; INSTRUCTION-B seems to use [[GECO]] (142700) to test for CPU version just like SINTRAN, so without the instruction it won&#039;t even try CX operations like [[CLEPT]], or, presumably, CE instructions (my emulator doesn&#039;t have enough of these to be completely sure, but that&#039;s what it looks like). So, to conclude, implement a dummy 142700 (just increment P, fetch new instruction, no IIC update, and it&#039;ll pass through) and INSTRUCTION-B may start working through the CE/BCD tests. -- [[User:TArntsen|TArntsen]] 10:52, 16 May 2011 (CEST)&lt;br /&gt;
&lt;br /&gt;
INSTRUCTION-B detects nd100em as ND100/CX with MMS I, and runs through some of the CE tests, like stack (INIT,ENTR,LEAVE,ELEAV).&lt;br /&gt;
There seems to be something listed in the long documentation inside INSTRUCTION-B thats called ND100S4, and might be the GECO one.&lt;br /&gt;
Will put in a stub for it anyway, and play around.&lt;br /&gt;
Anyway, this is what nd100em is detected as currently, it is set as configurable though, although not quite handled that way fully yet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
COMPUTER: ND-100/CX  48 BIT FLOATING FORMAT WITH FAST CYCLE.&lt;br /&gt;
ALD     : 0&lt;br /&gt;
PAGING  : MEMORY MANAGEMENT I&lt;br /&gt;
CACHE   :  NO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ND100 floating point ===&lt;br /&gt;
Issue is solved in FAD, FDV has not been fixed, probably need to do long division myself to catch the loss of accuracy and thus setting of lsb.&lt;br /&gt;
Note that ND-100 does this before final shifting adjustment if you get a carry, thus wiping it.&lt;br /&gt;
&lt;br /&gt;
I just found this on the ND-12 page....&lt;br /&gt;
:The rounding algorithm for floating point differs between NORD-10 and NORD-12. On NORD-12 there is no TG (Rounding) flip-flop in the Status Register (bit 1 in Status on NORD-1), and for NORD-12 all floating point results are truncated. On the NORD-10 the least significant bit in the result is forced to one if the result could not be exactly represented. For both the NORD-10 and NORD-12 all integers up to 232-1 will be exactly represented in floating point format, and all results to this limit will also be exact.&lt;br /&gt;
: I wonder if this is the issue, I will be checking it as soon as I get back coding.... [[User:Roger|Roger]] ([[User talk:Roger|talk]]) 13:40, 15 July 2016 (UTC)&lt;br /&gt;
::I also noticed that when I read the document some time ago, and yes I think that&#039;s exactly it. The rounding to 1 we discussed is, as far as I can see, perfectly explained by the &amp;quot;..forced to one if the result could not be exactly represented&amp;quot; mechanism. -- [[User:TArntsen|TArntsen]] ([[User talk:TArntsen|talk]]) 12:47, 17 July 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Mailinglist down again ==&lt;br /&gt;
&lt;br /&gt;
Will try and get sorted sometime in the next week and sit down and fix mailinglist IF there is any interest in its revival.&lt;br /&gt;
: Is the mailinglist working now? I don&#039;t get any error messages when posting to it (but I don&#039;t get any replies to my messages either...) --[[User:Tingo|Torfinn]] ([[User talk:Tingo|talk]]) 20:06, 20 September 2016 (UTC)&lt;br /&gt;
: Still down, poke me in a week or so if I haven&#039;t fixed it by then... It&#039;s been on my low prio list.... [[User:Roger|Roger]] ([[User talk:Roger|talk]]) 03:31, 21 September 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
== {{done}}INSTRUCTION-C ==&lt;br /&gt;
&lt;br /&gt;
In case it is still needed, INSTRUCTION-C (INSTRUCTION-C03:TEST) is available on the image of the first floppy in [[ND-210523G]]. If &#039;:TEST&#039; is a new file format (as opposed to a renamed &#039;:BPUN&#039;) I don&#039;t know anything about it. --[[User:Tingo|Torfinn]] ([[User talk:Tingo|talk]]) 18:47, 26 July 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yes I have just  written a program that reads out files from the dd images, so I can testrun bpun files etc. Just started looking through the floppy images to see what I can use. /[[User:Roger|Roger]] ([[User talk:Roger|talk]]) 11:20, 27 July 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;floppy.h&amp;quot; missing? ==&lt;br /&gt;
&lt;br /&gt;
It looks like a file &amp;quot;floppy.h&amp;quot; is missing from the tarballs (v0.2.2, v0.2.3 and v0.2.4) and the repository. Or am I wrong? v0.2.4 compiles if I comment it out in floppy.c --[[User:Tingo|Torfinn]] ([[User talk:Tingo|talk]]) 20:09, 20 September 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yes, just noted now when I downloaded the tarball separately and compiled. Missed to add that one to git, so it slipped through. Will be working on the emulator again later this week, so will try and get a new tarball up by the weekend. [[User:Roger|Roger]] ([[User talk:Roger|talk]]) 03:27, 21 September 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
== git repository unavailable ==&lt;br /&gt;
&lt;br /&gt;
The git repository is unavailable now. It looks like the domain expired. --[[User:Tingo|Torfinn]] ([[User talk:Tingo|talk]]) 07:32, 18 October 2016 (UTC)&lt;br /&gt;
: I put a copy of the last release (0.2.4) up on Github https://github.com/tingox/nd100em  At least then the code is available. --[[User:Tingo|Torfinn]] ([[User talk:Tingo|talk]]) 19:29, 27 February 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== other emulators ==&lt;br /&gt;
&lt;br /&gt;
Other ND-100 emulators:&lt;br /&gt;
* nd100x - This project continues from nd100em version 0.2.4 and includes significant enhancements. Boots SINTRAN on a varity of devices [https://github.com/HackerCorpLabs/nd100x]&lt;br /&gt;
* [[User talk:CVS|NDSim]] by [[User:CVS|CVS]]. Binary release for Windows available at [https://github.com/CAVISU/NDsim]&lt;br /&gt;
* [[User:RHansen#ND-100_Emulator|ND-100 Emulator]] by [[User:RHansen|RHansen]]&lt;br /&gt;
* initial [https://github.com/open-simh/simh/tree/master/ND100 ND100] support in [https://github.com/open-simh/simh Open SIMH] by [https://github.com/ragge0 ragge],&lt;br /&gt;
* ND-10 Microcode emulator written in C by Ragge [https://github.com/ragge0/norsk_data]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-10624A&amp;diff=7669</id>
		<title>ND-10624A</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-10624A&amp;diff=7669"/>
		<updated>2025-05-09T11:43:54Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Added images of SVGA Adventure startup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ND-GAMES for ND-100 / NORD-10.&lt;br /&gt;
{{Stub}}&lt;br /&gt;
== Description ==&lt;br /&gt;
Have some fun with ND computers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
The following are required in order to use this product.&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
NORD-10 or ND-100 computer.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
Operating system: SINTRAN III VS / VSE / VSX&lt;br /&gt;
== Documentation ==&lt;br /&gt;
PD- or PI-sheet:&lt;br /&gt;
* Program Description ND-10624A&lt;br /&gt;
Manual(s):&lt;br /&gt;
* {{ND-doc|}}&lt;br /&gt;
The file INFO-SPILL.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Log in as SYSTEM&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-director,,floppy-disc-1,0&lt;br /&gt;
&lt;br /&gt;
@(nd-106:floppy-user)install-games&lt;br /&gt;
&lt;br /&gt;
Innstallasjon av ND&#039;s spillpakke:&lt;br /&gt;
ND-10624A, ND-GAMES for ND-100/NORD-10 Norsk versjon.&lt;br /&gt;
&lt;br /&gt;
Filer som kopieres markeres med ---&amp;gt;&lt;br /&gt;
Sp|rsm}l om innstallasjon av de enkelte spill besvares&lt;br /&gt;
med JA om man vil innstallere eller NEI hvis man ikke&lt;br /&gt;
vil innstallere dette spillet. Blankt svar betyr JA.&lt;br /&gt;
&lt;br /&gt;
     ---&amp;gt;  (GAMES)INFO-SPILL:TEXT&lt;br /&gt;
Skal DIGGER legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)DIGGER-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)DIGGER-BUILDING:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)DIGGER-DATA:DATA&lt;br /&gt;
Skal FIDO legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)FIDO-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)FIDO-KART:DATA&lt;br /&gt;
     ---&amp;gt;  (GAMES)FIDO-LISTE:DATA&lt;br /&gt;
Skal MACMAN legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)MACMAN-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)MACMAN-DATA:DATA&lt;br /&gt;
     ---&amp;gt;  (GAMES)MACMAN-LABS:SYMB&lt;br /&gt;
Skal TERRANOVA legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)TERRANOVA-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)TERRA-BOARD:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)TERRA-DATA:DATA&lt;br /&gt;
Skal SPILL legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)SPILL-48:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)SPILL-BRUKSANV:DATA&lt;br /&gt;
     ---&amp;gt;  (GAMES)SPILL-HANGMAN:DATA&lt;br /&gt;
Skal TRON legges inn?&lt;br /&gt;
     ---&amp;gt;  (GAMES)TRON-48-NO:PROG&lt;br /&gt;
Skal MASTERMIND legges inn?&lt;br /&gt;
     ---&amp;gt;  (GAMES)MASTERMIND-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)MASTERMIND-BRETT:DATA&lt;br /&gt;
Skal ORM legges inn?&lt;br /&gt;
     ---&amp;gt;  (GAMES)ORM:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)ORM-INTRO:TEXT&lt;br /&gt;
     ---&amp;gt;  PASCAL-ERR-J:SYMB&lt;br /&gt;
Skal ADVENTURE legges inn?&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-ADVENTURE:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-KOLOTEXT:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-OBJETEXT:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-STLOTEXT:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-TILFTEXT:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-DATAFIL:SYMB&lt;br /&gt;
&lt;br /&gt;
Ferdig!! - Disketten er frigjort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SVHA-Adventure  ==&lt;br /&gt;
[[File:Adv-1.png|200px|thumb|right|SVGA-Adventure startup screen]] &lt;br /&gt;
[[File:Adv-2.png|200px|thumb|right|SVGA-Adventure welcome screen]] &lt;br /&gt;
&lt;br /&gt;
SVGA-Adventure is a unique version of the classic Crowther/Woods Adventure, created by Svein Hansen and others in the early 1980s at NIT in Trondheim. This may be the first true adventure game created in Norway, so it is historically important.&lt;br /&gt;
&lt;br /&gt;
== Date ==&lt;br /&gt;
Date of release, production, revision.&lt;br /&gt;
&lt;br /&gt;
Date: 1984.04.02&lt;br /&gt;
&lt;br /&gt;
== Media ==&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Label from 8 inch floppy.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot;&amp;gt;&lt;br /&gt;
File:8 nd-10624a label IMG 20240526 185635544.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Images ===&lt;br /&gt;
Image of 8-inch floppy&lt;br /&gt;
* [[File:8 nd f17b nd-10624a.img.bz2]]&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
Errors on 8-inch floppy&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ fe read ibm -s:t=0-76 -o 8_nd_f17b_nd-10624a.img&lt;br /&gt;
Reading from: :d=0:s=0-1:t=0-76&lt;br /&gt;
Using GreaseWeazle with serial number GW00021E4D53381232004E4B35&lt;br /&gt;
Measuring rotational speed... 166.438ms&lt;br /&gt;
[..]&lt;br /&gt;
H.SS Tracks ---&amp;gt;&lt;br /&gt;
0. 0 ............................................................................B&lt;br /&gt;
0. 1 ............................................................................B&lt;br /&gt;
0. 2 ............................................................................B&lt;br /&gt;
0. 3 ............................................................................?&lt;br /&gt;
0. 4 ........................................................................X.C.B&lt;br /&gt;
0. 5 ...........................................................................X.&lt;br /&gt;
0. 6 ............................................................................B&lt;br /&gt;
0. 7 ............................................................................B&lt;br /&gt;
1. 0 .............................................................................&lt;br /&gt;
1. 1 .............................................................................&lt;br /&gt;
1. 2 .............................................................................&lt;br /&gt;
1. 3 .............................................................................&lt;br /&gt;
1. 4 .............................................................................&lt;br /&gt;
1. 5 .............................................................................&lt;br /&gt;
1. 6 .............................................................................&lt;br /&gt;
1. 7 .............................................................................&lt;br /&gt;
Good sectors: 1223/1232 (99%)&lt;br /&gt;
Missing sectors: 2/1232 (0%)&lt;br /&gt;
Bad sectors: 7/1232 (0%)&lt;br /&gt;
writing 77 tracks, 2 heads, 8 sectors, 1024 bytes per sector, 1232 kB total&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Files ====&lt;br /&gt;
List of files on 8-inch floppy image.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ndfs -t 8_nd_f17b_nd-10624a.img&lt;br /&gt;
Directory name            : ND-10624A&lt;br /&gt;
Filesystem image size     : 616 pages&lt;br /&gt;
Object file index pointer : 508 SI: 0x1 (indexed)&lt;br /&gt;
User file index pointer   : 510 SI: 0x1 (indexed)&lt;br /&gt;
Bit file pointer          : 306 SI: 0x0 (contiguous)&lt;br /&gt;
No. of unreserved pages   : 1&lt;br /&gt;
Files:&lt;br /&gt;
  0   0: I        8 pages     16384 bytes 1984-03-01 22:18:32 (FLOPPY-USER)INSTALL-GAMES-NO:PROG&lt;br /&gt;
  0   1: I       13 pages     26151 bytes 1984-03-01 22:18:44 (FLOPPY-USER)INFO-SPILL:TEXT&lt;br /&gt;
  0   2: I       15 pages     30208 bytes 1984-03-01 22:19:00 (FLOPPY-USER)DIGGER-32-NO:PROG&lt;br /&gt;
  0   3: I       15 pages     29184 bytes 1984-03-01 22:19:12 (FLOPPY-USER)DIGGER-48-NO:PROG&lt;br /&gt;
  0   4: I        5 pages      9256 bytes 1984-03-01 22:19:29 (FLOPPY-USER)DIGGER-BUILDING:SYMB&lt;br /&gt;
  0   5: I        1 page       1024 bytes 1984-03-01 22:19:41 (FLOPPY-USER)DIGGER-DATA:DATA&lt;br /&gt;
  0   6: I       14 pages     27648 bytes 1984-03-01 22:19:57 (FLOPPY-USER)FIDO-32-NO:PROG&lt;br /&gt;
  0   7: I       14 pages     27136 bytes 1984-03-01 22:20:09 (FLOPPY-USER)FIDO-48-NO:PROG&lt;br /&gt;
  0   8: I       15 pages     25202 bytes 1984-03-01 22:20:37 (FLOPPY-USER)FIDO-KART:DATA&lt;br /&gt;
  0   9: I        1 page       2048 bytes 1984-03-01 22:20:56 (FLOPPY-USER)FIDO-LISTE:DATA&lt;br /&gt;
  0  10: I       11 pages     22016 bytes 1984-03-01 22:21:30 (FLOPPY-USER)MACMAN-32-NO:PROG&lt;br /&gt;
  0  11: I       12 pages     22016 bytes 1984-03-01 22:21:41 (FLOPPY-USER)MACMAN-48-NO:PROG&lt;br /&gt;
  0  12: I        1 page       1024 bytes 1984-03-01 22:40:00 (FLOPPY-USER)MACMAN-DATA:DATA&lt;br /&gt;
  0  13: I        5 pages      9567 bytes 1984-03-01 22:22:34 (FLOPPY-USER)MACMAN-LABS:SYMB&lt;br /&gt;
  0  14: I       13 pages     25088 bytes 1984-03-01 22:23:04 (FLOPPY-USER)TERRANOVA-32-NO:PROG&lt;br /&gt;
  0  15: I       12 pages     23552 bytes 1984-03-01 22:23:18 (FLOPPY-USER)TERRANOVA-48-NO:PROG&lt;br /&gt;
  0  16: I        1 page       1541 bytes 1984-03-01 22:29:41 (FLOPPY-USER)TERRA-BOARD:SYMB&lt;br /&gt;
  0  17: I        1 page       1024 bytes 1984-03-01 22:30:06 (FLOPPY-USER)TERRA-DATA:DATA&lt;br /&gt;
  0  18: I       39 pages     79360 bytes 1984-03-01 22:30:22 (FLOPPY-USER)SPILL-32:PROG&lt;br /&gt;
  0  19: I       39 pages     79360 bytes 1984-03-01 22:30:59 (FLOPPY-USER)SPILL-48:PROG&lt;br /&gt;
  0  20: I       11 pages     22314 bytes 1984-03-01 22:31:40 (FLOPPY-USER)SPILL-BRUKSANV:DATA&lt;br /&gt;
  0  21: I        2 pages      2173 bytes 1984-03-01 22:32:01 (FLOPPY-USER)SPILL-HANGMAN:DATA&lt;br /&gt;
  0  22: I       12 pages     24064 bytes 1984-03-01 22:32:23 (FLOPPY-USER)TRON-32-NO:PROG&lt;br /&gt;
  0  23: I       12 pages     23040 bytes 1984-03-01 22:32:41 (FLOPPY-USER)TRON-48-NO:PROG&lt;br /&gt;
  0  24: I       23 pages     46592 bytes 1984-03-01 22:33:17 (FLOPPY-USER)MASTERMIND-32-NO:PROG&lt;br /&gt;
  0  25: I       21 pages     41984 bytes 1984-03-01 22:33:48 (FLOPPY-USER)MASTERMIND-48-NO:PROG&lt;br /&gt;
  0  26: I        1 page       1944 bytes 1984-03-01 22:34:17 (FLOPPY-USER)MASTERMIND-BRETT:DATA&lt;br /&gt;
  0  27: I       35 pages     70144 bytes 1984-03-01 22:34:32 (FLOPPY-USER)ORM:PROG&lt;br /&gt;
  0  28: I        1 page       1088 bytes 1984-03-01 22:35:20 (FLOPPY-USER)ORM-INTRO:TEXT&lt;br /&gt;
  0  29: I        5 pages      9458 bytes 1984-03-01 22:35:36 (FLOPPY-USER)DDBTABLES-D-C:VTM&lt;br /&gt;
  0  30: I        4 pages      7393 bytes 1984-03-01 22:35:51 (FLOPPY-USER)PASCAL-ERR-J:SYMB&lt;br /&gt;
  0  31: I       43 pages     87040 bytes 1984-03-01 22:36:16 (FLOPPY-USER)SVHA-ADVENTURE:PROG&lt;br /&gt;
  0  32: I       16 pages     31824 bytes 1984-03-01 22:37:25 (FLOPPY-USER)SVHA-KOLOTEXT:SYMB&lt;br /&gt;
  0  33: I       20 pages     40536 bytes 1984-03-01 22:37:54 (FLOPPY-USER)SVHA-OBJETEXT:SYMB&lt;br /&gt;
  0  34: I       18 pages     35496 bytes 1984-03-01 22:38:31 (FLOPPY-USER)SVHA-STLOTEXT:SYMB&lt;br /&gt;
  0  35: I       22 pages     43272 bytes 1984-03-01 22:39:05 (FLOPPY-USER)SVHA-TILFTEXT:SYMB&lt;br /&gt;
  0  36: I       18 pages     35932 bytes 1984-03-01 22:39:36 (FLOPPY-USER)SVHA-DATAFIL:SYMB&lt;br /&gt;
Directory size            : 611 pages&lt;br /&gt;
Bit file size             : 1 page &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related products ==&lt;br /&gt;
* [[ND-GAMES]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:ND product description]]&lt;br /&gt;
[[Category:ND-10624]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=File:Adv-2.png&amp;diff=7668</id>
		<title>File:Adv-2.png</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=File:Adv-2.png&amp;diff=7668"/>
		<updated>2025-05-09T11:39:19Z</updated>

		<summary type="html">&lt;p&gt;RHansen: SVHA-Adventure welcome screen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
SVHA-Adventure welcome screen&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{self|cc-by-sa-3.0|author={{Userlink}}}}&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=File:Adv-1.png&amp;diff=7667</id>
		<title>File:Adv-1.png</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=File:Adv-1.png&amp;diff=7667"/>
		<updated>2025-05-09T11:37:54Z</updated>

		<summary type="html">&lt;p&gt;RHansen: SVHA-Adventure startup screen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
SVHA-Adventure startup screen&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-10624A&amp;diff=7666</id>
		<title>ND-10624A</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-10624A&amp;diff=7666"/>
		<updated>2025-05-09T11:26:59Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Improved layout for install&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ND-GAMES for ND-100 / NORD-10.&lt;br /&gt;
{{Stub}}&lt;br /&gt;
== Description ==&lt;br /&gt;
Have some fun with ND computers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
The following are required in order to use this product.&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
NORD-10 or ND-100 computer.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
Operating system: SINTRAN III VS / VSE / VSX&lt;br /&gt;
== Documentation ==&lt;br /&gt;
PD- or PI-sheet:&lt;br /&gt;
* Program Description ND-10624A&lt;br /&gt;
Manual(s):&lt;br /&gt;
* {{ND-doc|}}&lt;br /&gt;
The file INFO-SPILL.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Log in as SYSTEM&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@enter-director,,floppy-disc-1,0&lt;br /&gt;
&lt;br /&gt;
@(nd-106:floppy-user)install-games&lt;br /&gt;
&lt;br /&gt;
Innstallasjon av ND&#039;s spillpakke:&lt;br /&gt;
ND-10624A, ND-GAMES for ND-100/NORD-10 Norsk versjon.&lt;br /&gt;
&lt;br /&gt;
Filer som kopieres markeres med ---&amp;gt;&lt;br /&gt;
Sp|rsm}l om innstallasjon av de enkelte spill besvares&lt;br /&gt;
med JA om man vil innstallere eller NEI hvis man ikke&lt;br /&gt;
vil innstallere dette spillet. Blankt svar betyr JA.&lt;br /&gt;
&lt;br /&gt;
     ---&amp;gt;  (GAMES)INFO-SPILL:TEXT&lt;br /&gt;
Skal DIGGER legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)DIGGER-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)DIGGER-BUILDING:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)DIGGER-DATA:DATA&lt;br /&gt;
Skal FIDO legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)FIDO-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)FIDO-KART:DATA&lt;br /&gt;
     ---&amp;gt;  (GAMES)FIDO-LISTE:DATA&lt;br /&gt;
Skal MACMAN legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)MACMAN-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)MACMAN-DATA:DATA&lt;br /&gt;
     ---&amp;gt;  (GAMES)MACMAN-LABS:SYMB&lt;br /&gt;
Skal TERRANOVA legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)TERRANOVA-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)TERRA-BOARD:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)TERRA-DATA:DATA&lt;br /&gt;
Skal SPILL legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)SPILL-48:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)SPILL-BRUKSANV:DATA&lt;br /&gt;
     ---&amp;gt;  (GAMES)SPILL-HANGMAN:DATA&lt;br /&gt;
Skal TRON legges inn?&lt;br /&gt;
     ---&amp;gt;  (GAMES)TRON-48-NO:PROG&lt;br /&gt;
Skal MASTERMIND legges inn?&lt;br /&gt;
     ---&amp;gt;  (GAMES)MASTERMIND-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)MASTERMIND-BRETT:DATA&lt;br /&gt;
Skal ORM legges inn?&lt;br /&gt;
     ---&amp;gt;  (GAMES)ORM:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)ORM-INTRO:TEXT&lt;br /&gt;
     ---&amp;gt;  PASCAL-ERR-J:SYMB&lt;br /&gt;
Skal ADVENTURE legges inn?&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-ADVENTURE:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-KOLOTEXT:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-OBJETEXT:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-STLOTEXT:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-TILFTEXT:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-DATAFIL:SYMB&lt;br /&gt;
&lt;br /&gt;
Ferdig!! - Disketten er frigjort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Date ==&lt;br /&gt;
Date of release, production, revision.&lt;br /&gt;
&lt;br /&gt;
Date: 1984.04.02&lt;br /&gt;
&lt;br /&gt;
== Media ==&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Label from 8 inch floppy.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot;&amp;gt;&lt;br /&gt;
File:8 nd-10624a label IMG 20240526 185635544.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Images ===&lt;br /&gt;
Image of 8-inch floppy&lt;br /&gt;
* [[File:8 nd f17b nd-10624a.img.bz2]]&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
Errors on 8-inch floppy&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ fe read ibm -s:t=0-76 -o 8_nd_f17b_nd-10624a.img&lt;br /&gt;
Reading from: :d=0:s=0-1:t=0-76&lt;br /&gt;
Using GreaseWeazle with serial number GW00021E4D53381232004E4B35&lt;br /&gt;
Measuring rotational speed... 166.438ms&lt;br /&gt;
[..]&lt;br /&gt;
H.SS Tracks ---&amp;gt;&lt;br /&gt;
0. 0 ............................................................................B&lt;br /&gt;
0. 1 ............................................................................B&lt;br /&gt;
0. 2 ............................................................................B&lt;br /&gt;
0. 3 ............................................................................?&lt;br /&gt;
0. 4 ........................................................................X.C.B&lt;br /&gt;
0. 5 ...........................................................................X.&lt;br /&gt;
0. 6 ............................................................................B&lt;br /&gt;
0. 7 ............................................................................B&lt;br /&gt;
1. 0 .............................................................................&lt;br /&gt;
1. 1 .............................................................................&lt;br /&gt;
1. 2 .............................................................................&lt;br /&gt;
1. 3 .............................................................................&lt;br /&gt;
1. 4 .............................................................................&lt;br /&gt;
1. 5 .............................................................................&lt;br /&gt;
1. 6 .............................................................................&lt;br /&gt;
1. 7 .............................................................................&lt;br /&gt;
Good sectors: 1223/1232 (99%)&lt;br /&gt;
Missing sectors: 2/1232 (0%)&lt;br /&gt;
Bad sectors: 7/1232 (0%)&lt;br /&gt;
writing 77 tracks, 2 heads, 8 sectors, 1024 bytes per sector, 1232 kB total&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Files ====&lt;br /&gt;
List of files on 8-inch floppy image.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ndfs -t 8_nd_f17b_nd-10624a.img&lt;br /&gt;
Directory name            : ND-10624A&lt;br /&gt;
Filesystem image size     : 616 pages&lt;br /&gt;
Object file index pointer : 508 SI: 0x1 (indexed)&lt;br /&gt;
User file index pointer   : 510 SI: 0x1 (indexed)&lt;br /&gt;
Bit file pointer          : 306 SI: 0x0 (contiguous)&lt;br /&gt;
No. of unreserved pages   : 1&lt;br /&gt;
Files:&lt;br /&gt;
  0   0: I        8 pages     16384 bytes 1984-03-01 22:18:32 (FLOPPY-USER)INSTALL-GAMES-NO:PROG&lt;br /&gt;
  0   1: I       13 pages     26151 bytes 1984-03-01 22:18:44 (FLOPPY-USER)INFO-SPILL:TEXT&lt;br /&gt;
  0   2: I       15 pages     30208 bytes 1984-03-01 22:19:00 (FLOPPY-USER)DIGGER-32-NO:PROG&lt;br /&gt;
  0   3: I       15 pages     29184 bytes 1984-03-01 22:19:12 (FLOPPY-USER)DIGGER-48-NO:PROG&lt;br /&gt;
  0   4: I        5 pages      9256 bytes 1984-03-01 22:19:29 (FLOPPY-USER)DIGGER-BUILDING:SYMB&lt;br /&gt;
  0   5: I        1 page       1024 bytes 1984-03-01 22:19:41 (FLOPPY-USER)DIGGER-DATA:DATA&lt;br /&gt;
  0   6: I       14 pages     27648 bytes 1984-03-01 22:19:57 (FLOPPY-USER)FIDO-32-NO:PROG&lt;br /&gt;
  0   7: I       14 pages     27136 bytes 1984-03-01 22:20:09 (FLOPPY-USER)FIDO-48-NO:PROG&lt;br /&gt;
  0   8: I       15 pages     25202 bytes 1984-03-01 22:20:37 (FLOPPY-USER)FIDO-KART:DATA&lt;br /&gt;
  0   9: I        1 page       2048 bytes 1984-03-01 22:20:56 (FLOPPY-USER)FIDO-LISTE:DATA&lt;br /&gt;
  0  10: I       11 pages     22016 bytes 1984-03-01 22:21:30 (FLOPPY-USER)MACMAN-32-NO:PROG&lt;br /&gt;
  0  11: I       12 pages     22016 bytes 1984-03-01 22:21:41 (FLOPPY-USER)MACMAN-48-NO:PROG&lt;br /&gt;
  0  12: I        1 page       1024 bytes 1984-03-01 22:40:00 (FLOPPY-USER)MACMAN-DATA:DATA&lt;br /&gt;
  0  13: I        5 pages      9567 bytes 1984-03-01 22:22:34 (FLOPPY-USER)MACMAN-LABS:SYMB&lt;br /&gt;
  0  14: I       13 pages     25088 bytes 1984-03-01 22:23:04 (FLOPPY-USER)TERRANOVA-32-NO:PROG&lt;br /&gt;
  0  15: I       12 pages     23552 bytes 1984-03-01 22:23:18 (FLOPPY-USER)TERRANOVA-48-NO:PROG&lt;br /&gt;
  0  16: I        1 page       1541 bytes 1984-03-01 22:29:41 (FLOPPY-USER)TERRA-BOARD:SYMB&lt;br /&gt;
  0  17: I        1 page       1024 bytes 1984-03-01 22:30:06 (FLOPPY-USER)TERRA-DATA:DATA&lt;br /&gt;
  0  18: I       39 pages     79360 bytes 1984-03-01 22:30:22 (FLOPPY-USER)SPILL-32:PROG&lt;br /&gt;
  0  19: I       39 pages     79360 bytes 1984-03-01 22:30:59 (FLOPPY-USER)SPILL-48:PROG&lt;br /&gt;
  0  20: I       11 pages     22314 bytes 1984-03-01 22:31:40 (FLOPPY-USER)SPILL-BRUKSANV:DATA&lt;br /&gt;
  0  21: I        2 pages      2173 bytes 1984-03-01 22:32:01 (FLOPPY-USER)SPILL-HANGMAN:DATA&lt;br /&gt;
  0  22: I       12 pages     24064 bytes 1984-03-01 22:32:23 (FLOPPY-USER)TRON-32-NO:PROG&lt;br /&gt;
  0  23: I       12 pages     23040 bytes 1984-03-01 22:32:41 (FLOPPY-USER)TRON-48-NO:PROG&lt;br /&gt;
  0  24: I       23 pages     46592 bytes 1984-03-01 22:33:17 (FLOPPY-USER)MASTERMIND-32-NO:PROG&lt;br /&gt;
  0  25: I       21 pages     41984 bytes 1984-03-01 22:33:48 (FLOPPY-USER)MASTERMIND-48-NO:PROG&lt;br /&gt;
  0  26: I        1 page       1944 bytes 1984-03-01 22:34:17 (FLOPPY-USER)MASTERMIND-BRETT:DATA&lt;br /&gt;
  0  27: I       35 pages     70144 bytes 1984-03-01 22:34:32 (FLOPPY-USER)ORM:PROG&lt;br /&gt;
  0  28: I        1 page       1088 bytes 1984-03-01 22:35:20 (FLOPPY-USER)ORM-INTRO:TEXT&lt;br /&gt;
  0  29: I        5 pages      9458 bytes 1984-03-01 22:35:36 (FLOPPY-USER)DDBTABLES-D-C:VTM&lt;br /&gt;
  0  30: I        4 pages      7393 bytes 1984-03-01 22:35:51 (FLOPPY-USER)PASCAL-ERR-J:SYMB&lt;br /&gt;
  0  31: I       43 pages     87040 bytes 1984-03-01 22:36:16 (FLOPPY-USER)SVHA-ADVENTURE:PROG&lt;br /&gt;
  0  32: I       16 pages     31824 bytes 1984-03-01 22:37:25 (FLOPPY-USER)SVHA-KOLOTEXT:SYMB&lt;br /&gt;
  0  33: I       20 pages     40536 bytes 1984-03-01 22:37:54 (FLOPPY-USER)SVHA-OBJETEXT:SYMB&lt;br /&gt;
  0  34: I       18 pages     35496 bytes 1984-03-01 22:38:31 (FLOPPY-USER)SVHA-STLOTEXT:SYMB&lt;br /&gt;
  0  35: I       22 pages     43272 bytes 1984-03-01 22:39:05 (FLOPPY-USER)SVHA-TILFTEXT:SYMB&lt;br /&gt;
  0  36: I       18 pages     35932 bytes 1984-03-01 22:39:36 (FLOPPY-USER)SVHA-DATAFIL:SYMB&lt;br /&gt;
Directory size            : 611 pages&lt;br /&gt;
Bit file size             : 1 page &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related products ==&lt;br /&gt;
* [[ND-GAMES]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:ND product description]]&lt;br /&gt;
[[Category:ND-10624]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=ND-10624A&amp;diff=7665</id>
		<title>ND-10624A</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=ND-10624A&amp;diff=7665"/>
		<updated>2025-05-09T10:57:39Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Added details on install&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ND-GAMES for ND-100 / NORD-10.&lt;br /&gt;
{{Stub}}&lt;br /&gt;
== Description ==&lt;br /&gt;
Have some fun with ND computers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
The following are required in order to use this product.&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
NORD-10 or ND-100 computer.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
Operating system: SINTRAN III VS / VSE / VSX&lt;br /&gt;
== Documentation ==&lt;br /&gt;
PD- or PI-sheet:&lt;br /&gt;
* Program Description ND-10624A&lt;br /&gt;
Manual(s):&lt;br /&gt;
* {{ND-doc|}}&lt;br /&gt;
The file INFO-SPILL.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Log in as SYSTEM&lt;br /&gt;
&lt;br /&gt;
@enter-director,,floppy-disc-1,0&lt;br /&gt;
&lt;br /&gt;
@(nd-106:floppy-user)install-games&lt;br /&gt;
&lt;br /&gt;
Innstallasjon av ND&#039;s spillpakke:&lt;br /&gt;
ND-10624A, ND-GAMES for ND-100/NORD-10 Norsk versjon.&lt;br /&gt;
&lt;br /&gt;
Filer som kopieres markeres med ---&amp;gt;&lt;br /&gt;
Sp|rsm}l om innstallasjon av de enkelte spill besvares&lt;br /&gt;
med JA om man vil innstallere eller NEI hvis man ikke&lt;br /&gt;
vil innstallere dette spillet. Blankt svar betyr JA.&lt;br /&gt;
&lt;br /&gt;
     ---&amp;gt;  (GAMES)INFO-SPILL:TEXT&lt;br /&gt;
Skal DIGGER legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)DIGGER-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)DIGGER-BUILDING:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)DIGGER-DATA:DATA&lt;br /&gt;
Skal FIDO legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)FIDO-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)FIDO-KART:DATA&lt;br /&gt;
     ---&amp;gt;  (GAMES)FIDO-LISTE:DATA&lt;br /&gt;
Skal MACMAN legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)MACMAN-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)MACMAN-DATA:DATA&lt;br /&gt;
     ---&amp;gt;  (GAMES)MACMAN-LABS:SYMB&lt;br /&gt;
Skal TERRANOVA legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)TERRANOVA-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)TERRA-BOARD:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)TERRA-DATA:DATA&lt;br /&gt;
Skal SPILL legges inn? j&lt;br /&gt;
     ---&amp;gt;  (GAMES)SPILL-48:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)SPILL-BRUKSANV:DATA&lt;br /&gt;
     ---&amp;gt;  (GAMES)SPILL-HANGMAN:DATA&lt;br /&gt;
Skal TRON legges inn?&lt;br /&gt;
     ---&amp;gt;  (GAMES)TRON-48-NO:PROG&lt;br /&gt;
Skal MASTERMIND legges inn?&lt;br /&gt;
     ---&amp;gt;  (GAMES)MASTERMIND-48-NO:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)MASTERMIND-BRETT:DATA&lt;br /&gt;
Skal ORM legges inn?&lt;br /&gt;
     ---&amp;gt;  (GAMES)ORM:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)ORM-INTRO:TEXT&lt;br /&gt;
     ---&amp;gt;  PASCAL-ERR-J:SYMB&lt;br /&gt;
Skal ADVENTURE legges inn?&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-ADVENTURE:PROG&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-KOLOTEXT:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-OBJETEXT:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-STLOTEXT:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-TILFTEXT:SYMB&lt;br /&gt;
     ---&amp;gt;  (GAMES)SVHA-DATAFIL:SYMB&lt;br /&gt;
&lt;br /&gt;
Ferdig!! - Disketten er frigjort&lt;br /&gt;
&lt;br /&gt;
== Date ==&lt;br /&gt;
Date of release, production, revision.&lt;br /&gt;
&lt;br /&gt;
Date: 1984.04.02&lt;br /&gt;
&lt;br /&gt;
== Media ==&lt;br /&gt;
=== Labels ===&lt;br /&gt;
Label from 8 inch floppy.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot;&amp;gt;&lt;br /&gt;
File:8 nd-10624a label IMG 20240526 185635544.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Images ===&lt;br /&gt;
Image of 8-inch floppy&lt;br /&gt;
* [[File:8 nd f17b nd-10624a.img.bz2]]&lt;br /&gt;
&lt;br /&gt;
==== Errors ====&lt;br /&gt;
Errors on 8-inch floppy&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ fe read ibm -s:t=0-76 -o 8_nd_f17b_nd-10624a.img&lt;br /&gt;
Reading from: :d=0:s=0-1:t=0-76&lt;br /&gt;
Using GreaseWeazle with serial number GW00021E4D53381232004E4B35&lt;br /&gt;
Measuring rotational speed... 166.438ms&lt;br /&gt;
[..]&lt;br /&gt;
H.SS Tracks ---&amp;gt;&lt;br /&gt;
0. 0 ............................................................................B&lt;br /&gt;
0. 1 ............................................................................B&lt;br /&gt;
0. 2 ............................................................................B&lt;br /&gt;
0. 3 ............................................................................?&lt;br /&gt;
0. 4 ........................................................................X.C.B&lt;br /&gt;
0. 5 ...........................................................................X.&lt;br /&gt;
0. 6 ............................................................................B&lt;br /&gt;
0. 7 ............................................................................B&lt;br /&gt;
1. 0 .............................................................................&lt;br /&gt;
1. 1 .............................................................................&lt;br /&gt;
1. 2 .............................................................................&lt;br /&gt;
1. 3 .............................................................................&lt;br /&gt;
1. 4 .............................................................................&lt;br /&gt;
1. 5 .............................................................................&lt;br /&gt;
1. 6 .............................................................................&lt;br /&gt;
1. 7 .............................................................................&lt;br /&gt;
Good sectors: 1223/1232 (99%)&lt;br /&gt;
Missing sectors: 2/1232 (0%)&lt;br /&gt;
Bad sectors: 7/1232 (0%)&lt;br /&gt;
writing 77 tracks, 2 heads, 8 sectors, 1024 bytes per sector, 1232 kB total&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Files ====&lt;br /&gt;
List of files on 8-inch floppy image.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ndfs -t 8_nd_f17b_nd-10624a.img&lt;br /&gt;
Directory name            : ND-10624A&lt;br /&gt;
Filesystem image size     : 616 pages&lt;br /&gt;
Object file index pointer : 508 SI: 0x1 (indexed)&lt;br /&gt;
User file index pointer   : 510 SI: 0x1 (indexed)&lt;br /&gt;
Bit file pointer          : 306 SI: 0x0 (contiguous)&lt;br /&gt;
No. of unreserved pages   : 1&lt;br /&gt;
Files:&lt;br /&gt;
  0   0: I        8 pages     16384 bytes 1984-03-01 22:18:32 (FLOPPY-USER)INSTALL-GAMES-NO:PROG&lt;br /&gt;
  0   1: I       13 pages     26151 bytes 1984-03-01 22:18:44 (FLOPPY-USER)INFO-SPILL:TEXT&lt;br /&gt;
  0   2: I       15 pages     30208 bytes 1984-03-01 22:19:00 (FLOPPY-USER)DIGGER-32-NO:PROG&lt;br /&gt;
  0   3: I       15 pages     29184 bytes 1984-03-01 22:19:12 (FLOPPY-USER)DIGGER-48-NO:PROG&lt;br /&gt;
  0   4: I        5 pages      9256 bytes 1984-03-01 22:19:29 (FLOPPY-USER)DIGGER-BUILDING:SYMB&lt;br /&gt;
  0   5: I        1 page       1024 bytes 1984-03-01 22:19:41 (FLOPPY-USER)DIGGER-DATA:DATA&lt;br /&gt;
  0   6: I       14 pages     27648 bytes 1984-03-01 22:19:57 (FLOPPY-USER)FIDO-32-NO:PROG&lt;br /&gt;
  0   7: I       14 pages     27136 bytes 1984-03-01 22:20:09 (FLOPPY-USER)FIDO-48-NO:PROG&lt;br /&gt;
  0   8: I       15 pages     25202 bytes 1984-03-01 22:20:37 (FLOPPY-USER)FIDO-KART:DATA&lt;br /&gt;
  0   9: I        1 page       2048 bytes 1984-03-01 22:20:56 (FLOPPY-USER)FIDO-LISTE:DATA&lt;br /&gt;
  0  10: I       11 pages     22016 bytes 1984-03-01 22:21:30 (FLOPPY-USER)MACMAN-32-NO:PROG&lt;br /&gt;
  0  11: I       12 pages     22016 bytes 1984-03-01 22:21:41 (FLOPPY-USER)MACMAN-48-NO:PROG&lt;br /&gt;
  0  12: I        1 page       1024 bytes 1984-03-01 22:40:00 (FLOPPY-USER)MACMAN-DATA:DATA&lt;br /&gt;
  0  13: I        5 pages      9567 bytes 1984-03-01 22:22:34 (FLOPPY-USER)MACMAN-LABS:SYMB&lt;br /&gt;
  0  14: I       13 pages     25088 bytes 1984-03-01 22:23:04 (FLOPPY-USER)TERRANOVA-32-NO:PROG&lt;br /&gt;
  0  15: I       12 pages     23552 bytes 1984-03-01 22:23:18 (FLOPPY-USER)TERRANOVA-48-NO:PROG&lt;br /&gt;
  0  16: I        1 page       1541 bytes 1984-03-01 22:29:41 (FLOPPY-USER)TERRA-BOARD:SYMB&lt;br /&gt;
  0  17: I        1 page       1024 bytes 1984-03-01 22:30:06 (FLOPPY-USER)TERRA-DATA:DATA&lt;br /&gt;
  0  18: I       39 pages     79360 bytes 1984-03-01 22:30:22 (FLOPPY-USER)SPILL-32:PROG&lt;br /&gt;
  0  19: I       39 pages     79360 bytes 1984-03-01 22:30:59 (FLOPPY-USER)SPILL-48:PROG&lt;br /&gt;
  0  20: I       11 pages     22314 bytes 1984-03-01 22:31:40 (FLOPPY-USER)SPILL-BRUKSANV:DATA&lt;br /&gt;
  0  21: I        2 pages      2173 bytes 1984-03-01 22:32:01 (FLOPPY-USER)SPILL-HANGMAN:DATA&lt;br /&gt;
  0  22: I       12 pages     24064 bytes 1984-03-01 22:32:23 (FLOPPY-USER)TRON-32-NO:PROG&lt;br /&gt;
  0  23: I       12 pages     23040 bytes 1984-03-01 22:32:41 (FLOPPY-USER)TRON-48-NO:PROG&lt;br /&gt;
  0  24: I       23 pages     46592 bytes 1984-03-01 22:33:17 (FLOPPY-USER)MASTERMIND-32-NO:PROG&lt;br /&gt;
  0  25: I       21 pages     41984 bytes 1984-03-01 22:33:48 (FLOPPY-USER)MASTERMIND-48-NO:PROG&lt;br /&gt;
  0  26: I        1 page       1944 bytes 1984-03-01 22:34:17 (FLOPPY-USER)MASTERMIND-BRETT:DATA&lt;br /&gt;
  0  27: I       35 pages     70144 bytes 1984-03-01 22:34:32 (FLOPPY-USER)ORM:PROG&lt;br /&gt;
  0  28: I        1 page       1088 bytes 1984-03-01 22:35:20 (FLOPPY-USER)ORM-INTRO:TEXT&lt;br /&gt;
  0  29: I        5 pages      9458 bytes 1984-03-01 22:35:36 (FLOPPY-USER)DDBTABLES-D-C:VTM&lt;br /&gt;
  0  30: I        4 pages      7393 bytes 1984-03-01 22:35:51 (FLOPPY-USER)PASCAL-ERR-J:SYMB&lt;br /&gt;
  0  31: I       43 pages     87040 bytes 1984-03-01 22:36:16 (FLOPPY-USER)SVHA-ADVENTURE:PROG&lt;br /&gt;
  0  32: I       16 pages     31824 bytes 1984-03-01 22:37:25 (FLOPPY-USER)SVHA-KOLOTEXT:SYMB&lt;br /&gt;
  0  33: I       20 pages     40536 bytes 1984-03-01 22:37:54 (FLOPPY-USER)SVHA-OBJETEXT:SYMB&lt;br /&gt;
  0  34: I       18 pages     35496 bytes 1984-03-01 22:38:31 (FLOPPY-USER)SVHA-STLOTEXT:SYMB&lt;br /&gt;
  0  35: I       22 pages     43272 bytes 1984-03-01 22:39:05 (FLOPPY-USER)SVHA-TILFTEXT:SYMB&lt;br /&gt;
  0  36: I       18 pages     35932 bytes 1984-03-01 22:39:36 (FLOPPY-USER)SVHA-DATAFIL:SYMB&lt;br /&gt;
Directory size            : 611 pages&lt;br /&gt;
Bit file size             : 1 page &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related products ==&lt;br /&gt;
* [[ND-GAMES]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:ND product description]]&lt;br /&gt;
[[Category:ND-10624]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=5015&amp;diff=7649</id>
		<title>5015</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=5015&amp;diff=7649"/>
		<updated>2025-03-21T19:28:13Z</updated>

		<summary type="html">&lt;p&gt;RHansen: Adding info on the PCB 5015&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;5015&#039;&#039;&#039; is the N-500 Control II&lt;br /&gt;
&lt;br /&gt;
{{Stub}}&lt;br /&gt;
==Introduction==&lt;br /&gt;
[[ND-500]] controller interface &amp;quot;N-500 Control II&amp;quot; on the ND-500 bus.&lt;br /&gt;
&lt;br /&gt;
The interface between the ND-100 and the ND-500 consists of 2 interface cards; the 3022 card om the ND-100, and the 5015 card on the ND-500. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Switches and indicators==&lt;br /&gt;
&lt;br /&gt;
==Connectors==&lt;br /&gt;
The A and B connectors are used for I/O, the C connector is used for the [[ND-100 Bus]]. This card doesn&#039;t have a B connector.&lt;br /&gt;
==I/O Devices on the card==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
* http://sintran.com/sintran/hardware/nd-500/nd-322515.html&lt;br /&gt;
&lt;br /&gt;
[[Category:ND-500 hardware]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
</feed>