File:  [gforth] / gforth / arch / r8c / asm.fs
Revision 1.1: download - view: text, annotated - select for diffs
Sun Jan 15 20:24:50 2006 UTC (18 years, 3 months ago) by pazsan
Branches: MAIN
CVS tags: HEAD
Added Heinz Schnitter's r8c assembler

    1: 
    2: \ FORTH Assembler for R8C                    hfs 23:54 25.12.05
    3: \
    4: \ Autor:          Heinz Schnitter (hfs)
    5: \
    6: \ Information:
    7: \
    8: \ - R8C.ASM is a table driven assembler.
    9: \ - R8C.ASM supports OPCodes of Renesas R8C Microcomputer in
   10: \   postfix notation.
   11: 
   12:  only forth definitions
   13: 
   14:  VOCABULARY R8C-ASSEMBLER
   15: 
   16:  also R8C-ASSEMBLER definitions
   17: 
   18: \ for tests only                hfs 07:47 04/24/92
   19: 
   20:  : TC, base @ >r hex 0 <# # # #>       type r> base ! ;
   21:  : T,  base @ >r hex 0 <# # # # # #>   type r> base ! ;
   22:  : ta, base @ >r hex 0 <# # # # # # #> type r> base ! ;
   23: 
   24: 
   25:  HERE                   ( Begin )
   26: 
   27: \ VARIABLEs and RESET                        hfs 10:03 04/23/92
   28: 
   29:       VARIABLE SSP                 \ save of SP
   30:       VARIABLE <,>                 \ two addrs
   31:       VARIABLE <M>                 \ mode searched for in table
   32:       VARIABLE <OPC>               \ OPCode
   33:       VARIABLE <S-OPND>
   34:       VARIABLE <D-OPND>
   35: 
   36: \ for tests only                             hfs 07:47 04/24/92
   37: 
   38:  : 2hex. dup base @ >r  hex 0 <# # # #> type bl emit r> base ! ;
   39:  : 4hex. dup base @ >r  hex 0 <# # # # # #> type bl emit r> base ! ;
   40:  : hfs cr ." hurah" ;
   41:  : opc. <OPC> 4 dump ;
   42:  : m. <M> c@ 2hex. <M> 1+ c@ 2hex. ;
   43: \ for tests only
   44: 
   45:  : ssave SP@ SSP ! ;
   46: 
   47:  : RESET       ( clears all variables )
   48:    0 <M>   C!    $0FF <M>   1+ C!
   49:    0 <OPC> C!    $0FF <OPC> 1+ C!
   50:    <S-OPND> OFF  <D-OPND> OFF
   51:    <,> OFF       ssave ;
   52: 
   53:  : opnd?  ( -- N ) SSP @ SP@ - 1 cells - 1 cells / ;
   54:  : ,? <,> @ ;
   55:  : S-OPND? <S-OPND> @ ;
   56:  : D-OPND? <D-OPND> @ ;
   57: 
   58:  : WITHIN >R OVER > SWAP R> <= 0= OR 0= ;
   59: 
   60:  : 4B?  ( n -- n f ) ( within -8 .. 7 ? )
   61:    DUP -$8   $7   WITHIN ;
   62:  : >4B?  ( n -- n f ) 4B? 0= ;
   63: 
   64:  : 8B?  ( n -- n f ) ( within -128 .. 127 ? )
   65:    DUP -$80   $7F   WITHIN ;
   66:  : >8B?  ( n -- n f ) 8B? 0= ;
   67: 
   68:    $07    CONSTANT abs3
   69:  : abs3?  ( n -- n f ) DUP abs3 u< ;
   70:  : >abs3? ( n -- n f ) abs3? 0= ;
   71: 
   72:    $0ff   CONSTANT abs8
   73:  : abs8?  ( n -- n f ) DUP abs8 u< ;
   74:  : >abs8? ( n -- n f ) abs8? 0= ;
   75: 
   76:  : >opc <M> 1+ C@ <OPC> 1+ C! ;
   77:  : OPC, <OPC> C@ TC, <OPC> 1+ C@ TC, ;
   78: 
   79:  : M: CREATE  C, C,
   80:        DOES> ,?
   81:        IF    dup C@          <M>    c@ $F0 AND OR <M>    c!
   82:               1+ C@          <M> 1+ c@ $F0 AND OR <M> 1+ c!
   83:        ELSE  dup C@ 4 lshift <M>    c@ $0F AND OR <M>    c!
   84:               1+ C@ 4 lshift <M> 1+ c@ $0F AND OR <M> 1+ c!
   85:        THEN ;
   86: 
   87: \ address-modes hfs
   88: 
   89:  %0000 0 M: R0    ' R0 alias R0L ' R0  alias C
   90:  %0001 0 M: R1    ' R1 alias R0H ' R1  alias D
   91:  %0010 0 M: R2    ' R2 alias R1L ' R2  alias Z
   92:  %0011 0 M: R3    ' R3 alias R1H ' R3  alias S
   93:  %0100 0 M: A0                   ' A0  alias B
   94:  %0101 0 M: A1                   ' A1  alias O
   95:  %0110 0 M: [A0]                ' [A0] alias I
   96:  %0111 0 M: [A1]                ' [A1] alias U
   97:  %1010 0 M: [SB]
   98:  %1011 0 M: [FB]
   99:  %1111 0 M: abs:16
  100:  %0000 1 M: #
  101:  %0001 1 M: INTBL
  102:  %0010 1 M: INTBH
  103:  %0011 1 M: FLG
  104:  %0100 1 M: ISP
  105:  %0101 1 M: SP
  106:  %0110 1 M: SB
  107:  %0111 1 M: FB
  108:  
  109: \ %0000 2 M: [SP]
  110: 
  111: \ two cells are used for each adress mode in the table:
  112: \
  113: \ cell 1 contains the src and dst MODE# searched for.
  114: \
  115: \ Cell 2 contains the xt of the action word for this address mode.
  116: \
  117: \ |     #src#dst|src  dst|                     |
  118: \ |.....76543210 76543210 .....7654321076543210|
  119: \ |          MODE        |            xt       |
  120: 
  121: 
  122:  : TABLE:        ( -- addr ) \ generate new table
  123:    CREATE HERE DUP 1 cells + , RESET ;
  124: 
  125:  : ;TABLE        ( addr -- ) \ change endpoint
  126:    HERE SWAP ! ;
  127: 
  128:  : TAB,          ( xt opcode -- )
  129:    <M> @ , , RESET ;
  130: 
  131:  : SEARCH.MODE.2 ( addr -- xt )
  132:    TRUE SWAP
  133:    DUP     C@ <OPC>     C!    ( opc from GROUP2: )
  134:    DUP 1+  C@ <OPC> 1+  C!    ( opc from GROUP2: )
  135:    2 + @ DUP @                ( tableaddr )
  136:    SWAP 1 cells +             ( end+2 begin )
  137:    ?DO [ forth ] I [ r8c-assembler ] @ <M> @ =
  138:        IF [ forth ] I [ r8c-assembler ] 1 cells + @ swap 0= LEAVE THEN
  139:    2 cells +LOOP ABORT" Addressmode failed" ;
  140: 
  141:  : SEARCH.MODE.4 ( addr -- xt )
  142:    TRUE SWAP
  143:    DUP     C@ <OPC>     C!    ( opc from GROUP4: )
  144:    DUP 1+  C@ <OPC> 1+  C!    ( opc from GROUP4: )
  145:    DUP 2 + C@ <OPC> 2 + C!    ( opc from GROUP4: )
  146:    DUP 3 + C@ <OPC> 3 + C!    ( opc from GROUP4: )
  147:    4 + @ DUP @                ( tableaddr )
  148:    SWAP 1 cells +             ( end+2 begin )
  149:    ?DO [ forth ] I [ r8c-assembler ] @ <M> @ =
  150:        IF [ forth ] I [ r8c-assembler ] 1 cells + @ swap 0= LEAVE THEN
  151:    2 cells +LOOP ABORT" Addressmode failed" ;
  152: 
  153: \ GROUPS                                     hfs 07:18 04/24/92
  154: 
  155:  : GROUP1.B: CREATE C,              ( opc  -- )
  156:              DOES>  c@ TC,
  157:              opnd?
  158:              IF >8B?  ABORT" displacement > 8 Bit" TC, THEN
  159:              RESET ;
  160: 
  161:  : GROUP1.W: CREATE C,              ( opc  -- )
  162:              DOES>  c@ TC,
  163:              opnd?
  164:              IF T, THEN
  165:              RESET ;
  166: 
  167:  : GROUP2.B: CREATE C, C,           ( opc opc  -- )
  168:              DOES>  dup c@ TC, 1+ c@ TC,
  169:              opnd?
  170:              IF >8B?  ABORT" displacement > 8 Bit" TC, THEN
  171:              RESET ;
  172: 
  173:  : GROUP2.F: CREATE C, C,           ( opc opc  -- )
  174:              DOES>   dup c@ TC, 1+ c@ <M> 1+ C@ or TC,
  175:              RESET ;
  176: 
  177:  : GROUP2:   CREATE C, C,  ,        ( xt opc opc  -- )
  178:              DOES> SEARCH.MODE.2 EXECUTE RESET ;
  179: 
  180:  : GROUP4:   CREATE C, C,  C, C,  , ( xt opc opc  opc opc  -- )
  181:              DOES> SEARCH.MODE.4 EXECUTE RESET ;
  182: 
  183: 
  184: \ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  185:  : , opnd? <s-opnd> ! ssave <,> ON ;
  186: \ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  187: 
  188:  : [An],     <M> 1+ C@ $F0 AND
  189:              CASE
  190:                 %01100000 of s-opnd?  \ [A0]
  191:                              IF abs8? IF %10000000 ELSE %11000000 THEN
  192:                              <M> 1+ C@ $0F AND OR <M> 1+ C! THEN
  193:                           endof
  194:                 %01110000 of s-opnd?  \ [A1]
  195:                              IF abs8? IF %10010000 ELSE %11010000 THEN
  196:                              <M> 1+ C@ $0F AND OR <M> 1+ C! THEN
  197:                           endof
  198:              ENDCASE ;
  199: 
  200:  : ,[An]     <M> 1+ C@ $0F AND
  201:              CASE
  202:                 %0110 of d-opnd?  \ [A0]
  203:                          IF abs8? IF %1000 ELSE %1100 THEN
  204:                          <M> 1+ C@ $F0 AND OR <M> 1+ C! THEN
  205:                       endof
  206:                 %0111 of d-opnd?  \ [A1]
  207:                          IF abs8? IF %1001 ELSE %1101 THEN
  208:                          <M> 1+ C@ $F0 AND OR <M> 1+ C! THEN
  209:                       endof
  210:              ENDCASE ;
  211: 
  212:  : [SB],     s-opnd?
  213:              IF >abs8? IF %11100000 <M> 1+ C@ $0F AND OR <M> 1+ C! THEN
  214:              ELSE ." displacement expected" ABORT THEN ;
  215: 
  216:  : ,[SB]     d-opnd?
  217:              IF >abs8? IF %1110 <M> 1+ C@ $F0 AND OR <M> 1+ C! THEN
  218:              ELSE ." displacement expected" ABORT THEN ;
  219: 
  220:  : [FB],     s-opnd? 0= ABORT" displacement expected" ;
  221: 
  222:  : ,[FB]     d-opnd? 0= ABORT" displacement expected" ;
  223: 
  224:  : abs:16,   s-opnd? 0= ABORT" absolute Adr expected" ;
  225: 
  226:  : ,abs:16   d-opnd? 0= ABORT" absolute Adr expected" ;
  227: 
  228:  : #,        s-opnd? 0= ABORT" operand expected"
  229:              <OPC> 2 + c@ <OPC> c!
  230:              <OPC> 3 + c@ <M> 1+ c@ $0F and or <M> 1+ c! ;
  231: 
  232:  : q#,       s-opnd? 0= ABORT" operand expected"
  233:              s-opnd? d-opnd? and IF swap THEN
  234:              >4B? ABORT" immediate > 4 Bit"
  235:              4 lshift <M> 1+ c@ $0F and or <M> 1+ c! ;
  236: 
  237:  : ctrl,     <M> 1+ C@ %10000000 OR <M> 1+ C! ;
  238: 
  239:  : ,ctrl     <M> 1+ C@ $0F and 4 lshift
  240:              <M> 1+ C@ $F0 and 4 rshift OR %10000000 or <M> 1+ C! ;
  241: 
  242: \ ----------------------------------------------------------------------------------------------
  243: \ ----------------------------------------------------------------------------------------------
  244:  %01101000 GROUP1.B: JGEU ' JGEU alias JC
  245:  %01101001 GROUP1.B: JGTU
  246:  %01101010 GROUP1.B: JEQ  ' JEQ  alias JZ
  247:  %01101011 GROUP1.B: JN
  248:  %01101100 GROUP1.B: JLTU ' JLTU alias JNC
  249:  %01101101 GROUP1.B: JLEU
  250:  %01101110 GROUP1.B: JNE  ' JNE  alias JNZ
  251:  %01101111 GROUP1.B: JPZ
  252: 
  253:  %11111110 GROUP1.B: JMP.B
  254: 
  255:  %11110100 GROUP1.W: JMP.W
  256: 
  257:  %11001000 %01111101 GROUP2.B: JLE
  258:  %11001001 %01111101 GROUP2.B: JO
  259:  %11001010 %01111101 GROUP2.B: JGE
  260:  %11001100 %01111101 GROUP2.B: JGT
  261:  %11001101 %01111101 GROUP2.B: JNO
  262:  %11001110 %01111101 GROUP2.B: JLT
  263: 
  264:  %00000101 %11101011 GROUP2.F: FCLR
  265:  %00000100 %11101011 GROUP2.F: FSET
  266: 
  267: \ ----------------------------------------------------------------------------------------------
  268:  : ctrl,R    opnd? <d-opnd> !
  269:              ctrl,
  270:              >opc OPC, ;
  271: 
  272:  : ctrl,[An] opnd? <d-opnd> !
  273:              ctrl, ,[An]
  274:              >opc OPC,
  275:              d-opnd?
  276:              IF abs8? IF TC, ELSE T, THEN THEN ;
  277: 
  278:  : ctrl,[SB] opnd? <d-opnd> !
  279:              ctrl, ,[SB]
  280:              >opc OPC,
  281:              d-opnd?
  282:              IF >abs8? IF %1110 <M> 1+ C@ $F0 AND OR <M> 1+ C! THEN
  283:              ELSE ." displacement expected" ABORT THEN
  284:              abs8? IF TC, ELSE T, THEN ;
  285: 
  286:  : ctrl,[FB] opnd? <d-opnd> !
  287:              ctrl, ,[An]
  288:              >opc OPC,
  289:              d-opnd?
  290:              IF >8B? ABORT" displacement > 8 Bit"
  291:              ELSE ." displacement expected" ABORT THEN
  292:              TC, ;
  293: 
  294:  : ctrl,abs:16 opnd? <d-opnd> !
  295:              ctrl, ,abs:16
  296:              >opc OPC,
  297:              d-opnd?
  298:              0= ABORT" operand expected"
  299:              T, ;
  300: 
  301:  Table: st-control-reg
  302:         INTBL , R0     ' ctrl,R TAB,        INTBL , R1     ' ctrl,R TAB,
  303:         INTBL , R2     ' ctrl,R TAB,        INTBL , R3     ' ctrl,R TAB,
  304:         INTBL , A0     ' ctrl,R TAB,        INTBL , A1     ' ctrl,R TAB,
  305:         INTBL , [A0]   ' ctrl,[An] TAB,     INTBL , [A1]   ' ctrl,[An] TAB,
  306:         INTBL , [SB]   ' ctrl,[SB] TAB,     INTBL , [FB]   ' ctrl,[FB] TAB,
  307:         INTBL , abs:16 ' ctrl,abs:16 TAB,
  308:         INTBH , R0     ' ctrl,R TAB,        INTBH , R1     ' ctrl,R TAB,
  309:         INTBH , R2     ' ctrl,R TAB,        INTBH , R3     ' ctrl,R TAB,
  310:         INTBH , A0     ' ctrl,R TAB,        INTBH , A1     ' ctrl,R TAB,
  311:         INTBH , [A0]   ' ctrl,[An] TAB,     INTBH , [A1]   ' ctrl,[An] TAB,
  312:         INTBH , [SB]   ' ctrl,[SB] TAB,     INTBH , [FB]   ' ctrl,[FB] TAB,
  313:         INTBL , abs:16 ' ctrl,abs:16 TAB,
  314:         FLG   , R0     ' ctrl,R TAB,        FLG   , R1     ' ctrl,R TAB,
  315:         FLG   , R2     ' ctrl,R TAB,        FLG   , R3     ' ctrl,R TAB,
  316:         FLG   , A0     ' ctrl,R TAB,        FLG   , A1     ' ctrl,R TAB,
  317:         FLG   , [A0]   ' ctrl,[An] TAB,     FLG   , [A1]   ' ctrl,[An] TAB,
  318:         FLG   , [SB]   ' ctrl,[SB] TAB,     FLG   , [FB]   ' ctrl,[FB] TAB,
  319:         FLG   , abs:16 ' ctrl,abs:16 TAB,
  320:         ISP   , R0     ' ctrl,R TAB,        ISP   , R1     ' ctrl,R TAB,
  321:         ISP   , R2     ' ctrl,R TAB,        ISP   , R3     ' ctrl,R TAB,
  322:         ISP   , A0     ' ctrl,R TAB,        ISP   , A1     ' ctrl,R TAB,
  323:         ISP   , [A0]   ' ctrl,[An] TAB,     ISP   , [A1]   ' ctrl,[An] TAB,
  324:         ISP   , [SB]   ' ctrl,[SB] TAB,     ISP   , [FB]   ' ctrl,[FB] TAB,
  325:         ISP   , abs:16 ' ctrl,abs:16 TAB,
  326:         SP    , R0     ' ctrl,R TAB,        SP    , R1     ' ctrl,R TAB,
  327:         SP    , R2     ' ctrl,R TAB,        SP    , R3     ' ctrl,R TAB,
  328:         SP    , A0     ' ctrl,R TAB,        SP    , A1     ' ctrl,R TAB,
  329:         SP    , [A0]   ' ctrl,[An] TAB,     SP    , [A1]   ' ctrl,[An] TAB,
  330:         SP    , [SB]   ' ctrl,[SB] TAB,     SP    , [FB]   ' ctrl,[FB] TAB,
  331:         SP    , abs:16 ' ctrl,abs:16 TAB,
  332:         SB    , R0     ' ctrl,R TAB,        SB    , R1     ' ctrl,R TAB,
  333:         SB    , R2     ' ctrl,R TAB,        SB    , R3     ' ctrl,R TAB,
  334:         SB    , A0     ' ctrl,R TAB,        SB    , A1     ' ctrl,R TAB,
  335:         SB    , [A0]   ' ctrl,[An] TAB,     SB    , [A1]   ' ctrl,[An] TAB,
  336:         SB    , [SB]   ' ctrl,[SB] TAB,     SB    , [FB]   ' ctrl,[FB] TAB,
  337:         SB    , abs:16 ' ctrl,abs:16 TAB,
  338:         FB    , R0     ' ctrl,R TAB,        FB    , R1     ' ctrl,R TAB,
  339:         FB    , R2     ' ctrl,R TAB,        FB    , R3     ' ctrl,R TAB,
  340:         FB    , A0     ' ctrl,R TAB,        FB    , A1     ' ctrl,R TAB,
  341:         FB    , [A0]   ' ctrl,[An] TAB,     FB    , [A1]   ' ctrl,[An] TAB,
  342:         FB    , [SB]   ' ctrl,[SB] TAB,     FB    , [FB]   ' ctrl,[FB] TAB,
  343:         FB    , abs:16 ' ctrl,abs:16 TAB,
  344: 
  345:  ;TABLE
  346: 
  347:  st-control-reg %11111111 %01111011 GROUP2: stc
  348: 
  349: \ ----------------------------------------------------------------------------------------------
  350:  : R,ctrl    ,ctrl
  351:              >opc OPC, ;
  352: 
  353:  : [An],ctrl opnd? <d-opnd> !
  354:              [An], ,ctrl
  355:              >opc OPC,
  356:              s-opnd?
  357:              IF abs8? IF TC, ELSE T, THEN THEN ;
  358: 
  359:  : [SB],ctrl opnd? <d-opnd> !
  360:              [SB], ,ctrl
  361:              >opc OPC,
  362:              abs8? IF TC, ELSE T, THEN ;
  363: 
  364:  : [FB],ctrl opnd? <d-opnd> !
  365:              [FB], ,ctrl
  366:              >opc OPC,
  367:              >8B? ABORT" displacement > 8 Bit"
  368:              TC, ;
  369: 
  370:  : #,ctrl    #, ,ctrl
  371:              <M> 1+ C@ %01111111 and <M> 1+ C!
  372:              >opc OPC,
  373:              T, ;
  374: 
  375:  Table: ld-control-reg
  376:         R0   , INTBL ' R,ctrl TAB,        R0   , INTBH  ' R,ctrl TAB,
  377:         R0   , FLG   ' R,ctrl TAB,        R0   , ISP    ' R,ctrl TAB,
  378:         R0   , SP    ' R,ctrl TAB,        R0   , SB     ' R,ctrl TAB,
  379:         R0   , FB    ' R,ctrl TAB,
  380:         R1   , INTBL ' R,ctrl TAB,        R1   , INTBH  ' R,ctrl TAB,
  381:         R1   , FLG   ' R,ctrl TAB,        R1   , ISP    ' R,ctrl TAB,
  382:         R1   , SP    ' R,ctrl TAB,        R1   , SB     ' R,ctrl TAB,
  383:         R1   , FB    ' R,ctrl TAB,
  384:         R2   , INTBL ' R,ctrl TAB,        R2   , INTBH  ' R,ctrl TAB,
  385:         R2   , FLG   ' R,ctrl TAB,        R2   , ISP    ' R,ctrl TAB,
  386:         R2   , SP    ' R,ctrl TAB,        R2   , SB     ' R,ctrl TAB,
  387:         R2   , FB    ' R,ctrl TAB,
  388:         R3   , INTBL ' R,ctrl TAB,        R3   , INTBH  ' R,ctrl TAB,
  389:         R3   , FLG   ' R,ctrl TAB,        R3   , ISP    ' R,ctrl TAB,
  390:         R3   , SP    ' R,ctrl TAB,        R3   , SB     ' R,ctrl TAB,
  391:         R3   , FB    ' R,ctrl TAB,
  392:         A0   , INTBL ' R,ctrl TAB,        A0   , INTBH  ' R,ctrl TAB,
  393:         A0   , FLG   ' R,ctrl TAB,        A0   , ISP    ' R,ctrl TAB,
  394:         A0   , SP    ' R,ctrl TAB,        A0   , SB     ' R,ctrl TAB,
  395:         A0   , FB    ' R,ctrl TAB,
  396:         A1   , INTBL ' R,ctrl TAB,        A1   , INTBH  ' R,ctrl TAB,
  397:         A1   , FLG   ' R,ctrl TAB,        A1   , ISP    ' R,ctrl TAB,
  398:         A1   , SP    ' R,ctrl TAB,        A1   , SB     ' R,ctrl TAB,
  399:         A1   , FB    ' R,ctrl TAB,
  400:         [A0] , INTBL ' [An],ctrl TAB,   [A0]   , INTBH  ' [An],ctrl TAB,
  401:         [A0] , FLG   ' [An],ctrl TAB,   [A0]   , ISP    ' [An],ctrl TAB,
  402:         [A0] , SP    ' [An],ctrl TAB,   [A0]   , SB     ' [An],ctrl TAB,
  403:         [A0] , FB    ' [An],ctrl TAB,
  404:         [A1] , INTBL ' [An],ctrl TAB,   [A1]   , INTBH  ' [An],ctrl TAB,
  405:         [A1] , FLG   ' [An],ctrl TAB,   [A1]   , ISP    ' [An],ctrl TAB,
  406:         [A1] , SP    ' [An],ctrl TAB,   [A1]   , SB     ' [An],ctrl TAB,
  407:         [A1] , FB    ' [An],ctrl TAB,
  408:         [SB] , INTBL ' [SB],ctrl TAB,   [SB]   , INTBH  ' [SB],ctrl TAB,
  409:         [SB] , FLG   ' [SB],ctrl TAB,   [SB]   , ISP    ' [SB],ctrl TAB,
  410:         [SB] , SP    ' [SB],ctrl TAB,   [SB]   , SB     ' [SB],ctrl TAB,
  411:         [SB] , FB    ' [FB],ctrl TAB,
  412:         [FB] , INTBL ' [FB],ctrl TAB,   [FB]   , INTBH  ' [FB],ctrl TAB,
  413:         [FB] , FLG   ' [FB],ctrl TAB,   [FB]   , ISP    ' [FB],ctrl TAB,
  414:         [FB] , SP    ' [FB],ctrl TAB,   [FB]   , SB     ' [FB],ctrl TAB,
  415:         [FB] , FB    ' [FB],ctrl TAB,
  416:          #   , INTBL ' #,ctrl TAB,        #    , INTBH  ' #,ctrl TAB,
  417:          #   , FLG   ' #,ctrl TAB,        #    , ISP    ' #,ctrl TAB,
  418:          #   , SP    ' #,ctrl TAB,        #    , SB     ' #,ctrl TAB,
  419:          #   , FB    ' #,ctrl TAB,
  420:  ;TABLE
  421: 
  422:  ld-control-reg %00000000 %11101011  %11111111 %01111010 GROUP4: ldc
  423: 
  424: \ ----------------------------------------------------------------------------------------------
  425:  : (R)    <OPC> 1+ c@ <M> 1+ c@ 4 rshift or <M> 1+ c!
  426:           >opc OPC,
  427:           opnd? IF 8B? IF TC, ELSE T, THEN THEN ;
  428: 
  429: 
  430:  : ([An]) <OPC> 1+ c@ <M> 1+ c@ 4 rshift or <M> 1+ c!
  431:           <M> 1+ C@ $0F AND
  432:           CASE
  433:               %0110 of opnd?  \ [A0]
  434:                        IF abs8? IF %1000 ELSE %1100 THEN
  435:                        <M> 1+ C@ $F0 AND OR <M> 1+ C! THEN
  436:                     endof
  437:               %0111 of opnd?  \ [A1]
  438:                        IF abs8? IF %1001 ELSE %1101 THEN
  439:                        <M> 1+ C@ $F0 AND OR <M> 1+ C! THEN
  440:                     endof
  441:            ENDCASE
  442:            >opc OPC,
  443:            <opc> c@ %01111101 = <opc> 1+ c@ %00101100 = and   \ $12345 [ao] jmpi.w
  444:            <opc> c@ %01111101 = <opc> 1+ c@ %00101101 = and   \ $12345 [a1] jmpi.w
  445:            or
  446:            IF   opnd? IF 8B? IF TC, ELSE ta, THEN THEN
  447:            ELSE opnd? IF 8B? IF TC, ELSE T,  THEN THEN THEN ;
  448: 
  449:  : ([SB])  <OPC> 1+ c@ <M> 1+ c@ 4 rshift or <M> 1+ c!
  450:            opnd?
  451:            IF >abs8? IF %1110 <M> 1+ C@ $F0 AND OR <M> 1+ C! THEN
  452:            ELSE ." displacement expected" ABORT THEN
  453:            >opc OPC,
  454:            8B? IF TC, ELSE T, THEN ;
  455: 
  456:  : ([FB])  <OPC> 1+ c@ <M> 1+ c@ 4 rshift or <M> 1+ c!
  457:            opnd?
  458:            IF >8B? ABORT" displacement > 8 Bit"
  459:            ELSE ." displacement expected" ABORT THEN
  460:            >opc OPC,
  461:            TC, ;
  462: 
  463:  : (abs:16) <OPC> 1+ c@ <M> 1+ c@ 4 rshift or <M> 1+ c!
  464:            opnd? 0= ABORT" operand expected"
  465:            >opc OPC,
  466:            T, ;
  467: 
  468:  Table: 2ByteOPC(dsp8/dsp16)          \ 2ByteOPC(dsp8/dsp16)
  469:         R0          ' (R) TAB,        R1     ' (R) TAB,
  470:         R2          ' (R) TAB,        R3     ' (R) TAB,
  471:         A0          ' (R) TAB,        A1     ' (R) TAB,
  472:         [A0]        ' ([An]) TAB,     [A1]   ' ([An]) TAB,
  473:         [SB]        ' ([SB]) TAB,     [FB]   ' ([FB]) TAB,
  474:         abs:16      ' (abs:16) TAB,
  475:  ;TABLE
  476: 
  477:  2ByteOPC(dsp8/dsp16) %11110000 %01110110 GROUP2: abs.b
  478:  2ByteOPC(dsp8/dsp16) %11100000 %01110110 GROUP2: adcf.b
  479:  2ByteOPC(dsp8/dsp16) %11010000 %01110110 GROUP2: div.b
  480:  2ByteOPC(dsp8/dsp16) %11000000 %01110110 GROUP2: divu.b
  481:  2ByteOPC(dsp8/dsp16) %10010000 %01110110 GROUP2: divx.b
  482:  2ByteOPC(dsp8/dsp16) %01010000 %01110100 GROUP2: neg.b
  483:  2ByteOPC(dsp8/dsp16) %01110000 %01110100 GROUP2: not.b:g
  484:  2ByteOPC(dsp8/dsp16) %11010000 %01110100 GROUP2: pop.b:g
  485:  2ByteOPC(dsp8/dsp16) %01000000 %01110100 GROUP2: push.b:g
  486:  2ByteOPC(dsp8/dsp16) %10100000 %01110110 GROUP2: rolc.b
  487:  2ByteOPC(dsp8/dsp16) %10110000 %01110110 GROUP2: rorc.b
  488: 
  489:  2ByteOPC(dsp8/dsp16) %11110000 %01110111 GROUP2: abs.w
  490:  2ByteOPC(dsp8/dsp16) %11100000 %01110111 GROUP2: adcf.w
  491:  2ByteOPC(dsp8/dsp16) %11010000 %01110111 GROUP2: div.w
  492:  2ByteOPC(dsp8/dsp16) %11000000 %01110111 GROUP2: divu.w
  493:  2ByteOPC(dsp8/dsp16) %10010000 %01110111 GROUP2: divx.w
  494:  2ByteOPC(dsp8/dsp16) %01010000 %01110101 GROUP2: neg.w
  495:  2ByteOPC(dsp8/dsp16) %01110000 %01110101 GROUP2: not.w:g
  496:  2ByteOPC(dsp8/dsp16) %11010000 %01110101 GROUP2: pop.w:g
  497:  2ByteOPC(dsp8/dsp16) %01000000 %01110101 GROUP2: push.w:g
  498:  2ByteOPC(dsp8/dsp16) %10100000 %01110111 GROUP2: rolc.w
  499:  2ByteOPC(dsp8/dsp16) %10110000 %01110111 GROUP2: rorc.w
  500: 
  501:  2ByteOPC(dsp8/dsp16) %00100000 %01111101 GROUP2: jmpi.w
  502: 
  503: \ ----------------------------------------------------------------------------------------------
  504:  : q#,R      opnd? <d-opnd> !
  505:              q#,
  506:              >opc OPC, ;
  507: 
  508:  : q#,[an]   opnd? <d-opnd> !
  509:              q#, ,[an]
  510:              >opc OPC,
  511:              d-opnd?
  512:              IF abs8? IF TC, ELSE T, THEN THEN ;
  513: 
  514:  : q#,[sb]   opnd? <d-opnd> !
  515:              q#, ,[sb]
  516:              >opc OPC,
  517:              d-opnd?
  518:              IF >abs8? IF %1110 <M> 1+ C@ $F0 AND OR <M> 1+ C! THEN
  519:              ELSE ." displacement expected" ABORT THEN
  520:              abs8? IF TC, ELSE T, THEN ;
  521: 
  522:  : q#,[fb]   opnd? <d-opnd> !
  523:              q#, ,[fb]
  524:              >opc OPC,
  525:              d-opnd?
  526:              IF >8B? ABORT" displacement > 8 Bit"
  527:              ELSE ." displacement expected" ABORT THEN
  528:              TC, ;
  529: 
  530:  : q#,abs:16 opnd? <d-opnd> !
  531:              q#, ,abs:16
  532:              >opc OPC,
  533:              d-opnd?
  534:              0= ABORT" operand expected"
  535:              T, ;
  536:  Table: quick
  537:         #   , R0     ' q#,R TAB,        #   , R1     ' q#,R TAB,
  538:         #   , R2     ' q#,R TAB,        #   , R3     ' q#,R TAB,
  539:         #   , A0     ' q#,R TAB,        #   , A1     ' q#,R TAB,
  540:         #   , [A0]   ' q#,[An] TAB,     #   , [A1]   ' q#,[An] TAB,
  541:         #   , [SB]   ' q#,[SB] TAB,     #   , [FB]   ' q#,[FB] TAB,
  542:         #   , abs:16 ' q#,abs:16 TAB,
  543:  ;TABLE
  544: 
  545:  quick %00000000 %11001000 GROUP2: add.b:q
  546:  quick %00000000 %11010000 GROUP2: cmp.b:q
  547:  quick %00000000 %11011000 GROUP2: mov.b:q
  548:  quick %00000000 %11100000 GROUP2: rot.b
  549:  quick %00000000 %11110000 GROUP2: sha.b
  550:  quick %00000000 %11101000 GROUP2: shl.b
  551: 
  552:  quick %00000000 %11001001 GROUP2: add.w:q
  553:  quick %00000000 %11010001 GROUP2: cmp.w:q
  554:  quick %00000000 %11011001 GROUP2: mov.w:q
  555:  quick %00000000 %11100001 GROUP2: rot.w
  556:  quick %00000000 %11110001 GROUP2: sha.w
  557:  quick %00000000 %11101001 GROUP2: shl.w
  558: 
  559: \ ----------------------------------------------------------------------------------------------
  560:  : R,R      >opc OPC, ;
  561: 
  562:  : R,[An]    opnd? <d-opnd> !
  563:              ,[An]
  564:              >opc OPC,
  565:              s-opnd? d-opnd? and IF swap THEN
  566:              s-opnd?
  567:              IF abs8? IF TC, ELSE T, THEN THEN
  568:              d-opnd?
  569:              IF abs8? IF TC, ELSE T, THEN THEN ;
  570: 
  571:  : R,[SB]    opnd? <d-opnd> !
  572:              ,[SB]
  573:              >opc OPC,
  574:              abs8? IF TC, ELSE T, THEN ;
  575: 
  576:  : R,[FB]    opnd? <d-opnd> !
  577:              ,[FB]
  578:              >opc OPC,
  579:              >8B? ABORT" displacement > 8 Bit"
  580:              TC, ;
  581: 
  582:  : R,abs:16  opnd? <d-opnd> !
  583:              ,abs:16
  584:              >opc OPC,
  585:              d-opnd?
  586:              IF abs8? IF TC, ELSE T, THEN THEN ;
  587: \ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  588:  : [An],R    opnd? <d-opnd> !
  589:              [An],
  590:              >opc OPC,
  591:              s-opnd?
  592:              IF abs8? IF TC, ELSE T, THEN THEN ;
  593: 
  594:  : [An],[An] opnd? <d-opnd> !
  595:              [An], ,[An]
  596:              >opc OPC,
  597:              s-opnd? d-opnd? and IF swap THEN
  598:              s-opnd?
  599:              IF abs8? IF TC, ELSE T, THEN THEN
  600:              d-opnd?
  601:              IF abs8? IF TC, ELSE T, THEN THEN ;
  602: 
  603:  : [An],[SB] opnd? <d-opnd> !
  604:              [An], ,[SB]
  605:              >opc OPC,
  606:              s-opnd? d-opnd? and IF swap THEN
  607:              s-opnd?
  608:              IF abs8? IF TC, ELSE T, THEN THEN
  609:              abs8? IF TC, ELSE T, THEN ;
  610: 
  611:  : [An],[FB] opnd? <d-opnd> !
  612:              [An], ,[FB]
  613:              >opc OPC,
  614:              s-opnd? d-opnd? and IF swap THEN
  615:              s-opnd?
  616:              IF abs8? IF TC, ELSE T, THEN THEN
  617:              >8B? ABORT" displacement > 8 Bit"
  618:              TC, ;
  619: 
  620:  : [An],abs:16 opnd? <d-opnd> !
  621:              [An], ,abs:16
  622:              >opc OPC,
  623:              s-opnd? d-opnd? and IF swap THEN
  624:              s-opnd?
  625:              IF abs8? IF TC, ELSE T, THEN THEN
  626:              d-opnd?
  627:              IF abs8? IF TC, ELSE T, THEN THEN ;
  628: \ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  629:  : [SB],R    opnd? <d-opnd> !
  630:              [SB],
  631:              >opc OPC,
  632:              s-opnd? d-opnd? and IF swap THEN
  633:              s-opnd?
  634:              IF abs8? IF TC, ELSE T, THEN THEN
  635:              d-opnd?
  636:              IF abs8? IF TC, ELSE T, THEN THEN ;
  637: 
  638: 
  639:  : [SB],[An] opnd? <d-opnd> !
  640:              [SB], ,[An]
  641:              >opc OPC,
  642:              s-opnd? d-opnd? and IF swap THEN
  643:              s-opnd?
  644:              IF abs8? IF TC, ELSE T, THEN THEN
  645:              d-opnd?
  646:              IF abs8? IF TC, ELSE T, THEN THEN ;
  647: 
  648: 
  649:  : [SB],[SB] opnd? <d-opnd> !
  650:              [SB], ,[SB]
  651:              >opc OPC,
  652:              s-opnd? d-opnd? and IF swap THEN
  653:              s-opnd?
  654:              IF abs8? IF TC, ELSE T, THEN THEN
  655:              d-opnd?
  656:              IF abs8? IF TC, ELSE T, THEN THEN ;
  657: 
  658: 
  659:  : [SB],[FB] opnd? <d-opnd> !
  660:              [SB], ,[FB]
  661:              >opc OPC,
  662:              s-opnd? d-opnd? and IF swap THEN
  663:              s-opnd?
  664:              IF abs8? IF TC, ELSE T, THEN THEN
  665:              >8B? ABORT" displacement > 8 Bit"
  666:              TC, ;
  667: 
  668:  : [SB],abs:16 opnd? <d-opnd> !
  669:              [SB], ,abs:16
  670:              >opc OPC,
  671:              s-opnd? d-opnd? and IF swap THEN
  672:              s-opnd?
  673:              IF abs8? IF TC, ELSE T, THEN THEN
  674:              d-opnd?
  675:              IF abs8? IF TC, ELSE T, THEN THEN ;
  676: \ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  677:  : [FB],R    opnd? <d-opnd> !
  678:              [FB],
  679:              >opc OPC,
  680:              s-opnd? d-opnd? and IF swap THEN
  681:              >8B? ABORT" displacement > 8 Bit"
  682:              TC,
  683:              d-opnd?
  684:              IF abs8? IF TC, ELSE T, THEN THEN ;
  685: 
  686:  : [FB],[An] opnd? <d-opnd> !
  687:              [FB], ,[An]
  688:              >opc OPC,
  689:              s-opnd? d-opnd? and IF swap THEN
  690:              >8B? ABORT" displacement > 8 Bit"
  691:              TC,
  692:              d-opnd?
  693:              IF abs8? IF TC, ELSE T, THEN THEN ;
  694: 
  695:  : [FB],[SB] opnd? <d-opnd> !
  696:              [FB], ,[SB]
  697:              >opc OPC,
  698:              s-opnd? d-opnd? and IF swap THEN
  699:              >8B? ABORT" displacement > 8 Bit"
  700:              TC,
  701:              d-opnd?
  702:              IF abs8? IF TC, ELSE T, THEN THEN ;
  703: 
  704:  : [FB],[FB] opnd? <d-opnd> !
  705:              [FB], ,[FB]
  706:              >opc OPC,
  707:              s-opnd? d-opnd? and IF swap THEN
  708:              >8B? ABORT" displacement > 8 Bit"
  709:              TC,
  710:              d-opnd?
  711:              IF 8B?   IF TC, ELSE T, THEN THEN ;
  712: 
  713:  : [FB],abs:16 opnd? <d-opnd> !
  714:              [FB], ,abs:16
  715:              >opc OPC,
  716:              s-opnd? d-opnd? and IF swap THEN
  717:              >8B? ABORT" displacement > 8 Bit"
  718:              TC,
  719:              d-opnd?
  720:              IF abs8? IF TC, ELSE T, THEN THEN ;
  721: \ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  722:  : abs:16,R  opnd? <d-opnd> !
  723:              abs:16,
  724:              >opc OPC,
  725:              s-opnd?
  726:              IF abs8? IF TC, ELSE T, THEN THEN ;
  727: 
  728:  : abs:16,[An] opnd? <d-opnd> !
  729:              abs:16, ,[An]
  730:              >opc OPC,
  731:              s-opnd? d-opnd? and IF swap THEN
  732:              s-opnd?
  733:              IF abs8? IF TC, ELSE T, THEN THEN
  734:              d-opnd?
  735:              IF abs8? IF TC, ELSE T, THEN THEN ;
  736: 
  737:  : abs:16,[SB] opnd? <d-opnd> !
  738:              abs:16, ,[SB]
  739:              >opc OPC,
  740:              s-opnd? d-opnd? and IF swap THEN
  741:              s-opnd?
  742:              IF abs8? IF TC, ELSE T, THEN THEN
  743:              d-opnd?
  744:              IF abs8? IF TC, ELSE T, THEN THEN ;
  745: 
  746:  : abs:16,[FB] opnd? <d-opnd> !
  747:              abs:16, ,[FB]
  748:              >opc OPC,
  749:              s-opnd? d-opnd? and IF swap THEN
  750:              s-opnd?
  751:              IF abs8? IF TC, ELSE T, THEN THEN
  752:              >8B? ABORT" displacement > 8 Bit"
  753:              TC, ;
  754: 
  755:  : abs:16,abs:16 opnd? <d-opnd> !
  756:              abs:16, ,abs:16
  757:              >opc OPC,
  758:              s-opnd? d-opnd? and IF swap THEN
  759:              s-opnd?
  760:              IF abs8? IF TC, ELSE T, THEN THEN
  761:              d-opnd?
  762:              IF abs8? IF TC, ELSE T, THEN THEN ;
  763: \ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  764:  : #,R       opnd? <d-opnd> !
  765:              #,
  766:              >opc OPC,
  767:              T, ;
  768: 
  769:  : #,[An]    opnd? <d-opnd> !
  770:              #, ,[An]
  771:              >opc OPC,
  772:              s-opnd? d-opnd? and IF swap THEN
  773:              T,
  774:              d-opnd?
  775:              IF abs8? IF TC, ELSE T, THEN THEN ;
  776: 
  777:  : #,[SB]    opnd? <d-opnd> !
  778:              #, ,[SB]
  779:              >opc OPC,
  780:              swap
  781:              T,
  782:              abs8? IF TC, ELSE T, THEN ;
  783: 
  784:  : #,[FB]    opnd? <d-opnd> !
  785:              #, ,[FB]
  786:              >opc OPC,
  787:              swap
  788:              T,
  789:              >8B? ABORT" displacement > 8 Bit"
  790:              TC, ;
  791: 
  792:  : #,abs:16  opnd? <d-opnd> !
  793:              #, ,abs:16
  794:              >opc OPC,
  795:              swap
  796:              T,
  797:              T, ;
  798: \ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  799:  Table: generic
  800:         R0   , R0     ' R,R TAB,        R0   , R1     ' R,R TAB,
  801:         R0   , R2     ' R,R TAB,        R0   , R3     ' R,R TAB,
  802:         R0   , A0     ' R,R TAB,        R0   , A1     ' R,R TAB,
  803:         R0   , [A0]   ' R,[An] TAB,     R0   , [A1]   ' R,[An] TAB,
  804:         R0   , [SB]   ' R,[SB] TAB,     R0   , [FB]   ' R,[FB] TAB,
  805:         R0   , abs:16 ' R,abs:16 TAB,
  806: 
  807:         R1   , R0     ' R,R TAB,        R1   , R1     ' R,R TAB,
  808:         R1   , R2     ' R,R TAB,        R1   , R3     ' R,R TAB,
  809:         R1   , A0     ' R,R TAB,        R1   , A1     ' R,R TAB,
  810:         R1   , [A0]   ' R,[An] TAB,     R1   , [A1]   ' R,[An] TAB,
  811:         R1   , [SB]   ' R,[SB] TAB,     R1   , [FB]   ' R,[FB] TAB,
  812:         R1   , abs:16 ' R,abs:16 TAB,
  813: 
  814:         R2   , R0     ' R,R TAB,        R2   , R1     ' R,R TAB,
  815:         R2   , R2     ' R,R TAB,        R2   , R3     ' R,R TAB,
  816:         R2   , A0     ' R,R TAB,        R2   , A1     ' R,R TAB,
  817:         R2   , [A0]   ' R,[An] TAB,     R2   , [A1]   ' R,[An] TAB,
  818:         R2   , [SB]   ' R,[SB] TAB,     R2   , [FB]   ' R,[FB] TAB,
  819:         R2   , abs:16 ' R,abs:16 TAB,
  820: 
  821:         R3   , R0     ' R,R TAB,        R3   , R1     ' R,R TAB,
  822:         R3   , R2     ' R,R TAB,        R3   , R3     ' R,R TAB,
  823:         R3   , A0     ' R,R TAB,        R3   , A1     ' R,R TAB,
  824:         R3   , [A0]   ' R,[An] TAB,     R3   , [A1]   ' R,[An] TAB,
  825:         R3   , [SB]   ' R,[SB] TAB,     R3   , [FB]   ' R,[FB] TAB,
  826:         R3   , abs:16 ' R,abs:16 TAB,
  827: 
  828:         A0   , R0     ' R,R TAB,        A0   , R1     ' R,R TAB,
  829:         A0   , R2     ' R,R TAB,        A0   , R3     ' R,R TAB,
  830:         A0   , A0     ' R,R TAB,        A0   , A1     ' R,R TAB,
  831:         A0   , [A0]   ' R,[An] TAB,     A0   , [A1]   ' R,[An] TAB,
  832:         A0   , [SB]   ' R,[SB] TAB,     A0   , [FB]   ' R,[FB] TAB,
  833:         A0   , abs:16 ' R,abs:16 TAB,
  834: 
  835:         A1   , R0     ' R,R TAB,        A1   , R1     ' R,R TAB,
  836:         A1   , R2     ' R,R TAB,        A1   , R3     ' R,R TAB,
  837:         A1   , A0     ' R,R TAB,        A1   , A1     ' R,R TAB,
  838:         A1   , [A0]   ' R,[An] TAB,     A1   , [A1]   ' R,[An] TAB,
  839:         A1   , [SB]   ' R,[SB] TAB,     A1   , [FB]   ' R,[FB] TAB,
  840:         A1   , abs:16 ' R,abs:16 TAB,
  841: 
  842:         [A0] , R0     ' [An],R  TAB,      [A0] , R1     ' [An],R  TAB,
  843:         [A0] , R2     ' [An],R  TAB,      [A0] , R3     ' [An],R  TAB,
  844:         [A0] , A0     ' [An],R  TAB,      [A0] , A1     ' [An],R  TAB,
  845:         [A0] , [A0]   ' [An],[An] TAB,    [A0] , [A1]   ' [An],[An] TAB,
  846:         [A0] , [SB]   ' [An],[SB] TAB,    [A0] , [FB]   ' [An],[FB] TAB,
  847:         [A0] , abs:16 ' [An],abs:16 TAB,
  848: 
  849:         [A1] , R0     ' [An],R  TAB,      [A1] , R1     ' [An],R  TAB,
  850:         [A1] , R2     ' [An],R  TAB,      [A1] , R3     ' [An],R  TAB,
  851:         [A1] , A0     ' [An],R  TAB,      [A1] , A1     ' [An],R  TAB,
  852:         [A1] , [A0]   ' [An],[An] TAB,    [A1] , [A1]   ' [An],[An] TAB,
  853:         [A1] , [SB]   ' [An],[SB] TAB,    [A1] , [FB]   ' [An],[FB] TAB,
  854:         [A1] , abs:16 ' [An],abs:16 TAB,
  855: 
  856:         [SB] , R0     ' [SB],R TAB,       [SB] , R1     ' [SB],R TAB,
  857:         [SB] , R2     ' [SB],R TAB,       [SB] , R3     ' [SB],R TAB,
  858:         [SB] , A0     ' [SB],R TAB,       [SB] , A1     ' [SB],R TAB,
  859:         [SB] , [A0]   ' [SB],[An] TAB,    [SB] , [A1]   ' [SB],[An] TAB,
  860:         [SB] , [SB]   ' [SB],[SB] TAB,    [SB] , [FB]   ' [SB],[FB] TAB,
  861:         [SB] , abs:16 ' [SB],abs:16 TAB,
  862: 
  863:         [FB] , R0     ' [FB],R TAB,       [FB] , R1     ' [FB],R TAB,
  864:         [FB] , R2     ' [FB],R TAB,       [FB] , R3     ' [FB],R TAB,
  865:         [FB] , A0     ' [FB],R TAB,       [FB] , A1     ' [FB],R TAB,
  866:         [FB] , [A0]   ' [FB],[An] TAB,    [FB] , [A1]   ' [FB],[An] TAB,
  867:         [FB] , [SB]   ' [FB],[SB] TAB,    [FB] , [FB]   ' [FB],[FB] TAB,
  868:         [FB] , abs:16 ' [FB],abs:16 TAB,
  869: 
  870:          #   , R0     '  #,R TAB,          #   , R1     ' #,R TAB,
  871:          #   , R2     '  #,R TAB,          #   , R3     ' #,R TAB,
  872:          #   , A0     '  #,R TAB,          #   , A1     ' #,R TAB,
  873:          #   , [A0]   '  #,[An] TAB,       #   , [A1]   ' #,[An] TAB,
  874:          #   , [SB]   '  #,[SB] TAB,       #   , [FB]   ' #,[FB] TAB,
  875:          #   , abs:16 '  #,abs:16 TAB,
  876: 
  877:       abs:16 , R0     ' abs:16,R TAB,      abs:16 , R1   ' abs:16,R TAB,
  878:       abs:16 , R2     ' abs:16,R TAB,      abs:16 , R3   ' abs:16,R TAB,
  879:       abs:16 , A0     ' abs:16,R TAB,      abs:16 , A1   ' abs:16,R TAB,
  880:       abs:16 , [A0]   ' abs:16,[An] TAB,   abs:16 , [A1] ' abs:16,[An] TAB,
  881:       abs:16 , [SB]   ' abs:16,[SB] TAB,   abs:16 , [FB] ' abs:16,[FB] TAB,
  882:       abs:16 , abs:16 ' abs:16,abs:16 TAB,
  883:  ;TABLE
  884: 
  885:  generic %01100000 %01110110  %11111111 %10110000 GROUP4: adc.b
  886:  generic %01000000 %01110110  %11111111 %10100000 GROUP4: add.b:g
  887:  generic %00100000 %01110110  %11111111 %10010000 GROUP4: and.b:g
  888:  generic %10000000 %01110110  %11111111 %11000000 GROUP4: cmp.b:g
  889:  generic %11000000 %01110100  %11111111 %01110010 GROUP4: mov.b:g
  890:  generic %00110000 %01110110  %11111111 %10011000 GROUP4: or.b:g
  891:  generic %01110000 %01110110  %11111111 %10111000 GROUP4: sbb.b
  892:  generic %01010000 %01110110  %11111111 %10101000 GROUP4: sub.b:g
  893:  generic %00000000 %01110110  %11111111 %10000000 GROUP4: tst.b
  894:  generic %00010000 %01110110  %11111111 %10001000 GROUP4: xor.b
  895: 
  896:  generic %01100000 %01110111  %11111111 %10110001 GROUP4: adc.w
  897:  generic %01000000 %01110111  %11111111 %10100001 GROUP4: add.w:g
  898:  generic %00100000 %01110111  %11111111 %10010001 GROUP4: and.w:g
  899:  generic %10000000 %01110111  %11111111 %11000001 GROUP4: cmp.w:g
  900:  generic %11000000 %01110101  %11111111 %01110011 GROUP4: mov.w:g
  901:  generic %00110000 %01110111  %11111111 %10011001 GROUP4: or.w:g
  902:  generic %01110000 %01110111  %11111111 %10111001 GROUP4: sbb.w
  903:  generic %01010000 %01110111  %11111111 %10101001 GROUP4: sub.w:g
  904:  generic %00000000 %01110111  %11111111 %10000001 GROUP4: tst.w
  905:  generic %00010000 %01110111  %11111111 %10001001 GROUP4: xor.w
  906: 
  907: \ ----------------------------------------------------------------------------------------------
  908: \ register definition
  909:   ' R3 Alias rp
  910:   ' R0 Alias tos
  911:   ' A1 Alias ip
  912:   ' A0 Alias w
  913:   ' [A1] Alias [ip]
  914:   ' [A0] Alias [w]
  915: 
  916: \ ----------------------------------------------------------------------------------------------
  917: 
  918: include asm-test.fs
  919: 
  920:  HERE  SWAP -
  921:  CR .( Length of Assembler: ) . .( Bytes ) CR
  922: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>