         TITLE    '** BYTE-STRING INSTRUCTION SIMULATOR **'                     
*                                                                               
* CATALOG NO. 704365 SIGMA 7 BYTE STRING INST. SIMULATOR FOR SIGMA 5            
*                                                                               
* REVISION D00 (11-10-69) COMPLETE REWRITE FOR NEW MONITOR XFACE                
*                                                                               
*                                                                               
         SYSTEM   SIG5P                                                         
*                                                                               
* REGISTER ASSIGNMENTS                                                          
*                                                                               
T        EQU      1                 POINTER TO TRAP CONTEXT TABLE               
A        EQU      2                                                             
Z        EQU      2                                                             
D        EQU      4                                                             
R        EQU      5                                                             
REG      EQU      Z+1               REGISTER SPECIFIED BY INSTRUCTION           
RU1      EQU      6                 DESTINATION ADDRESS                         
OP       EQU      7                 OP CODE                                     
C        EQU      8                 COUNT & CONDITION CODE STAGING              
REGU1    EQU      11                ODD REGISTER                                
RU1M     EQU      REGU1-1           INDICATOR OF DEST REGISTER STRG             
MASK     EQU      14                MASK FOR TTBS                               
T4       EQU      15                BYTE ADDRESS OF REGISTER STORAGE            
X        EQU      15                BYTE ACCUMULATOR                            
*                                                                               
         PAGE                                                                   
*                                                                               
         DEF      BYTSIM                                                        
BYTSIM   B        U:BYTSIM          RBM ENTRY                                   
U:XITSIM EQU      X'1E6'            NORMAL TRAP RETURN                          
NOPPGM0T EQU      X'1E8'            ERROR RETURN                                
M19      DATA     X'7FFFF'                                                      
YFFFE    DATA     X'FFFE0000'                                           INSDR170
GOODRET  DATA     X'1E6'                                                INSDR170
         BOUND    8                                                             
X1       DATA     1,1                                                           
         PAGE                                                                   
         BOUND    8                                                             
PSDTRP   DATA     NOPPGM0T,0                                                    
PSD1     DATA     1A1,X'F0'                                                     
CCM      DATA     X'10000000',0     MUST BE 32 WORDS FROM CCMP BELOW            
PSD3     DATA     U:XITSIM,0                                                    
DBL1     EQU      X1                                                            
PSD2     DATA     DONE2,0                                                       
         SPACE    3                                                             
BY2      CI,D     X'7FFC0'          CHK FOR REGISTER ADDRESS                    
         BANZ     %+2               SKIP IF NOT                                 
         AW,D     T4                POINT TO REGISTER STORAGE                   
         AI,OP    X'42'-X'60'       CHK OP CODE                                 
         BGZ      MBS               BRANCH IF MBS                               
         SPACE    3                                                             
CBS      LB,X     0,D               SOURCE BYTE                                 
         AD,D     DBL1              NEXT BYTE                                   
CBS0     CB,X     0,RU1             DESTINATION BYTE                            
         BE       CBS1              SKIP IF EQUAL                               
         STCF     C                 ESTABLISH CC3 & CC4                         
         AI,R     -1                BACK UP                                     
         B        DONE2                                                 INSDR170
CBS1     AI,RU1   1                 NEXT BYTE                                   
         BDR,C    CBS0-1,Z          LOOP                                        
         B        DONE2                                                 INSDR170
         SPACE    3                                                             
MBS      LB,X     0,D               SOURCE BYTE                                 
         AD,D     DBL1              NEXT BYTE                                   
MBS0     STB,X    0,RU1             DESTINATION BYTE                            
         AI,RU1   1                 NEXT BYTE                                   
         BDR,C    MBS0-1,Z          LOOP                                        
         B        DONE2                                                 INSDR170
         SPACE    3                                                             
DONE2    STW,R   *REG,T             STORE REGISTER R                            
         AW,RU1   RU1M              IN CASE OF REGISTER STORAGE                 
         STB,C    RU1               INSERT UPDATED COUNT                        
         STW,RU1 *REGU1,T           STORE ODD REGISTER                          
         B        MTW1                                                          
         SPACE    3                                                             
CCMP     DATA     X'30000000',0     MUST BE 32 WORDS FROM CCM ABOVE             
MTW1     LI,0     0                                                     INSDR170
MTW1PLUS LCI      2                                                     INSDR170
         PLM,6    *X'4E'            GET MONITOR PSD                     INSDR170
         AND,6    YFFFE             GET RID OF ADDR                     INSDR170
         OR,6     GOODRET           SET FOR GOOD RETURN                 INSDR170
         CI,0     0                 CHECK ERROR FLAG IN 0               INSDR170
         BEZ      %+2               OK                                  INSDR170
         AI,6     2                 SET BAD RETURN                      INSDR170
         LPSD,0   6                                                     INSDR170
         SPACE    3                                                             
TTBS1    AI,RU1   1                 NEXT BYTE                                   
         BDR,C    TTBS              LOOP                                        
         B        DONE2                                                 INSDR170
         PAGE                                                                   
U:BYTSIM RES      0                 ENTRY                                       
         STD,4    6                 SAVE OLD PSD                        INSDR170
         LCI      2                                                     INSDR170
         PLM,4    *X'4E'            PULL REGS 4+5                       INSDR170
         LCI      2                                                     INSDR170
         PSM,6    *X'4E'            PUSH MONITOR OLD PSD                INSDR170
         INT,RU1M DBL1              ASSUME NO REGISTER DESTINATION              
         LB,OP    D                 OP CODE, CLEAR HI ORDER BITS                
         LW,C+1   CCM-X'40',OP      LOAD CONDITION CODE MASK                    
         LH,REG   D                 OBTAIN,                                     
         AND,REG  PSD1+1            EXTRACT R                                   
         BNEZ     F1                SKIP IF NOT R0                              
         LI,R     X'80000'          DEFAULT MASK FOR TTBS                       
         LD,Z     DBL1              TO NULLIFY RESTORE ETC.                     
         B        F2                JOIN                                        
F1       SLS,REG  -4                RIGHT JUSTIFY R FIELD                       
         LW,R    *REG,T             MASK AND SOURCE ADDRESS                     
         AW,D     R                 DISPLACEMENT + SOURCE ADDRESS               
         LI,Z     -1                FOR MBS & CBS                               
         OR,REGU1 REG               MAKE IT R OR 1                              
F2       RES      0                                                             
         LW,RU1  *REGU1,T           COUNT & DESTINATION ADDRESS                 
         LB,C     RU1               COUNT                                       
         BEZ      MTW1              TO GET OUT                                  
BY1      LW,T4    T                 COPY REGISTER STORAGE ADDRESS               
         SLS,T4   2                 BYTE ADDRESSING ALIGNMENT                   
         LW,0     RU1               COPY                                        
         AND,0    M19               EXTRACT DESTINATION                         
         AW,0     C                 LAST BYTE + 1                               
         CI,RU1   X'7FFC0'          CHK FOR REGISTER                            
         BANZ     1A0               NOPE                                        
         CI,0     X'40'             CHK FOR CORE ADDRESS                        
         BG       1A2               IT'S A BOO-BOO                              
         AW,RU1   T4                POINT TO REGISTER STORAGE                   
         LCW,RU1M T4                FLAG IT                                     
         B        1A1                                                   INSDR170
1A0      AI,0     X'80000'          CHK MEMORY WRAPAROUND                       
         BLEZ     1A1               SKIP IF OK                                  
1A2      EQU      %                                                     INSDR170
         LI,0     1                 SET FOR BAD RETURN                  INSDR170
         B        MTW1PLUS                                              INSDR170
1A1      RES      0                                                             
         AI,OP    -X'42'            CHK OP CODE                                 
         BGEZ     BY2               BRANCH IF MBS OR CBS                        
         SPACE    3                                                             
         LB,A     0,RU1             DESTINATION BYTE                            
         AW,A     D                 USE AS ADDEND FOR SOURCE ADDRESS            
         CI,A     X'7FFC0'          CHK FOR REGISTER ADDRESS                    
         BANZ     %+2               SKIP IF NOT                                 
         AW,D     T4                POINT TO REGISTER STORAGE                   
         BIR,OP   TTBS-1            BRANCH IF TTBS                              
         SPACE    3                                                             
TBS      LB,A     0,RU1             DESTINATION BYTE                            
         AW,A     D                 USE AS ADDEND FOR SOURCE ADDRESS            
         LB,X     0,A               GET SOURCE BYTE                             
         STB,X    0,RU1             TRANSLATE DESTINATION                       
         AI,RU1   1                 NEXT BYTE                                   
         BDR,C    TBS               LOOP                                        
         B        DONE2                                                 INSDR170
         SPACE    3                                                             
         LB,MASK  R                 GET MASK                                    
TTBS     LB,A     0,RU1             DESTINATION BYTE                            
         AW,A     D                 USE AS ADDEND FOR SOURCE ADDRESS            
         CB,MASK  0,A               CHK SOURCE BYTE                             
         BAZ      TTBS1             SKIP IF NO HIT                              
         LB,X     0,A               GET SOURCE BYTE                             
         AND,X    MASK              LOGICAL PRODUCT WITH MASK                   
         STB,X    R                 INSERT RESULT                               
         AW,C     CCM               TURN ON CC4                                 
         B        DONE2                                                 INSDR170
         END                                                                    
