User talk:RHansen

From NDWiki
Revision as of 14:30, 7 October 2022 by RHansen (talk | contribs)
Jump to navigation Jump to search

Hi fellow emulator writer! My own emulator is more similar to Carl-Victor's, I emulate SINTRAN but can't boot it. As for the K version it doesn't need a 110 CPU, but if it's /VSX it needs a 100/CX, i.e. the extra CX instructions must be there. K came in both VSE (no CX needed) and VSX (CX needed). From version L and later only CX versions would work - I think even version M would run on a plain 100/CX. As for the disk for M, as with all SINTRAN images they were generated for a specific configuration, and the version I have, at least, was generated for a setup with SCSI disks only. TArntsen (talk) 08:53, 5 October 2022 (UTC)
(EDIT: I checked my M version and it does seem to have the disk type choices (in addition to SCSI) shown in that disk-choice picture) TArntsen (talk) 11:45, 5 October 2022 (UTC)

Hello, it's great to have other emulator writers to discuss with and learn from!
In regards to the CX instructions, if I am not wrong its these: ADDD,SUBD,COMD, PACK, UPACK, SHDE. Those I have not yet finished implemented, but I have enforced a breakpoint in the code if they get called - and so far they havent. 
It might be the fact that I havent been able to get very far in the boot sequence of SIII K or M. They will be implemented ASAP I have some code calling them, right now I am focusing on getting boot to work.
The M disk's I have is actually disks I have found here [1]. Its SINTRAN M Std C. I dont know what the requirements are, as I dont have access to the "SINTRAN III M-version Release Information", the closest I have is "ND-860230-6-EN Sintran III - Release Information - 
L-Version" - which does mention type A and B, but nothing about C. When booting, I do have a choice of disks, ref this screenshot [2]. I have now started the implementation of the SCSI driver to see if it will solve the boot error, but I would think that it should be 
able to boot from SMD disks as they are valid choides...
Where can I find a copy of the SINTRAN M you are using ? RHansen (talk) 13:58, 5 October 2022 (UTC)
The instructions you listed are the decimal instructions from the CE set, there are also stack handling instructions, and the CX instructions are those plus some more (see ND-1xx_Instructions. But in addition to that you'll need to implement a dummy GECO instruction because SINTRAN uses that to detect if the CE (in practice it's the CX) instruction set is present.. if not, it won't even bother. As for SINTRAN M, Tingo's floppy set which you are using seems to be version 250306M06, what I have is 250305M05, which would be slightly older. I can't recall if I uploaded those somewhere, or if Tingo got a copy, but if you want them I can upload them somewhere. The M release info should be here: [3] TArntsen (talk) 13:13, 5 October 2022 (UTC)
BTW I suspect that those decimal instructions you listed aren't used by SINTRAN/VSX, only by user programs. The stack handling instructions I'm not sure about. But it'll likely need MOVEW, TSET, RDUS, and the segment changing instructions. TArntsen (talk)


Thanks, I have downloaded the documentation - and it seems that SIII M supports ND-100 and SMD DISK. It states:
ND-100 CPU, one of
  ND-100/CX  with 32/48 FPP and Memory Management II 
If SMD disk controller (10MHZ) is to be used, the following applies:
  SMD Control (print 3018). ECO Level R is required
  SMD Data (print 3019). ECO level BE is required.
I have implemented Memory Management II, and a buggy 32 bit FPP (which I need to improve). I also need to work on the missing CX instructions, but so far they havent been called - maybe except MOVEW which I have implemented. GECO/GECOX is there after I found it in the 110 microcode - It does nothing, except being callable.
And the SMD disk controller should work - i need to identify what the specifics with ECO level means. I definitively will spend more time making sure the implementation is passing TPE-MON validation with DISC-TEMA.
I would love to have a copy of your SIII M disks. And if you have other boot floppies for J or L or K that is not uploaded somwehere else, i would be happy to test a bit with those. RHansen (talk)

SINTRAN III and hardware configuration

As far as I know, each set of install floppies was created for a specific customer machine in the early days. This didn't change until whatever version of SINTRAN III that included the CONFIGURATION-S3 program came. If this hardware configuration also included locking it down to only the serial number of the machine in question, I do not know.

Oh - congrats on the nice progress with your emulator! Torfinn (talk) 01:40, 6 October 2022 (UTC)

Micro-code not loaded

Just did a quick dig at this. If this were Sintran L then it would mean that the micro code level reported by your CPU is too low. The code executed looks like this:

171500 SAX 100
150017 TRA CS
004115 STA * 115
146151 COPY SA DD
171013 SAT 13
143465 SKP IF DA MLST ST
124006 JMP * 6
174000 BSET ZRO SSPTM
044076 LDA * 76
135073 JPL I * 73
174200 BSET ONE SSPTM
125074 JMP I * 74

which is (pseudo-code):

set X = 0100
read control store
copy A to variable (A=micro code version. hold it somewhere where other code can get it)
copy A to D
if A < 13
 set 1bank
 call output with string "Micro-code not loaded. CPU revision too low" (that 'LDA *76' loads a pointer to the string)
 set 2bank
 bail out
endif

However, I haven't been able to find the same code or something similar in Sintran M yet, even though I can find the same string. TArntsen (talk) 09:02, 7 October 2022 (UTC)

SINTRAN M

035500     171500                      SAX 100
035501     150017                      TRA CS
035502     004115                      STA *115
035503     146151                      COPY SA DD
035504     171013                      SAT 13
035505     143465                      SKP IF DA MLST ST
035506     124006                      JMP *6  => [EA:035514]
035507     174000                      BSET ZRO SSPTM
035510     044076                      LDA *76
035511     135073                      JPL I *73
035512     174200                      BSET ONE SSPTM
035513     125074                      JMP I *74

Tried with returning 14d/16oct, ended up in Opcom with no message

034100     151000                      WAIT 0
RHansen (talk) 12:46, 7 October 2022 (UTC)
There's a test after that which may bail out without any message, but I would have to trace that to see exactly what's supposed to happen and my emulator isn't up to that. Can you single-step your emulator at that point? There's approx. 50 instructions to trace (after the above) TArntsen (talk) 14:08, 7 October 2022 (UTC)

Thanks for helping !

I have a debugger that supports breakpoint on memory execution, read and write. I can single step, and I can trace :)

Here is the 50 instructions from the breakpoint at 035500, I will try to add some more meaning to it with traced values

*  035500     171500                      SAX 100
   035501     150017                      TRA CS
   035502     004115                      STA *115
   035503     146151                      COPY SA DD
   035504     171013                      SAT 13
   035505     143465                      SKP IF DA MLST ST
   035506     124006                      JMP *6
   035507     174000                      BSET ZRO SSPTM
   035510     044076                      LDA *76
   035511     135073                      JPL I *73
   035512     174200                      BSET ONE SSPTM
   035513     125074                      JMP I *74
   035514     050077                      LDT *77
   035515     054077                      LDX *77
   035516     173401                      AAX 1
   035517     143300                      LDATX 0
   035520     004103                      STA *103
   035521     060073                      ADD *73
   035522     004074                      STA *74
   035523     173401                      AAX 1
   035524     143300                      LDATX 0
   035525     060071                      ADD *71
   035526     004073                      STA *73
   035527     173401                      AAX 1
   035530     143300                      LDATX 0
   035531     154402                      SHA 2
   035532     060064                      ADD *64
   035533     004067                      STA *67
   035534     173401                      AAX 1
   035535     143300                      LDATX 0
   035536     060060                      ADD *60
   035537     064064                      SUB *64
   035540     146154                      COPY SA DL
   035541     064061                      SUB *61
   035542     004061                      STA *61
   035543     173401                      AAX 1
   035544     143300                      LDATX 0
   035545     146045                      RADD SL DA
   035546     004056                      STA *56
   035547     173773                      AAX -5
   035550     054046                      LDX *46
   035551     173500                      AAX 100
   035552     143300                      LDATX 0
   035553     004045                      STA *45
   035554     142015                      SKP IF DA UEQ SD
   035555     124021                      JMP *21
   035556     174000                      BSET ZRO SSPTM
   035557     175375                      BSKP ONE 170 DA
   035560     124006                      JMP *6
   035561     175171                      BSKP ZRO 170 DD
   035562     124004                      JMP *4
   035563     044025                      LDA *25
   035564     135020                      JPL I *20
   035565     135024                      JPL I *24
   035566     175175                      BSKP ZRO 170 DA
   035567     124006                      JMP *6
   035570     175371                      BSKP ONE 170 DD
   035571     124004                      JMP *4
   035572     044016                      LDA *16
   035573     135011                      JPL I *11
RHansen (talk) 16:30, 7 October 2022 (UTC)