diff options
Diffstat (limited to 'tests/t_full09')
| -rw-r--r-- | tests/t_full09/asflags | 1 | ||||
| -rw-r--r-- | tests/t_full09/t_full09.asm | 1604 | ||||
| -rw-r--r-- | tests/t_full09/t_full09.doc | 6 | ||||
| -rw-r--r-- | tests/t_full09/t_full09.ori | bin | 0 -> 7308 bytes | 
4 files changed, 1611 insertions, 0 deletions
| diff --git a/tests/t_full09/asflags b/tests/t_full09/asflags new file mode 100644 index 0000000..27cc2fa --- /dev/null +++ b/tests/t_full09/asflags @@ -0,0 +1 @@ +-D __6309__ diff --git a/tests/t_full09/t_full09.asm b/tests/t_full09/t_full09.asm new file mode 100644 index 0000000..4b39d38 --- /dev/null +++ b/tests/t_full09/t_full09.asm @@ -0,0 +1,1604 @@ +                cpu     6309 + +list            macro +                listing on +                endm + +nolist          macro +                listing off +                endm + +db              macro   op +                byt     (op) +                endm + +fcb             macro   op +                byt     (op) +                endm + +fcc             macro   op +                byt     (op) +                endm + +dw              macro   op +                adr     (op) +                endm + +fdb             macro   op +                adr     (op) +                endm + +fcw             macro   op +                adr     (op) +                endm + +ds              macro   op +                dfs     (op) +                endm + +rmb             macro   op +                rept    op +                db      0 +                endm +                endm + +dd              macro   op +                adr     (op)>>16,(op)&$ffff +                endm + +fcd             macro   op +                adr     (op)>>16,(op)&$ffff +                endm + +direct          macro   num +                if      num=-1 +                 assume dpr:nothing +                elseif  num>255 +                 assume dpr:num>>8 +                elseif +                 assume dpr:num +                endif +                endm + +page            macro +                newpage +                endm + +opt             macro +                endm + +noopt           macro +                endm + +nop             macro   cnt +                if      "CNT"="" +__cnt            set    1 +                elseif +__cnt            set    cnt +                endif +                rept    __cnt +                 !nop +                endm +                endm + +momseg          set     0 +segsave_code    set     0 +segsave_data    set     0 +segsave_bss     set     0 + +saveseg         macro +                switch  momseg +                case    0 +segsave_code    set     * +                case    1 +segsave_data    set     * +                case    2 +segsave_bss     set     * +                endcase +                endm + +data            macro +                saveseg +                org     segsave_data +momseg          set     1 +                endm + +code            macro +                saveseg +                org     segsave_code +momseg          set     0 +                endm + +bss             macro +                saveseg +                org     segsave_bss +momseg          set     2 +                endm + +;-------------------------------------------------------------------------- + +; <:t17,25,41,45:> +; +=====================================================================+ +; |                                                                     | +; |   TESTCASE.A09                                                      | +; |                                                                     | +; |   Test case for 6809/6309 assembler.                                | +; |                                                                     | +; |   Copyright 1993, Frank A. Vorstenbosch                             | +; |                                                                     | +; +=====================================================================+ +; +; File created 13-oct-93 + +                title   "Test case for 6809/6309 assembler" + +                list + +; +---------------------------------------------------------------------+ +; |                                                                     | +; |   Options.                                                          | +; |                                                                     | +; +---------------------------------------------------------------------+ + +;   -dERRORS   check error handling +;   -n         disable optimizations + + +; +---------------------------------------------------------------------+ +; |                                                                     | +; |   Assembler pseudo instructions.                                    | +; |                                                                     | +; +---------------------------------------------------------------------+ + +; ----- expressions ----------------------------------------------------- + +                data +                org     4 +                bss +                org     1634 + +TEST            equ     2+*/2 +                ifdef ERRORS +TEST            equ     TEST+1 +                endif + +Constant8       equ     -43 +Constant16      equ     16383 +Constant32      equ     96285725 +Address         equ     $bb5a + +ANOTHER         set     3|24&8 +ANOTHER         set     (3|24)&8 +ANOTHER         set     4*(3>5) +ANOTHER         set     4*~~(3<5) +ANOTHER         set     15<<4 +ANOTHER         set     ANOTHER+1 +ANOTHER         set     ANOTHER+1       ; shorthand for SET + +CHAR            equ     "a" +DOUBLECHAR      equ     "xy" +QUADCHAR        equ     "quad" + +                ifdef ERRORS +TRIPLE          equ     "abc" +TOOMUCH         equ     "abcde" +                endif + +                data +AddressFour     dw      TEST +                dw      **5 + +                org     $800 + +                direct  $8 +                direct  $0800 + +                ds      14 +DirectByte      db      123 +                align   32 +DirectWord      dw      12345 +                align   48 +DirectLong      dd      123456789 +                align   79 +DirectCode      rts + +                dw      1234#12 +                dw      %1010100101 +                dw      (1+2)#8 +                dw      1010101#%1010101 + +                bss +Unin_1          db      0 +Unin_2          dw      4256 +Unin_3          dd      34568957 + +                code +                org     $200 + +                page + +                ifdef ERRORS +1 +                equ     123 +                psscht +                ! +                endif + +; ----- range checking on immediate values ------------------------------ + +                lda     #10 +                lda     #100 +                ifdef ERRORS +                lda     #1000 +                lda     #10000 +                lda     #100000 +                lda     #1000000 +                lda     #10000000 +                lda     #100000000 +                lda     #1000000000 +                endif + +                ldx     #10 +                ldx     #100 +                ldx     #1000 +                ldx     #10000 +                ifdef ERRORS +                ldx     #100000 +                ldx     #1000000 +                ldx     #10000000 +                ldx     #100000000 +                ldx     #1000000000 +                endif + +                ifdef __6309__ +                ldq     #10 +                ldq     #100 +                ldq     #1000 +                ldq     #10000 +                ldq     #100000 +                ldq     #1000000 +                ldq     #10000000 +                ldq     #100000000 +                ldq     #1000000000 +                endif + +                page    10              ; keep 10 lines togethre + +; ----- align ----------------------------------------------------------- + +                align   16 +                align   32 + + +; ----- code, data, org ------------------------------------------------- + +                code +                org     $1300 +                data +                org     $1180 + +                code +                lda     #1 + +                data +Table           db      1,2,3 + +                code +                ldx     #Table + + +; ----- db, fcb, fcc ---------------------------------------------------- + +Message1        db      7,"Error",13,10,0 + +Message2        fcb     7 +                fcc     "Error" +                fcb     13,10,0 + + +; ----- ds, rmb --------------------------------------------------------- + +                ds      10 +                rmb     10 + + +; ----- dw, fcw, fdb ---------------------------------------------------- + +                dw      23457 +                fcw     13462 +                fdb     6235 + + +; ----- if ... else ... endif ------------------------------------------- + +                if      5=6 +                db      0 +                if      0 +                db      1 +                else +                db      2 +                endif +                db      3 +                else +                db      4 +                if      1 +                db      5 +                else +                db      6 +                endif +                db      7 +                endif + + +; ----- list, nolist ---------------------------------------------------- + +                nolist +                ; comment not listed +                db      10 + +                list +                ; comment is listed +                db      10 + + +; ----- opt, noopt ------------------------------------------------------ + +                noopt + +                opt + + +; ----- nop ------------------------------------------------------------- + +                nop +                nop     3 +                 + +; ----- struct ---------------------------------------------------------- + +;                struct  ListNode +;                dw      LN_Next +;                dw      LN_Previous +;                db      LN_Type +;                end struct + + +; ----- number bases ---------------------------------------------------- + +                dd      1 +                dd      10 +                dd      100 +                dd      1000 + +                dd      $1 +                dd      $10 +                dd      $100 +                dd      $1000 + +                dd      %1 +                dd      %10 +                dd      %100 +                dd      %1000 + +                dd      @1 +                dd      @10 +                dd      @100 +                dd      @1000 + +                dd      2#1 +                dd      2#10 +                dd      2#100 +                dd      2#1000 + +                dd      3#1 +                dd      3#10 +                dd      3#100 +                dd      3#1000 +                dd      3#12 + +                dd      4#1 +                dd      4#10 +                dd      4#100 +                dd      4#1000 +                dd      4#123 + +                dd      5#1 +                dd      5#10 +                dd      5#100 +                dd      5#1000 +                dd      5#1234 + +                dd      6#1 +                dd      6#10 +                dd      6#100 +                dd      6#1000 +                dd      6#2345 + +                dd      7#1 +                dd      7#10 +                dd      7#100 +                dd      7#1000 +                dd      7#3456 + +                dd      8#1 +                dd      8#10 +                dd      8#100 +                dd      8#1000 +                dd      8#4567 + +                dd      9#1 +                dd      9#10 +                dd      9#100 +                dd      9#1000 +                dd      9#5678 + +                dd      10#1 +                dd      10#10 +                dd      10#100 +                dd      10#1000 +                dd      10#6789 + +                dd      11#1 +                dd      11#10 +                dd      11#100 +                dd      11#1000 +;                dd      11#789a + +                dd      12#1 +                dd      12#10 +                dd      12#100 +                dd      12#1000 +;                dd      12#89ab + +                dd      13#1 +                dd      13#10 +                dd      13#100 +                dd      13#1000 +;                dd      13#9abc + +                dd      14#1 +                dd      14#10 +                dd      14#100 +                dd      14#1000 +;                dd      14#abcd + +                dd      15#1 +                dd      15#10 +                dd      15#100 +                dd      15#1000 +;                dd      15#bcde + +                dd      16#1 +                dd      16#10 +                dd      16#100 +                dd      16#1000 +;                dd      16#cdef + +                dd      17#1 +                dd      17#10 +                dd      17#100 +                dd      17#1000 +;                dd      17#defg + +                dd      18#1 +                dd      18#10 +                dd      18#100 +                dd      18#1000 +;                dd      18#efgh + +                dd      19#1 +                dd      19#10 +                dd      19#100 +                dd      19#1000 +;                dd      19#fghi + +                dd      20#1 +                dd      20#10 +                dd      20#100 +                dd      20#1000 +;                dd      20#ghij + +                dd      21#1 +                dd      21#10 +                dd      21#100 +                dd      21#1000 +;                dd      21#hijk + +                dd      22#1 +                dd      22#10 +                dd      22#100 +                dd      22#1000 +;                dd      22#ijkl + +                dd      23#1 +                dd      23#10 +                dd      23#100 +                dd      23#1000 +;                dd      23#jklm + +                dd      24#1 +                dd      24#10 +                dd      24#100 +                dd      24#1000 +;                dd      24#klmn + +                dd      25#1 +                dd      25#10 +                dd      25#100 +                dd      25#1000 +;                dd      25#lmno + +                dd      26#1 +                dd      26#10 +                dd      26#100 +                dd      26#1000 +;                dd      26#mnop + +                dd      27#1 +                dd      27#10 +                dd      27#100 +                dd      27#1000 +;                dd      27#nopq + +                dd      28#1 +                dd      28#10 +                dd      28#100 +                dd      28#1000 +;                dd      28#opqr + +                dd      29#1 +                dd      29#10 +                dd      29#100 +                dd      29#1000 +;                dd      29#pqrs + +                dd      30#1 +                dd      30#10 +                dd      30#100 +                dd      30#1000 +;                dd      30#qrst + +                dd      31#1 +                dd      31#10 +                dd      31#100 +                dd      31#1000 +;                dd      31#rstu + +                dd      32#1 +                dd      32#10 +                dd      32#100 +                dd      32#1000 +;                dd      32#stuv + +                dd      33#1 +                dd      33#10 +                dd      33#100 +                dd      33#1000 +;                dd      33#tuvw + +                dd      34#1 +                dd      34#10 +                dd      34#100 +                dd      34#1000 +;                dd      34#uvwx + +                dd      35#1 +                dd      35#10 +                dd      35#100 +                dd      35#1000 +;                dd      35#vwxy + +                dd      36#1 +                dd      36#10 +                dd      36#100 +                dd      36#1000 +;                dd      36#wxyz + +                ifdef ERRORS +                dd      37#1 +                dd      37#10 +                dd      37#100 +                dd      37#1000 + +                dd      1#1 +                dd      1#10 +                dd      1#100 +                dd      1#1000 + +                dd      0#1 +                dd      0#10 +                dd      0#100 +                dd      0#1000 +                endif + + +; ----- garbage in inactive if-clause ----------------------------------- +                 +                if 0 + !"#$%&'()*+,-./ +0123456789:;<=>? +@ABCDEFGHIJKLMNO +PQRSTUVWXYZ[\]^_ +`abcdefghijklmno +pqrstuvwxyz{|}~ +€‚ƒ„…†‡ˆ‰Š‹ŒŽ +‘’“”•–—˜™š›œžŸ + ¡¢£¤¥¦§¨©ª«¬®¯ +°±²|´µ¶·¸¹|+¼½¾¿ +ÀÁÂÃ-ÅÆÇÈ+ÊËÌ=ÎÏ +ÐÑÒÓÔÕÖרÙÚÛÜÝÞß +àáâãäåæçèéêëìíîï +ðñòóôõö÷øùúûüýþ +                endif + + +; +=====================================================================+ +; |                                                                     | +; |   Instructions.                                                     | +; |                                                                     | +; È=====================================================================¼ + +; Ú---------------------------------------------------------------------¿ +; |                                                                     | +; |   Register to register operations.                                  | +; |                                                                     | +; À---------------------------------------------------------------------Ù + +Start           tfr     a,a             ; NOP +                tfr     a,b +                tfr     a,cc +                tfr     a,ccr +                tfr     a,dp +                tfr     a,dpr + +                tfr     b,a +                tfr     b,b             ; NOP +                tfr     b,cc +                tfr     b,ccr +                tfr     b,dp +                tfr     b,dpr + +                tfr     d,d             ; NOP +                tfr     d,x +                tfr     d,y +                tfr     d,u +                tfr     d,s +                tfr     d,sp + +                tfr     x,d +                tfr     x,x             ; NOP +                tfr     x,y +                tfr     x,u +                tfr     x,s +                tfr     x,sp + +                tfr     y,d +                tfr     y,x +                tfr     y,y             ; NOP +                tfr     y,u +                tfr     y,s +                tfr     y,sp + +                tfr     u,d +                tfr     u,x +                tfr     u,y +                tfr     u,u             ; NOP +                tfr     u,s +                tfr     u,sp + +                tfr     s,d +                tfr     s,x +                tfr     s,y +                tfr     s,u +                tfr     s,s             ; NOP +                tfr     s,sp            ; NOP + +                tfr     sp,d +                tfr     sp,x +                tfr     sp,y +                tfr     sp,u +                tfr     sp,s            ; NOP +                tfr     sp,sp           ; NOP + +                tfr     pc,d +                tfr     pc,x +                tfr     pc,y +                tfr     pc,u +                tfr     pc,s +                tfr     pc,sp + +                ifdef __6309__ +                tfr     a,e +                tfr     a,f +                tfr     b,e +                tfr     b,f + +                tfr     e,a +                tfr     e,b +                tfr     e,cc +                tfr     e,ccr +                tfr     e,dp +                tfr     e,dpr +                tfr     e,e             ; NOP +                tfr     e,f + +                tfr     f,a +                tfr     f,b +                tfr     f,cc +                tfr     f,ccr +                tfr     f,dp +                tfr     f,dpr +                tfr     f,e +                tfr     f,f             ; NOP + +                tfr     d,v +                tfr     d,w + +                tfr     v,d +                tfr     v,v             ; NOP +                tfr     v,w +                tfr     v,x +                tfr     v,y +                tfr     v,u +                tfr     v,s +                tfr     v,sp + +                tfr     w,d +                tfr     w,v +                tfr     w,w             ; NOP +                tfr     w,x +                tfr     w,y +                tfr     w,u +                tfr     w,s +                tfr     w,sp + +                tfr     x,v +                tfr     x,w +                tfr     y,v +                tfr     y,w +                tfr     u,v +                tfr     u,w +                tfr     s,v +                tfr     s,w +                tfr     pc,v +                tfr     pc,w + +                tfr     z,a +                tfr     z,b +                tfr     z,cc +                tfr     z,ccr +                tfr     z,dp +                tfr     z,dpr +                tfr     z,e +                tfr     z,f +                tfr     z,d +                tfr     z,v +                tfr     z,w +                tfr     z,x +                tfr     z,y +                tfr     z,u +                tfr     z,s +                tfr     z,sp +                 +                tfr     a,z +                tfr     b,z +                tfr     cc,z +                tfr     ccr,z +                tfr     dp,z +                tfr     dpr,z +                tfr     e,z +                tfr     f,z +                tfr     d,z +                tfr     v,z +                tfr     w,z +                tfr     x,z +                tfr     y,z +                tfr     u,z +                tfr     s,z +                tfr     sp,z +                tfr     pc,z +                endif + +                ifdef ERRORS +                tfm     a,b +                tfr     a,d +                tfr     a,v +                tfr     a,w +                tfr     a,x +                tfr     a,y +                tfr     a,u +                tfr     a,s +                tfr     a,sp + +                tfr     b,d +                tfr     b,v +                tfr     b,w +                tfr     b,x +                tfr     b,y +                tfr     b,u +                tfr     b,s +                tfr     b,sp +                endif + + +; +---------------------------------------------------------------------+ +; |                                                                     | +; |   Addressing modes.                                                 | +; |                                                                     | +; +---------------------------------------------------------------------+ + +                lda     #0 +                lda     DirectByte +                lda     >DirectByte +                lda     AddressFour +                ifdef ERRORS +                lda     <AddressFour +                endif +                lda     12+5*17/3 +                lda     ,x +                noopt +                lda     0,x +                opt +                lda     0,x +                lda     <0,x +                lda     <<0,x +                noopt +                lda     <<0,x +                opt +                lda     >0,x +                lda     1,x +                lda     <1,x +                lda     <<1,x +                lda     >1,x +                lda     15,x +                lda     -16,x +                lda     16,x +                lda     -17,x +                lda     127,x +                lda     -128,x +                lda     128,x +                lda     -129,x +                lda     FORWARD5,x +                lda     <FORWARD5,x +                lda     <<FORWARD5,x +                lda     FORWARD99,x +                lda     <FORWARD99,x +                ifdef ERRORS +                lda     <<FORWARD99,x +                endif +                lda     a,x +                lda     b,x +                lda     d,x +                lda     ,x+ +                lda     ,x++ +                lda     ,-x +                lda     ,--x +                lda     NearData,pc +                lda     <NearData,pc +                lda     AddressFour,pc +                lda     [,x] +                lda     [0,x] +                lda     [1,x] +                lda     [15,x] +                lda     [-16,x] +                lda     [17,x] +                lda     [-17,x] +                lda     [127,x] +                lda     [-128,x] +                lda     [128,x] +                lda     [-129,x] +                lda     [a,x] +                lda     [b,x] +NearData        lda     [d,x] +                lda     [,x++] +                lda     [,--x] +                lda     [NearData,pc] +                lda     [>NearData,pc] +                lda     [AddressFour,pc] +                ifdef ERRORS +                lda     [<AddressFour,pc] +                endif + +FORWARD5        equ     5 +FORWARD99       equ     99 + +                ifdef __6309__ +                lda     e,x +                lda     f,x +                lda     w,x +                lda     ,w +                lda     0,w +                lda     1,w +                lda     ,w++ +                lda     ,--w +                lda     [e,x] +                lda     [f,x] +                lda     [w,x] +                lda     [,w] +                lda     [0,w] +                lda     [1000,w] +                lda     [,w++] +                lda     [,--w] +                endif + + +; +---------------------------------------------------------------------+ +; |                                                                     | +; |   Instructions in numerical order.                                  | +; |                                                                     | +; +---------------------------------------------------------------------+ + +                neg     DirectByte                  ; $00,2 +                ifdef __6309__ +                oim     #123,DirectByte             ; $01,3 +                aim     #123,DirectByte             ; $02,3 +                endif +                com     DirectByte                  ; $03,2 +                lsr     DirectByte                  ; $04,2 +                ifdef __6309__ +                eim     #123,DirectByte             ; $05,3 +                endif +                ror     DirectByte                  ; $06,2 +                asr     DirectByte                  ; $07,2 +                asl     DirectByte                  ; $08,2 +                lsl     DirectByte                  ; alternate +                rol     DirectByte                  ; $09,2 +                dec     DirectByte                  ; $0A,2 +                ifdef __6309__ +                tim     #1,DirectByte               ; $0B,3 +                endif +                inc     DirectByte                  ; $0C,2 +                tst     DirectByte                  ; $0D,2 +                jmp     DirectByte                  ; $0E,2 +                clr     DirectByte                  ; $0F,2 + +; ----------------------------------------------------------------------- + +                nop                                 ; $12,1 +                nop     4                           ; repeat count specified +                sync                                ; $13,1 +                ifdef __6309__ +                sexw                                ; $14,1 +                endif +                noopt +                lbra    AddressFour                 ; $16,3 +                lbsr    AddressFour                 ; $17,3 +                opt +                daa                                 ; $19,1 +                orcc    #1                          ; $1A,2 +                orcc    c                           ; alternate, specifying flags +                andcc   #~6                         ; $1C,2 +                andcc   z,v                         ; alternate +                sex                                 ; $1D,1 +                exg     a,b                         ; $1E,2 +                tfr     a,b                         ; $1F,2 +                ifdef __6309__ +                clrs                                ; using TFR to clear registers +                clrv +                clrx +                clry +                endif + +; ----------------------------------------------------------------------- + +BranchTarget    bra     BranchTarget                ; $20,2 +                brn     BranchTarget                ; $21,2 +                bhi     BranchTarget                ; $22,2 +                bls     BranchTarget                ; $23,2 +                bhs     BranchTarget                ; $24,2 +                bcc     BranchTarget                ; alternate +                blo     BranchTarget                ; $25,2 +                bcs     BranchTarget                ; alternate +                bne     BranchTarget                ; $26,2 +                beq     BranchTarget                ; $27,2 +                bvc     BranchTarget                ; $28,2 +                bvs     BranchTarget                ; $29,2 +                bpl     BranchTarget                ; $2A,2 +                bmi     BranchTarget                ; $2B,2 +                bge     BranchTarget                ; $2C,2 +                blt     BranchTarget                ; $2D,2 +                bgt     BranchTarget                ; $2E,2 +                ble     BranchTarget                ; $2F,2 + +; ----------------------------------------------------------------------- + +                leax    a,x                         ; 30,2+ +                leay    b,y                         ; 31,2+ +                leas    d,s                         ; 32,2+ +                leau    1,u                         ; 33,2+ +                pshs    a,b                         ; $34,2 +                pshs    all                         ; alternate +                pshs    #123                        ; alternate +                puls    x                           ; $35,2 +                puls    all                         ; alternate +                puls    #$ff                        ; alternate +                pshu    ccr                         ; $36,2 +                pulu    dpr                         ; $37,2 +                rts                                 ; $39,1 +                abx                                 ; $3A,1 +                rti                                 ; $3B,1 +                cwai    #127                        ; $3C,2 +                cwai    e                           ; alternate +                mul                                 ; $3D,1 +                swi                                 ; $3F,1 + +; ----------------------------------------------------------------------- + +                nega                                ; $40,1 +                coma                                ; $43,1 +                lsra                                ; $44,1 +                rora                                ; $46,1 +                asra                                ; $47,1 +                asla                                ; $48,1 +                lsla                                ; alternate +                rola                                ; $49,1 +                deca                                ; $4A,1 +                inca                                ; $4C,1 +                tsta                                ; $4D,1 +                clra                                ; $4F,1 + +; ----------------------------------------------------------------------- + +                negb                                ; $50,1 +                comb                                ; $53,1 +                lsrb                                ; $54,1 +                rorb                                ; $56,1 +                asrb                                ; $57,1 +                aslb                                ; $58,1 +                lslb                                ; alternate +                rolb                                ; $59,1 +                decb                                ; $5A,1 +                incb                                ; $5C,1 +                tstb                                ; $5D,1 +                clrb                                ; $5F,1 + +; ----------------------------------------------------------------------- + +                neg     ,x                          ; $60,2+ +                ifdef __6309__ +                oim     #4,,x                       ; $61,3+ +                aim     #8,,x                       ; $62,3+ +                endif +                com     ,x                          ; $63,2+ +                lsr     ,x                          ; $64,2+ +                ifdef __6309__ +                eim     #9,,x                       ; $65,3+ +                endif +                ror     ,x                          ; $66,2+ +                asr     ,x                          ; $67,2+ +                asl     ,x                          ; $68,2+ +                lsl     ,x                          ; alternate +                rol     ,x                          ; $69,2+ +                dec     ,x                          ; $6A,2+ +                ifdef __6309__ +                tim     #123,,x                     ; $6B,3+ +                endif +                inc     ,x                          ; $6C,2+ +                tst     ,x                          ; $6D,2+ +                jmp     ,x                          ; $6E,2+ +                clr     ,x                          ; $6F,2+ + +; ----------------------------------------------------------------------- + +                neg     AddressFour                 ; $70,3 +                ifdef __6309__ +                oim     #99,AddressFour             ; $71,4 +                aim     #99,AddressFour             ; $72,4 +                endif +                com     AddressFour                 ; $73,3 +                lsr     AddressFour                 ; $74,3 +                ifdef __6309__ +                eim     #-1,AddressFour             ; $75,4 +                endif +                ror     AddressFour                 ; $76,3 +                asr     AddressFour                 ; $77,3 +                asl     AddressFour                 ; $78,3 +                lsl     AddressFour                 ; alternate +                rol     AddressFour                 ; $79,3 +                dec     AddressFour                 ; $7A,3 +                ifdef __6309__ +                tim     #-128,AddressFour           ; $7B,4 +                endif +                inc     AddressFour                 ; $7C,3 +                tst     AddressFour                 ; $7D,3 +                jmp     AddressFour                 ; $7E,3 +                clr     AddressFour                 ; $7F,3 + +; ----------------------------------------------------------------------- + +CallAddress     suba    #123                        ; $80,2 +                cmpa    #123                        ; $81,2 +                sbca    #123                        ; $82,2 +                subd    #12345                      ; $83,3 +                anda    #123                        ; $84,2 +                bita    #123                        ; $85,2 +                lda     #123                        ; $86,2 +                eora    #123                        ; $88,2 +                adca    #123                        ; $89,2 +                ora     #123                        ; $8A,2 +                adda    #123                        ; $8B,2 +                cmpx    #12345                      ; $8C,3 +                bsr     CallAddress                 ; $8D,2 +                ldx     #12345                      ; $8E,3 + +; ----------------------------------------------------------------------- + +                suba    DirectByte                  ; $90,2 +                cmpa    DirectByte                  ; $91,2 +                sbca    DirectByte                  ; $92,2 +                subd    DirectWord                  ; $93,3 +                anda    DirectByte                  ; $94,2 +                bita    DirectByte                  ; $95,2 +                lda     DirectByte                  ; $96,2 +                sta     DirectByte                  ; $97,2 +                eora    DirectByte                  ; $98,2 +                adca    DirectByte                  ; $99,2 +                ora     DirectByte                  ; $9A,2 +                adda    DirectByte                  ; $9B,2 +                cmpx    DirectWord                  ; $9C,2 +                jsr     DirectCode                  ; $9D,2 +                ldx     DirectWord                  ; $9E,2 +                stx     DirectWord                  ; $9F,2 + +; ----------------------------------------------------------------------- + +                suba    [3,s]                       ; $A0,2+ +                cmpa    [3,s]                       ; $A1,2+ +                sbca    [3,s]                       ; $A2,2+ +                subd    [3,s]                       ; $A3,2+ +                anda    [3,s]                       ; $A4,2+ +                bita    [3,s]                       ; $A5,2+ +                lda     [3,s]                       ; $A6,2+ +                sta     [3,s]                       ; $A7,2+ +                eora    [3,s]                       ; $A8,2+ +                adca    [3,s]                       ; $A9,2+ +                ora     [3,s]                       ; $AA,2+ +                adda    [3,s]                       ; $AB,2+ +                cmpx    [3,s]                       ; $AC,2+ +                jsr     [3,s]                       ; $AD,2+ +                ldx     [3,s]                       ; $AE,2+ +                stx     [3,s]                       ; $AF,2+ + +; ----------------------------------------------------------------------- + +                suba    $ff00                       ; $B0,3 +                cmpa    $ff00                       ; $B1,3 +                sbca    $ff00                       ; $B2,3 +                subd    $ff00                       ; $B3,3 +                anda    $ff00                       ; $B4,3 +                bita    $ff00                       ; $B5,3 +                lda     $ff00                       ; $B6,3 +                sta     $ff00                       ; $B7,3 +                eora    $ff00                       ; $B8,3 +                adca    $ff00                       ; $B9,3 +                ora     $ff00                       ; $BA,3 +                adda    $ff00                       ; $BB,3 +                cmpx    $ff00                       ; $BC,3 +                jsr     $ff00                       ; $BD,3 +                ldx     $ff00                       ; $BE,3 +                stx     $ff00                       ; $BF,3 + +; ----------------------------------------------------------------------- + +                subb    #123                        ; $C0,2 +                cmpb    #123                        ; $C1,2 +                sbcb    #123                        ; $C2,2 +                addd    #12345                      ; $C3,3 +                andb    #123                        ; $C4,2 +                bitb    #123                        ; $C5,2 +                ldb     #123                        ; $C6,2 +                eorb    #123                        ; $C8,2 +                adcb    #123                        ; $C9,2 +                orb     #123                        ; $CA,2 +                addb    #123                        ; $CB,2 +                ldd     #12345                      ; $CC,3 +                ifdef __6309__ +                ldq     #123456789                  ; $CD,5 +                endif +                ldu     #12345                      ; $CE,3 + +; ----------------------------------------------------------------------- + +                subb    DirectByte                  ; $D0,2 +                cmpb    DirectByte                  ; $D1,2 +                sbcb    DirectByte                  ; $D2,2 +                addd    DirectWord                  ; $D3,3 +                andb    DirectByte                  ; $D4,2 +                bitb    DirectByte                  ; $D5,2 +                ldb     DirectByte                  ; $D6,2 +                stb     DirectByte                  ; $D7,2 +                eorb    DirectByte                  ; $D8,2 +                adcb    DirectByte                  ; $D9,2 +                orb     DirectByte                  ; $DA,2 +                addb    DirectByte                  ; $DB,2 +                ldd     DirectWord                  ; $DC,2 +                std     DirectWord                  ; $DD,2 +                ldu     DirectWord                  ; $DE,2 +                stu     DirectWord                  ; $DF,2 + +; ----------------------------------------------------------------------- + +; note effect of quasi-forward reference in the next line +LocalData       subb    LocalData,pc                ; $E0,2+ +AnotherLocal    cmpb    <AnotherLocal,pc            ; $E1,2+ +                sbcb    LocalData,pc                ; $E2,2+ +                addd    LocalData,pc                ; $E3,2+ +                andb    LocalData,pc                ; $E4,2+ +                bitb    LocalData,pc                ; $E5,2+ +                ldb     LocalData,pc                ; $E6,2+ +                stb     LocalData,pc                ; $E7,2+ +                eorb    LocalData,pc                ; $E8,2+ +                adcb    LocalData,pc                ; $E9,2+ +                orb     LocalData,pc                ; $EA,2+ +                addb    LocalData,pc                ; $EB,2+ +                ldd     LocalData,pc                ; $EC,2+ +                std     LocalData,pc                ; $ED,2+ +                ldu     LocalData,pc                ; $EE,2+ +                stu     LocalData,pc                ; $EF,2+ + +; ----------------------------------------------------------------------- + +                subb    LocalData                   ; $F0,3 +                cmpb    LocalData                   ; $F1,3 +                sbcb    LocalData                   ; $F2,3 +                addd    LocalData                   ; $F3,3 +                andb    LocalData                   ; $F4,3 +                bitb    LocalData                   ; $F5,3 +                ldb     LocalData                   ; $F6,3 +                stb     LocalData                   ; $F7,3 +                eorb    LocalData                   ; $F8,3 +                adcb    LocalData                   ; $F9,3 +                orb     LocalData                   ; $FA,3 +                addb    LocalData                   ; $FB,3 +                ldd     LocalData                   ; $FC,3 +                std     LocalData                   ; $FD,3 +                ldu     LocalData                   ; $FE,3 +                stu     LocalData                   ; $FF,3 + +; +---------------------------------------------------------------------+ +; |                                                                     | +; |   Instructions with prefix byte $10.                                | +; |                                                                     | +; +---------------------------------------------------------------------+ + +                lbrn    BranchTarget                ; $1021,4 +                lbhi    BranchTarget                ; $1022,4 +                lbls    BranchTarget                ; $1023,4 +                lbhs    BranchTarget                ; $1024,4 +                lbcc    BranchTarget                ; alternate +                lblo    BranchTarget                ; $1025,4 +                lbcs    BranchTarget                ; alternate +                lbne    BranchTarget                ; $1026,4 +                lbeq    BranchTarget                ; $1027,4 +                lbvc    BranchTarget                ; $1028,4 +                lbvs    BranchTarget                ; $1029,4 +                lbpl    BranchTarget                ; $102A,4 +                lbmi    BranchTarget                ; $102B,4 +                lbge    BranchTarget                ; $102C,4 +                lblt    BranchTarget                ; $102D,4 +                lbgt    BranchTarget                ; $102E,4 +                lble    BranchTarget                ; $102F,4 + +; ----------------------------------------------------------------------- + +                ifdef __6309__ +                addr    a,b                         ; $1030,3 +                add     a,b                         ; alternate +                adcr    w,d                         ; $1031,3 +                adc     w,d                         ; alternate +                subr    d,x                         ; $1032,3 +                sub     d,x                         ; alternate +                sbcr    b,a                         ; $1033,3 +                sbc     b,a                         ; alternate +                andr    a,ccr                       ; $1034,3 +                and     a,ccr                       ; alternate +                orr     b,dpr                       ; $1035,3 +                or      b,dpr                       ; alternate +                eorr    w,d                         ; $1036,3 +                eor     w,d                         ; alternate +                cmpr    d,u                         ; $1037,3 +                cmp     d,u                         ; alternate +                pshsw                               ; $1038,2 +                pshs    w                           ; alternate +                pulsw                               ; $1039,2 +                puls    w                           ; alternate +                pshuw                               ; $103A,2 +                pshu    w                           ; alternate +                puluw                               ; $103B,2 +                pulu    w                           ; alternate +                endif +                swi2                                ; $103F,2 +                swi     2                           ; alternate + +; ----------------------------------------------------------------------- + +                ifdef __6309__ +                negd                                ; $1040,2 +                comd                                ; $1043,2 +                lsrd                                ; $1044,2 +                rord                                ; $1046,2 +                asrd                                ; $1047,2 +                asld                                ; $1048,2 +                rold                                ; $1049,2 +                decd                                ; $104A,2 +                incd                                ; $104C,2 +                tstd                                ; $104D,2 +                clrd                                ; $104F,2 + +; ----------------------------------------------------------------------- + +                comw                                ; $1053,2 +                lsrw                                ; $1054,2 +                rorw                                ; $1056,2 +                rolw                                ; $1059,2 +                decw                                ; $105A,2 +                incw                                ; $105C,2 +                tstw                                ; $105D,2 +                clrw                                ; $105F,2 + +; ----------------------------------------------------------------------- + +                subw    #12345                      ; $1080,4 +                cmpw    #12345                      ; $1081,4 +                sbcd    #12345                      ; $1082,4 +                endif +                cmpd    #12345                      ; $1083,4 +                ifdef __6309__ +                andd    #12345                      ; $1084,4 +                bitd    #12345                      ; $1085,4 +                ldw     #12345                      ; $1086,4 +                eord    #12345                      ; $1088,4 +                adcd    #12345                      ; $1089,4 +                ord     #12345                      ; $108A,4 +                addw    #12345                      ; $108B,4 +                endif +                cmpy    #12345                      ; $108C,4 +                ldy     #12345                      ; $108E,4 + +; ----------------------------------------------------------------------- + +                ifdef __6309__ +                subw    DirectWord                  ; $1090,3 +                cmpw    DirectWord                  ; $1091,3 +                sbcd    DirectWord                  ; $1092,3 +                endif +                cmpd    DirectWord                  ; $1093,3 +                ifdef __6309__ +                andd    DirectWord                  ; $1094,3 +                bitd    DirectWord                  ; $1095,3 +                ldw     DirectWord                  ; $1096,3 +                stw     DirectWord                  ; $1097,3 +                eord    DirectWord                  ; $1098,3 +                adcd    DirectWord                  ; $1099,3 +                ord     DirectWord                  ; $109A,3 +                addw    DirectWord                  ; $109B,3 +                endif +                cmpy    DirectWord                  ; $109C,3 +                ldy     DirectWord                  ; $109E,3 +                sty     DirectWord                  ; $109F,3 + +; ----------------------------------------------------------------------- + +                ifdef __6309__ +                subw    ,w++                        ; $10A0,3+ +                cmpw    ,w++                        ; $10A1,3+ +                sbcd    ,w++                        ; $10A2,3+ +                endif +                cmpd    ,--x                        ; $10A3,3+ +                ifdef __6309__ +                andd    ,w++                        ; $10A4,3+ +                bitd    ,w++                        ; $10A5,3+ +                ldw     ,w++                        ; $10A6,3+ +                stw     ,w++                        ; $10A7,3+ +                eord    ,w++                        ; $10A8,3+ +                adcd    ,w++                        ; $10A9,3+ +                ord     ,w++                        ; $10AA,3+ +                addw    ,w++                        ; $10AB,3+ +                endif +                cmpy    ,--x                        ; $10AC,3+ +                ldy     ,--x                        ; $10AE,3+ +                sty     ,--x                        ; $10AF,3+ + +; ----------------------------------------------------------------------- + +                ifdef __6309__ +                subw    $7000                       ; $10B0,4 +                cmpw    $7000                       ; $10B1,4 +                sbcd    $7000                       ; $10B2,4 +                endif +                cmpd    $7000                       ; $10B3,4 +                ifdef __6309__ +                andd    $7000                       ; $10B4,4 +                bitd    $7000                       ; $10B5,4 +                ldw     $7000                       ; $10B6,4 +                stw     $7000                       ; $10B7,4 +                eord    $7000                       ; $10B8,4 +                adcd    $7000                       ; $10B9,4 +                ord     $7000                       ; $10BA,4 +                addw    $7000                       ; $10BB,4 +                endif +                cmpy    $7000                       ; $10BC,4 +                ldy     $7000                       ; $10BE,4 +                sty     $7000                       ; $10BF,4 + +; ----------------------------------------------------------------------- + +                lds     #12345                      ; $10CE,4 + +                ifdef __6309__ +                ldq     DirectLong                  ; $10DC,3 +                stq     DirectLong                  ; $10DD,3 +                endif +                lds     DirectWord                  ; $10DE,3 +                sts     DirectWord                  ; $10DF,3 + +                ifdef __6309__ +                ldq     ,x                          ; $10EC,3+ +                stq     ,x                          ; $10ED,3+ +                endif +                lds     ,x                          ; $10EE,3+ +                sts     ,x                          ; $10EF,3+ + +                ifdef __6309__ +                ldq     AddressFour                 ; $10FC,4 +                stq     AddressFour                 ; $10FD,4 +                endif +                lds     AddressFour                 ; $10FE,4 +                sts     AddressFour                 ; $10FF,4 + +; +---------------------------------------------------------------------+ +; |                                                                     | +; |   Instructions with prefix byte $11.                                | +; |                                                                     | +; +---------------------------------------------------------------------+ + +                ifdef __6309__ +                band    a.7,DirectByte.0            ; $1130,4 +                biand   b.6,DirectByte.1            ; $1131,4   +                bor     cc.5,DirectByte.2           ; $1132,4   +                bior    a.4,DirectByte.3            ; $1133,4   +                beor    b.3,DirectByte.4            ; $1134,4   +                bieor   cc.2,DirectByte.5           ; $1135,4   +                ldbt    ccr.1,DirectByte.6          ; $1136,4   +                stbt    ccr.0,DirectByte.7          ; $1137,4   + +                tfr     x+,y+                       ; $1138,3 +                tfm     x+,y+                       ; alternate +                tfr     u-,x-                       ; $1139,3 +                tfm     u-,x-                       ; alternate +                tfr     s+,x                        ; $113A,3 +                tfm     s+,x                        ; alternate +                tfr     x,y+                        ; $113B,3 +                tfm     x,y+                        ; alternate +                bitmd    #128                       ; $113C,3   +                ldmd     #1                         ; $113D,3   +                endif +                swi3                                ; $113F,2 +                swi     3                           ; alternate + +; ----------------------------------------------------------------------- + +                ifdef __6309__ +                come                                ; $1143,2   +                dece                                ; $114A,2   +                ince                                ; $114C,2   +                tste                                ; $114D,2   +                clre                                ; $114F,2   + +                comf                                ; $1153,2   +                decf                                ; $115A,2   +                incf                                ; $115C,2   +                tstf                                ; $115D,2   +                clrf                                ; $115F,2   +                endif + +; ----------------------------------------------------------------------- + +                ifdef __6309__ +                sube    #123                        ; $1180,3   +                cmpe    #123                        ; $1181,3   +                endif +                cmpu    #12345                      ; $1183,4 +                ifdef __6309__ +                lde     #123                        ; $1186,3   +                adde    #123                        ; $118B,3   +                endif +                cmps    #12345                      ; $118C,4 +                ifdef __6309__ +                divd    #123                        ; $118D,3   +                divq    #12345                      ; $118E,4   +                muld    #12345                      ; $118F,4   +                endif + +; ----------------------------------------------------------------------- + +                ifdef __6309__ +                sube    DirectByte                  ; $1190,3  +                cmpe    DirectByte                  ; $1191,3  +                endif +                cmpu    DirectWord                  ; $1193,3 +                ifdef __6309__ +                lde     DirectByte                  ; $1196,3  +                ste     DirectByte                  ; $1197,3  +                adde    DirectByte                  ; $119B,3  +                endif +                cmps    DirectWord                  ; $119C,3 +                ifdef __6309__ +                divd    DirectWord                  ; $119D,3  +                divq    DirectWord                  ; $119E,3  +                muld    DirectWord                  ; $119F,3  +                endif + +; ----------------------------------------------------------------------- + +                ifdef __6309__ +                sube    ,s+                         ; $11A0,3+  +                cmpe    ,s+                         ; $11A1,3+  +                endif +                cmpu    ,s++                        ; $11A3,3+ +                ifdef __6309__ +                lde     ,s+                         ; $11A6,3+  +                ste     ,s+                         ; $11A7,3+  +                adde    ,s+                         ; $11AB,3+  +                endif +                cmps    ,s++                        ; $11AC,3+ +                ifdef __6309__ +                divd    ,s+                         ; $11AD,3+  +                divq    ,s++                        ; $11AE,3+  +                muld    ,s++                        ; $11AF,3+  +                endif + +; ----------------------------------------------------------------------- + +                ifdef __6309__ +                sube    $9000                       ; $11B0,4 +                cmpe    $9000                       ; $11B1,4 +                endif +                cmpu    $9000                       ; $11B3,4 +                ifdef __6309__ +                lde     $9000                       ; $11B6,4 +                ste     $9000                       ; $11B7,4 +                adde    $9000                       ; $11BB,4 +                endif +                cmps    $9000                       ; $11BC,4 +                ifdef __6309__ +                divd    $9000                       ; $11BD,4 +                divq    $9000                       ; $11BE,4 +                muld    $9000                       ; $11BF,4 +                endif + +; ----------------------------------------------------------------------- + +                ifdef __6309__ +                subf    #123                        ; $11C0,3 +                cmpf    #123                        ; $11C1,3 +                ldf     #123                        ; $11C6,3 +                addf    #123                        ; $11CB,3 +                endif + +; ----------------------------------------------------------------------- + +                ifdef __6309__ +                subf    DirectByte                  ; $11D0,3  +                cmpf    DirectByte                  ; $11D1,3  +                ldf     DirectByte                  ; $11D6,3  +                stf     DirectByte                  ; $11D7,3  +                addf    DirectByte                  ; $11DB,3  + +                subf    ,s+                         ; $11E0,3+ +                cmpf    ,s+                         ; $11E1,3+ +                ldf     ,s+                         ; $11E6,3+ +                stf     ,s+                         ; $11E7,3+ +                addf    ,s+                         ; $11EB,3+ + +                subf    $9000                       ; $11F0,4  +                cmpf    $9000                       ; $11F1,4  +                ldf     $9000                       ; $11F6,4  +                stf     $9000                       ; $11F7,4  +                addf    $9000                       ; $11FB,4  +                endif + + +                end     Start +; ----- EOF ------------------------------------------------------------- + diff --git a/tests/t_full09/t_full09.doc b/tests/t_full09/t_full09.doc new file mode 100644 index 0000000..1121b25 --- /dev/null +++ b/tests/t_full09/t_full09.doc @@ -0,0 +1,6 @@ ++----------------------- Test Application FULL09 ----------------------------+ +|                                                                            | +|      This is a bit more thorough (synthetic) test of the 6809/6309 in-     | +|      tion set, borrowed from another 6809 assembler ;-)                    | +|                                                                            | ++----------------------------------------------------------------------------+ diff --git a/tests/t_full09/t_full09.ori b/tests/t_full09/t_full09.oriBinary files differ new file mode 100644 index 0000000..564da0d --- /dev/null +++ b/tests/t_full09/t_full09.ori | 
