Talk:ND100 emulator project

From NDWiki
Jump to: navigation, search

Current status

  • Revived, and active. /Roger (talk) 20:52, 29 July 2016 (UTC)
  • Possibly thinking of putting it on github or somewhere public with issue tracker functionality etc. Will look into it.
  • ATM working on floppy code, trying to get that to pass tests, once that is done floppy boot. Roger (talk) 23:22, 12 August 2016 (UTC)

Archived old version of talk page to remove clutter, mostly about stuff that is already solved or irrelevant at the moment.

Re. Known Bugs

Do you have any more info on the undocumented instructions?? I seem to have hit an undocumented IOX as well (IOX 3). Roger 07:29, 2 May 2011 (AWST)

No success yet with the undocumented instructions. I tried to run 142700 through the disassembler in BRF-LINKER and BRF-EDITOR, but they didn'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't ever exist, so maybe that IOX 3 is a test by iteself, to trigger an IOX error interrupt on level 14? -- TArntsen 09:10, 2 May 2011 (CEST)
Found it through running CONFIGURATIO-C08, it seems there is something called a Rack Controller. No more details yet though. -- Roger 01:10, 9 May 2011 (AWST)

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's called very early in the test program sort of hints that it's checking if somethings available. I was also thinking of either things on NORD1/NORD10 or ND120.

Update: 142700 instruction:. 142700 is the GECO instruction! GECO, Geophysical Company of Norway (now it'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 'illegal instruction'. I had forgotten about it, there's a writeup somewhere about the GECO instruction story but I don't have the reference handy. However, from what I can figure out from SINTRAN it looks like the instruction is part of the 'standard' 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:
Check if 32-bit or 48-bit floating point (standard NLZ trick mentioned in docu) 
Check if NORD-10 or ND-100 (there's a bit for that)
(Now it tries to deduce if the commercial (CE) instruction set is there):
Here it does some trick with BFILL which I haven't figured out yet. NB: It _could_ affect the below.
 (Found it: BFILL simply installs a short level 14 illegal instruction catch handler.)
Then it checks for GECO.
  If GECO is not found, it skips the rest!
  Check for 16 PITS (the alternative is 4 PITS, more common in older systems)
  Check if VERSN exists, if yes then it's at least an ND-110
  If yes, use VERSN to figure out if it's an ND-120
(This is where we end if no GECO).
Check if there's an ND-500.
Well, there may be more to come if I find out more. -- TArntsen 01:09, 15 May 2011 (CEST)
I love this GECO-story! I think it would fit well as a Main Page Did you know... /Mike 01:57, 16 May 2011 (CEST)

Re. Wanted Information

INSTRUCTION-B has a BCD test but it seems to be a dummy. I haven't implemented BCD tests in my emulator so it shouldn't have passed everything, but it does. And executing the BCD test individually just spits out 'BINARY CODED DECIMAL (ADDD...) (NIY) == END OF TEST ==' (plus levels) as with RUN. -- TArntsen 19:02, 14 May 2011 (CEST)

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 ? -- TArntsen 12:28, 15 May 2011 (CEST)
Update: INSTRUCTION-B seems to use GECO (142700) to test for CPU version just like SINTRAN, so without the instruction it won't even try CX operations like CLEPT, or, presumably, CE instructions (my emulator doesn't have enough of these to be completely sure, but that's what it looks like). So, to conclude, implement a dummy 142700 (just increment P, fetch new instruction, no IIC update, and it'll pass through) and INSTRUCTION-B may start working through the CE/BCD tests. -- TArntsen 10:52, 16 May 2011 (CEST)

INSTRUCTION-B detects nd100em as ND100/CX with MMS I, and runs through some of the CE tests, like stack (INIT,ENTR,LEAVE,ELEAV). There seems to be something listed in the long documentation inside INSTRUCTION-B thats called ND100S4, and might be the GECO one. Will put in a stub for it anyway, and play around. Anyway, this is what nd100em is detected as currently, it is set as configurable though, although not quite handled that way fully yet.

ALD     : 0

ND100 floating point

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. Note that ND-100 does this before final shifting adjustment if you get a carry, thus wiping it.

I just found this on the ND-12 page....

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.
I wonder if this is the issue, I will be checking it as soon as I get back coding.... Roger (talk) 13:40, 15 July 2016 (UTC)
I also noticed that when I read the document some time ago, and yes I think that's exactly it. The rounding to 1 we discussed is, as far as I can see, perfectly explained by the "..forced to one if the result could not be exactly represented" mechanism. -- TArntsen (talk) 12:47, 17 July 2016 (UTC)

Mailinglist down again

Will try and get sorted sometime in the next week and sit down and fix mailinglist IF there is any interest in its revival.

Is the mailinglist working now? I don't get any error messages when posting to it (but I don't get any replies to my messages either...) --Torfinn (talk) 20:06, 20 September 2016 (UTC)
Still down, poke me in a week or so if I haven't fixed it by then... It's been on my low prio list.... Roger (talk) 03:31, 21 September 2016 (UTC)


In case it is still needed, INSTRUCTION-C (INSTRUCTION-C03:TEST) is available on the image of the first floppy in ND-210523G. If ':TEST' is a new file format (as opposed to a renamed ':BPUN') I don't know anything about it. --Torfinn (talk) 18:47, 26 July 2016 (UTC)

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. /Roger (talk) 11:20, 27 July 2016 (UTC)

"floppy.h" missing?

It looks like a file "floppy.h" 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 --Torfinn (talk) 20:09, 20 September 2016 (UTC)

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. Roger (talk) 03:27, 21 September 2016 (UTC)

git repository unavailable

The git repository is unavailable now. It looks like the domain expired. --Torfinn (talk) 07:32, 18 October 2016 (UTC)

I put a copy of the last release (0.2.4) up on Github At least then the code is available. --Torfinn (talk) 19:29, 27 February 2018 (UTC)