User talk:RHansen: Difference between revisions

From NDWiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 88: Line 88:


  *  035500    171500                      SAX 100
  *  035500    171500                      SAX 100
     035501    150017                      TRA CS
     035501    150017                      TRA CS               A=000025 (this is whatever value I return from the Control Store, I test with 25)
     035502    004115                      STA *115              [EA:035617 ]
     035502    004115                      STA *115              [EA:035617 ]
     035503    146151                      COPY SA DD
     035503    146151                      COPY SA DD           D = A
     035504    171013                      SAT 13
     035504    171013                      SAT 13                T = 000013
     035505    143465                      SKP IF DA MLST ST
     035505    143465                      SKP IF DA MLST ST     => NO-SKIP
     035506    124006                      JMP *6                [EA:035514 ]
 
     035507    174000                      BSET ZRO SSPTM
     035506    124006                      JMP *6                [EA:035514 ]  
     035510    044076                      LDA *76
     035507    174000                      BSET ZRO SSPTM       -- not executed--
     035511    135073                      JPL I *73
     035510    044076                      LDA *76               -- not executed--
     035512    174200                      BSET ONE SSPTM
     035511    135073                      JPL I *73             -- not executed--
     035513    125074                      JMP I *74
     035512    174200                      BSET ONE SSPTM       -- not executed--
     035513    125074                      JMP I *74             JMP TO [35607] (ERRFATAL ?)
 
     035514    050077                      LDT *77              [EA:035613 ] T = 000007
     035514    050077                      LDT *77              [EA:035613 ] T = 000007
     035515    054077                      LDX *77              [EA:035614 ] X = 000000
     035515    054077                      LDX *77              [EA:035614 ] X = 000000
Line 131: Line 133:
     035552    143300                      LDATX 0              A=000014
     035552    143300                      LDATX 0              A=000014
     035553    004045                      STA *45              [EA:035620 ]
     035553    004045                      STA *45              [EA:035620 ]
     035554    142015                      SKP IF DA UEQ SD
     035554    142015                      SKP IF DA UEQ SD     SKIP IF A (000014) != D(000025) (D is my value from Control Store address 000100. I dont know what sets A to 000014
     035555    124021                      JMP *21
     035555    124021                      JMP *21               -- skipped --
     035556    174000                      BSET ZRO SSPTM
     035556    174000                      BSET ZRO SSPTM
     035557    175375                      BSKP ONE 170 DA
     035557    175375                      BSKP ONE 170 DA

Revision as of 15:22, 7 October 2022

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                A=000025 (this is whatever value I return from the Control Store, I test with 25)
   035502     004115                      STA *115              [EA:035617 ]
   035503     146151                      COPY SA DD            D = A
   035504     171013                      SAT 13                T = 000013
   035505     143465                      SKP IF DA MLST ST     => NO-SKIP
   035506     124006                      JMP *6                [EA:035514 ] 
   035507     174000                      BSET ZRO SSPTM        -- not executed--
   035510     044076                      LDA *76               -- not executed--
   035511     135073                      JPL I *73             -- not executed--
   035512     174200                      BSET ONE SSPTM        -- not executed--
   035513     125074                      JMP I *74             JMP TO [35607] (ERRFATAL ?)
   035514     050077                      LDT *77               [EA:035613 ] T = 000007
   035515     054077                      LDX *77               [EA:035614 ] X = 000000
   035516     173401                      AAX 1                 X = X + 1, X=1
   035517     143300                      LDATX 0               A = 002000
   035520     004103                      STA *103              [EA:035621 ]
   035521     060073                      ADD *73               [EA:035614 ] A= A + 0,  A = 003100
   035522     004074                      STA *74               [EA:035616 ]
   035523     173401                      AAX 1                 X = X + 1, X=2  
   035524     143300                      LDATX 0               A= 060000
   035525     060071                      ADD *71               [EA:035616 ] A = A + 002000, A = 062000
   035526     004073                      STA *73               [EA:035621 ]
   035527     173401                      AAX 1                 X = X + 1, X=3 
   035530     143300                      LDATX 0               A=003100
   035531     154402                      SHA 2                 A=014400
   035532     060064                      ADD *64               [EA:035616 ]  A = A + 002000, A=016400
   035533     004067                      STA *67               [EA:035622 ]
   035534     173401                      AAX 1                 X = X + 1, X=4 
   035535     143300                      LDATX 0               A = 072000
   035536     060060                      ADD *60               [EA:035616 ] A = A + 002000, A=074000
   035537     064064                      SUB *64               [EA:035623 ] A = A -(), A=072000  
   035540     146154                      COPY SA DL            L=072000
   035541     064061                      SUB *61               [EA:035622 ] A = A-(), A=053400
   035542     004061                      STA *61               [EA:035623 ]
   035543     173401                      AAX 1                 X = X + 1, X=5 
   035544     143300                      LDATX 0               A=002400
   035545     146045                      RADD SL DA            A:074400
   035546     004056                      STA *56               [EA:035624 ]
   035547     173773                      AAX -5                X = X -5, X=0 
   035550     054046                      LDX *46               [EA:035616 ] X=002000
   035551     173500                      AAX 100               X=02100 
   035552     143300                      LDATX 0               A=000014
   035553     004045                      STA *45               [EA:035620 ]
   035554     142015                      SKP IF DA UEQ SD      SKIP IF A (000014) != D(000025) (D is my value from Control Store address 000100. I dont know what sets A to 000014
   035555     124021                      JMP *21               -- skipped --
   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
   035573     135011                      JPL I *11
   035574     135015                      JPL I *15
   035575     174200                      BSET ONE SSPTM
   035576     141415                      SKP IF DA MGRE SD
   035577     124147                      JMP *147
   035600     124025                      JMP *25
RHansen (talk) 16:30, 7 October 2022 (UTC)


__PC__  __PIL_  __STST__ |MMU|INT| __EA__ |     __PC__     OPCODE                   |  ASSEMBLY