ND100 emulator project: Difference between revisions

From NDWiki
Jump to navigation Jump to search
(Added answer to searched information.)
 
(34 intermediate revisions by 3 users not shown)
Line 1: Line 1:
The '''ND100 Emulator Project''' (nd100em) strives to be able to completely run
The '''ND100 Emulator Project''' (nd100em) strives to be able to completely run
[[ND-100]] code and emulate a ND100 computer to the degree it can boot and run [[SINTRAN III]].
[[ND-100]] code and emulate a ND-100 computer to the degree it can boot and run [[SINTRAN III]].


== Authors ==
== Authors ==
Line 10: Line 10:


== Status ==
== Status ==
* In active development. Most of the basic instructions implemented and some of the system ones. MMS implemented. Able to run some ND100 software.


In active development. Most of the basic instructions implemented and some of the system ones. MMS implemented. Able to run
* It can run [[BPUN]] files, but has a long way until all system functions are working. [[MAC]] sort of works, as well as INSTRUCTION-B, which is the main test program used for now to see how well it behaves.
some ND100 software.


It can run bpun files thats stripped down, but has a long way until all system functions are working. [[MAC]] sort of works, as
* Version 0.1.6 introduced functions to measure emulator speed, and on a 2.6GHz P4, it is around 5-10 times on average faster than an original ND-100, counted per instruction over a large number of instructions. The code is ''NOT'' optimized for speed at all.
well as INSTRUCTION-B, which is the main test program used for now to see how well it behaves.


V 0.1.6 introduced functions to measure emulator speed, and on a 2.6GHz P4, it is around 5-10 times on average faster than an original
* Version 0.1.9 runs a lot more code, and can handle [[BPUN]] files straight off.
ND100, counted per instruction over a large number of instructions. The code is NOT optimized for speed at all.


Usually the projects experimental code is further ahead than these versions available here.
* Usually the projects experimental code is further ahead than these versions available here.


The project has a mailinglist (closed sumbission) which can be joined [https://www.gnyrf.net/cgi-bin/lsg2.cgi here].
* You can join the [https://www.gnyrf.net/cgi-bin/lsg2.cgi project mailinglist] (closed sumbission).


== Wanted Information ==
== Wanted Information ==
Specifications for IOX4-7, possibly info about IOX0-3.
*Specifications for IOX1-3.
:The floppy interface will answer at IOX 0-7 if thumbwheel is at an illegal position.
:{{done}} Partially solved, Rack Controller.
Information about expected behaviour of CLEPT and SETPT (Inparameters, effects etc)
*Specifications for IOX4-7.
:{{done}} Partially solved, Memory Parity.
:: More information about these would be good though, like where more documentation about them is found, or register flags/values.


PROG File format.
* Information about undocumented instructions, particularly 142700...
:{{done}} Partially solved
: 142700 - GECO -
: {{done}}161000 - IOT. an old ND1 pre IOX instruction, details in ND1 manuals.


Details of Floppy IOX calls... Solved, see : [[3010]]
*PROG File format.
:{{done}} Solved
 
* An output dump from VERSN run on at least one real ND 110+
: Has to be run 16 times, as the installation number is that long. A reg bit 11-8 is set to byte num, then VERSN called
: Output comes in A, T, AND D register.
: Bit 15-4 of A= Print version. 3-0 is ALD, T=Microprogram version, lower byte of D=installation num.
 
* Details of the ND binary boot process/format
: According to manual, it should be compatible with BPUN format, however I have access to images of what should be bootable diskettes, and in the first page on a diskette the bootloader should reside.
However it is not completely BPUN compatible as far as I can tell, I have gone through with a hex editor, and they do not fully adhere to the BPUN format as specified. Just loading the page into memory at adress 0
and run which mass storage load should be does not either work as far as I can tell.


== Known Bugs ==
== Known Bugs ==
Enabling Illegal instruction error makes INSTRUCTION-B hang. Seems we might be 100(8) addresses off when loading lvl14
* MOVB
Program counter. Probably caused by an earlier error. RTC bits not set yet, which also makes INSTRUCTION-B complain.
: Needs fixing for a few edge cases.
* NLZ
: Not properly identified yet what needs to be done.
* DNZ
: Not properly identified yet what needs to be done.
* FDIV
: Not properly identified yet what needs to be done.
 
== Documentation ==
Some [http://www.ndwiki.org/doxygen/html/ online documentation] is generated with [[wikipedia:Doxygen|Doxygen]].
 
Also a copy of [[README-CODING-IO]] has been added here on the wiki for easy access.
 
Since v0.2.2 nd100em also have tracing disassembly functionality.
 
A copy of [[README-DDT]] has been added here on the wiki. It contains info about the debugging, disassembly and tracing subsystems in the emulator.


== Code ==
== Code ==
Latest development code can be found in the development git tree [http://www.gnyrf.net/cgi-bin/gitweb.cgi?p=nd100em.git;a=summary here].
Latest development code can be found in [http://www.gnyrf.net/cgi-bin/gitweb.cgi?p=nd100em.git;a=summary the development git tree].


* [http://www.gnyrf.net/nd100em/files/nd100em-v0.1.tar.gz v0.1] - Initial release, able to run image of ND100 MAC
* [http://www.gnyrf.net/nd100em/files/nd100em-v0.1.tar.gz v0.1] - Initial release, able to run image of ND100 MAC
Line 47: Line 76:
* [http://www.gnyrf.net/nd100em/files/nd100em-v0.1.5.tar.gz v0.1.5] - Runlevel switching in WAIT, basic rtc interrupt functionality, fixes all over
* [http://www.gnyrf.net/nd100em/files/nd100em-v0.1.5.tar.gz v0.1.5] - Runlevel switching in WAIT, basic rtc interrupt functionality, fixes all over
* [http://www.gnyrf.net/nd100em/files/nd100em-v0.1.6.tar.gz v0.1.6] - IDENT infrastructure, Config file handling, bugfixes, profiling
* [http://www.gnyrf.net/nd100em/files/nd100em-v0.1.6.tar.gz v0.1.6] - IDENT infrastructure, Config file handling, bugfixes, profiling
* [http://www.gnyrf.net/files/nd100em/nd100em-v0.1.7.tar.gz v0.1.7] - Bugfixes, handles paging and interrupt. New tracing model.
* [http://www.gnyrf.net/files/nd100em/nd100em-v0.1.8.tar.gz v0.1.8] - Bugfixes, partially runs INSTRUCTION-B testprogram now.
* [http://www.gnyrf.net/files/nd100em/nd100em-v0.1.9.tar.gz v0.1.9] - Bugfixes,new tracing, runs INSTRUCTION-B to a degree we can use it to test instructions.
* [http://www.gnyrf.net/files/nd100em/nd100em-v0.2.0.tar.gz v0.2.0] - Corrected PT/APT handling, IRQ fixes, runs completely through PAGING-B.BPUN, don't crash out on RTC-12-1902B.BPUN anymore.
* [http://www.gnyrf.net/files/nd100em/nd100em-v0.2.1.tar.gz v0.2.1] - Bugfixes, some memory leaks fixed. Change from mutex to semaphores, and tested build on 64 bit Linux and FreeBSD.
* [http://www.gnyrf.net/files/nd100em/nd100em-v0.2.2.tar.gz v0.2.2] - Bugfixes, MOVBF & FAD fixed, IOX on nonexistant devices fixed, disassembly functionality added, and a bunch of small changes. Build tested on 64 bit Linux but not FreeBSD.
* [http://www.gnyrf.net/files/nd100em/nd100em-v0.2.3.tar.gz v0.2.3] - Some compile errors crawled into v0.2.2, so this is a quick new release to fix it.
* [http://www.gnyrf.net/files/nd100em/nd100em-v0.2.4.tar.gz v0.2.4] - Added panel processor functionality. Can now keep a datetime clock running, and passes newer test programs.


{{GPL}}
{{GPL}}


[[Category:Projects|ND100 emulator project]]
[[Category:Projects]]
[[Category:ND100 emulator project]]

Latest revision as of 14:23, 13 August 2016

The ND100 Emulator Project (nd100em) strives to be able to completely run ND-100 code and emulate a ND-100 computer to the degree it can boot and run SINTRAN III.

Authors

  • Per-Olof Åström
  • Roger Abrahamsson
  • Zdravko Dimitrov
  • Göran Axelsson

Status

  • In active development. Most of the basic instructions implemented and some of the system ones. MMS implemented. Able to run some ND100 software.
  • It can run BPUN files, but has a long way until all system functions are working. MAC sort of works, as well as INSTRUCTION-B, which is the main test program used for now to see how well it behaves.
  • Version 0.1.6 introduced functions to measure emulator speed, and on a 2.6GHz P4, it is around 5-10 times on average faster than an original ND-100, counted per instruction over a large number of instructions. The code is NOT optimized for speed at all.
  • Version 0.1.9 runs a lot more code, and can handle BPUN files straight off.
  • Usually the projects experimental code is further ahead than these versions available here.

Wanted Information

  • Specifications for IOX1-3.
DoneDone Partially solved, Rack Controller.
  • Specifications for IOX4-7.
DoneDone Partially solved, Memory Parity.
More information about these would be good though, like where more documentation about them is found, or register flags/values.
  • Information about undocumented instructions, particularly 142700...
DoneDone Partially solved
142700 - GECO -
DoneDone161000 - IOT. an old ND1 pre IOX instruction, details in ND1 manuals.
  • PROG File format.
DoneDone Solved
  • An output dump from VERSN run on at least one real ND 110+
Has to be run 16 times, as the installation number is that long. A reg bit 11-8 is set to byte num, then VERSN called
Output comes in A, T, AND D register.
Bit 15-4 of A= Print version. 3-0 is ALD, T=Microprogram version, lower byte of D=installation num.
  • Details of the ND binary boot process/format
According to manual, it should be compatible with BPUN format, however I have access to images of what should be bootable diskettes, and in the first page on a diskette the bootloader should reside.

However it is not completely BPUN compatible as far as I can tell, I have gone through with a hex editor, and they do not fully adhere to the BPUN format as specified. Just loading the page into memory at adress 0 and run which mass storage load should be does not either work as far as I can tell.

Known Bugs

  • MOVB
Needs fixing for a few edge cases.
  • NLZ
Not properly identified yet what needs to be done.
  • DNZ
Not properly identified yet what needs to be done.
  • FDIV
Not properly identified yet what needs to be done.

Documentation

Some online documentation is generated with Doxygen.

Also a copy of README-CODING-IO has been added here on the wiki for easy access.

Since v0.2.2 nd100em also have tracing disassembly functionality.

A copy of README-DDT has been added here on the wiki. It contains info about the debugging, disassembly and tracing subsystems in the emulator.

Code

Latest development code can be found in the development git tree.

  • v0.1 - Initial release, able to run image of ND100 MAC
  • v0.1.1 - New command parser, some floating point support
  • v0.1.2 - Rearranged to new structure, new instructions added
  • v0.1.3 - Lots of bugfixes and some more instructions
  • v0.1.4 - multithreading, IOX infrastructure. Bugfixes.
  • v0.1.5 - Runlevel switching in WAIT, basic rtc interrupt functionality, fixes all over
  • v0.1.6 - IDENT infrastructure, Config file handling, bugfixes, profiling
  • v0.1.7 - Bugfixes, handles paging and interrupt. New tracing model.
  • v0.1.8 - Bugfixes, partially runs INSTRUCTION-B testprogram now.
  • v0.1.9 - Bugfixes,new tracing, runs INSTRUCTION-B to a degree we can use it to test instructions.
  • v0.2.0 - Corrected PT/APT handling, IRQ fixes, runs completely through PAGING-B.BPUN, don't crash out on RTC-12-1902B.BPUN anymore.
  • v0.2.1 - Bugfixes, some memory leaks fixed. Change from mutex to semaphores, and tested build on 64 bit Linux and FreeBSD.
  • v0.2.2 - Bugfixes, MOVBF & FAD fixed, IOX on nonexistant devices fixed, disassembly functionality added, and a bunch of small changes. Build tested on 64 bit Linux but not FreeBSD.
  • v0.2.3 - Some compile errors crawled into v0.2.2, so this is a quick new release to fix it.
  • v0.2.4 - Added panel processor functionality. Can now keep a datetime clock running, and passes newer test programs.