

       NAM SIMUL
*      M6800 RESIDENT SIMULATOR
*      H. ELLENBERGER - SWITZERLAND
*      REV. 1.2
*      SIMULATES USER PROGRAM
       SPC 1
*      MIKBUG EQUATES
PDATA  EQU $E07E
OUT2HS EQU $E0CA
OUT4HS EQU $E0C8
CONTRL EQU $E0E3
       DSCT
FITA   FDB 0
ACTA   FDB 0
CCTA   FCB $C0
BRTA   FCB 0
ARTA   FCB 0
XRTA   FDB 0
STTA   FDB 0
NETA   FDB 0
STSI   FDB 0
CODE1  RMB 1
CODE2  RMB 1
CODE3  RMB 1
       FCB $7E
       FDB NORMEX
       FCB $7E
       FDB JMPEX
XTEMP  FDB 0
       SPC 1
       PSCT
START  LDX FITA
       STX NETA
NEXTLI JSR CARR
       LDX NETA
       STX ACTA
       LDAA X
       STAA CODE1
       LDAA 1,X
       STAA CODE2
       LDAA 2,X
       STAA CODE3
       LDX #NETA
       JSR OUT4HS PRINT NEW PC
       FCB 1,1,1
       SPC 1
*      ROUTINE TO INTERPRET SPECIAL CODES
INTSP  LDAA CODE1
       LDX #INSTAA
CONT30 LDAB X
       CBA
       BNE CONT31
       LDAB 1,X
       LDX 2,X
       JMP PRICOD
CONT31 CPX #INSTAE
       BNE CONT32
       JMP INTGEN
CONT32 INX
       INX
       INX
       INX
       BRA CONT30
       SPC 1
*      INTERPRET GENERAL CODES
INTGEN LDX #EXGEN DEFAULT JMP ADR
       CMPA #$1B
       BHI CONT41
B40    LDAB #1
       JMP PRICOD
CONT41 CMPA #$3LDAB #4
       STAB CODE2
NOBRA  LDAB #2
       JMP PRICOD
       SPC 1
*      SUBROUTINES AND TABLES
EXILL  LDX #ILLTAB
       JSR PDATA
       JMP NEXTLI
CARR   LDX #CARTAB
       JMP PDATA &RTS
       SPC 1
ILLTAB FCC /ILLEG/
       FCB 4
CARTAB FCB $D,$A,0,0,4
       SPC 1
INSTAA FCB $39,1
       FDB EXRTS
       FCB $3A,1
       FDB EXILL
       FCB $3B,1
       FDB EXRTI
       FCB $3C,1
       FDB EXILL
       FCB $3D,1
       FDB EXILL
       FCB $3E,1
       FDB EXWAI
       FCB $3F,1
       FDB EXSWI
       FCB $6E,2
       FDB EXJMPX
       FCB $7E,3
       FDB EXJMPE
       FCB $8D,2
       FDB EXBSR
       FCB $AD,2
       FDB EXJSRX
INSTAE FCB $BD,3
       FDB EXJSRE
       SPC 1
*      PRINT VALID CODES
PRICOD PSHA
       STX XTEMP
       LDX ACTA
       JSR OUT2HS
       CMPB #3
       BNE CONT61
       JSR OUT4HS
       BRA END6
CONT61 CMPB #2
       BNE CONT62
       JSR OUT2HS
       JSR OUT2S
       LDAA #1
       STAA CODE3
       BRA END6
CONT62 CMPB #1
       BNE ERROR
       JSR OUT5S
       LDAA #1
       STAA CODE2
       STAA CODE3
END6   JSR OUT5S
       JSR OUT5S
       PULA
       LDX XTEMP
       SPC 1
*      DETERMINE GENERAL NEW PC AND EXEC
       STX XTEMP
       LDX ACTA
LOP71  INX
       DECB
       BNE LOP71
       STX NETA
       LDX XTEMP
       JMP X JMP TO SIMULATION ROUTINE
ERROR  JMP CONTRL
       SPC 1
*      GENERAL EXECUTION
EXGEN  STS STSI
       LDS STTA
       LDAB #$10
LOP81  DES
       DECB
       BNE LOP81
       LDAB BRTA
       LDAA ARTA
       PSHA
       LDAA CCTA
       LDX XRTA
       TAP
       PULA
I      EQU $31
       FCB I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I
       JMP CODE1
       SPC 1
*      RETURN WITHOUT BRANCH
D      EQU $34
NORMEX FCB D,D,D,D,D,D
       BSR OFFSET
       BRA ENDS
       SPC 1
*      SUBR PRIREG & OFFSET CALC.
PRIREG LDX #CCTA
       JSR OUT2HS CC
       JSR OUT2HS B
       JSR OUT2HS A
       JSR OUT4HS X
       JSR OUT4HS SP
       RTS
       SPC 1
OFFSET TAB
       ANDB #$80
       BNE NEG11
POS11  BSR ADDL11
       BCC END11
       INC NETA TH
       BRA END11
NEG11  BSR ADDL11
       BCS END11
       DEC NETA TH
END11  RTS
       SPC 1
ADDL11 ADDA NETA+1 TLOW
       STAA NETA+1
       RTS
       SPC 1
OUT2S  LDX #TAB2S
       JMP PDATA &RTS
       SPC 1
OUT5S  LDX #TAB5S
       JMP PDATA &RTS
       SPC 1
TAB5S  FCB $20,$20,$20
TAB2S  FCB $20,$20,4
       SPC 1
*      SIMUL RTS 39
EXRTS  LDX STTA
       LDX 1,X RET ADR
       STX NETA
       LDX STTA
       INX
       INX
       STX STTA
       JMP ENDS
       SPC 1
*      SIMUL BSR 8D
EXBSR  BSR PSRAD
       BRA JMPEX
PSRAD  LDX STTA PUSH RET ADR
       DEX
       DEX
       STX STTA
       LDAA NETA
       STAA 1,X TH
       LDAA NETA+1
       STAA 2,X TL
       LDAA #$20 "BRA"
       STAA CODE1
       RTS
       SPC 1
*      SIMUL JMP 6E
EXJMPE LDX CODE2
       STX NETA
       JMP ENDS
       SPC 1
EXSWI  JMP EXILL
EXRTI  JMP EXILL
EXWAI  JMP EXILL
       END START
