Top secrets sources NedoPC pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

        cpu     784026
        page    0

        assume  location:0

saddr1  equ     0feaah
saddr1_ equ     0feaeh
saddr2  equ     0ff10h
saddr2_ equ     0ff14h
sfr     equ     0ff80h
addr16  equ     4711h
addr20  equ     6789ah
addr24  equ     0deadbfh

        ; r1,#byte
        mov     a,#12h
        mov     x,#23h
        mov     b,#34h
        mov     c,#45h
        mov     r4,#56h
        mov     r5,#67h
        mov     r6,#78h
        mov     r7,#89h
        ; r2,#byte
        mov     r8,#9ah
        mov     r9,#0abh
        mov     r10,#0bch
        mov     r11,#0cdh
        mov     d,#0deh
        mov     e,#0efh
        mov     h,#0f0h
        mov     l,#01h
        ; saddr2,#byte
        mov     saddr2,#55h
        ; saddr1,#byte
        mov     saddr1,#55h
        ; sfr,#byte
        mov     pswl,#55h
        ; !addr16,#byte
        mov     !saddr1,#55h
        mov     addr16,#55h
        ; !addr24,#byte
        mov     !!saddr1,#55h
        mov     !!addr16,#55h
        mov     addr24,#55h
        ; r,r1
        mov     b,a
        mov     b,x
        mov     b,b
        mov     b,c
        mov     b,r4
        mov     b,r5
        mov     b,r6
        mov     b,r7
        ; r,r2
        mov     b,vpl
        mov     b,vph
        mov     b,upl
        mov     b,uph
        mov     b,d
        mov     b,e
        mov     b,h
        mov     b,l
        ; A,r1
        mov     a,a
        mov     a,x
        mov     a,b
        mov     a,c
        mov     a,r4
        mov     a,r5
        mov     a,r6
        mov     a,r7
        ; A,r2
        mov     a,vpl
        mov     a,vph
        mov     a,upl
        mov     a,uph
        mov     a,d
        mov     a,e
        mov     a,h
        mov     a,l
        ; A,saddr2
        mov     a,saddr2
        ; r,saddr2
        mov     x,saddr2
        mov     b,saddr2
        mov     c,saddr2
        mov     d,saddr2
        mov     e,saddr2
        mov     h,saddr2
        mov     l,saddr2
        ; r,saddr1
        mov     a,saddr1
        mov     x,saddr1
        mov     b,saddr1
        mov     c,saddr1
        mov     d,saddr1
        mov     e,saddr1
        mov     h,saddr1
        mov     l,saddr1
        ; saddr2,A
        mov     saddr2,a
        ; saddr2,r
        mov     saddr2,x
        mov     saddr2,b
        mov     saddr2,c
        mov     saddr2,d
        mov     saddr2,e
        mov     saddr2,h
        mov     saddr2,l
        ; saddr1,r
        mov     saddr1,a
        mov     saddr1,x
        mov     saddr1,b
        mov     saddr1,c
        mov     saddr1,d
        mov     saddr1,e
        mov     saddr1,h
        mov     saddr1,l
        ; A,sfr
        mov     a,pswl
        ; r,sfr
        mov     x,pswl
        mov     b,pswl
        mov     c,pswl
        mov     d,pswl
        mov     e,pswl
        mov     h,pswl
        mov     l,pswl
        ; sfr,A
        mov     pswl,a
        ; sfr,r
        mov     pswl,x
        mov     pswl,b
        mov     pswl,c
        mov     pswl,d
        mov     pswl,e
        mov     pswl,h
        mov     pswl,l
        ; saddr2,saddr2'
        mov     saddr2,saddr2_
        ; saddr2,saddr1
        mov     saddr2,saddr1
        ; saddr1,saddr2
        mov     saddr1,saddr2
        ; saddr1,saddr1'
        mov     saddr1,saddr1_
        ; r,!addr16
        mov     a,addr16
        mov     x,addr16
        mov     b,addr16
        mov     c,addr16
        mov     d,addr16
        mov     e,addr16
        mov     h,addr16
        mov     l,addr16
        ; !addr16,r
        mov     addr16,a
        mov     addr16,x
        mov     addr16,b
        mov     addr16,c
        mov     addr16,d
        mov     addr16,e
        mov     addr16,h
        mov     addr16,l
        ; r,!addr24
        mov     a,addr24
        mov     x,addr24
        mov     b,addr24
        mov     c,addr24
        mov     d,addr24
        mov     e,addr24
        mov     h,addr24
        mov     l,addr24
        ; !addr24,r
        mov     addr24,a
        mov     addr24,x
        mov     addr24,b
        mov     addr24,c
        mov     addr24,d
        mov     addr24,e
        mov     addr24,h
        mov     addr24,l
        ; A,[saddrp2]
        mov     a,[saddr2]
        ; A,[saddrp1]
        mov     a,[saddr1]
        ; A,[%saddrg2]
        mov     a,[%saddr2]
        ; A,[%saddrg1]
        mov     a,[%saddr1]
        ; A,mem
        mov     a,[tde+]
        mov     a,[whl+]
        mov     a,[tde-]
        mov     a,[whl-]
        mov     a,[tde]
        mov     a,[whl]
        mov     a,[vvp]
        mov     a,[uup]
        mov     a,[tde+55h]
        mov     a,[sp+55h]
        mov     a,[whl+55h]
        mov     a,[uup+55h]
        mov     a,[vvp+55h]
        mov     a,123456h[de]
        mov     a,123456h[a]
        mov     a,123456h[hl]
        mov     a,123456h[b]
        mov     a,[tde+a]
        mov     a,[whl+a]
        mov     a,[tde+b]
        mov     a,[whl+b]
        mov     a,[vvp+de]
        mov     a,[vvp+hl]
        mov     a,[tde+c]
        mov     a,[whl+c]
        ; [saddrp2],A
        mov     [saddr2],a
        ; [saddrp1],A
        mov     [saddr1],a
        ; [%saddrg2],A
        mov     [%saddr2],a
        ; [%saddrg1],A
        mov     [%saddr1],a
        ; mem,a
        mov     [tde+],a
        mov     [whl+],a
        mov     [tde-],a
        mov     [whl-],a
        mov     [tde],a
        mov     [whl],a
        mov     [vvp],a
        mov     [uup],a
        mov     [tde+55h],a
        mov     [sp+55h],a
        mov     [whl+55h],a
        mov     [uup+55h],a
        mov     [vvp+55h],a
        mov     123456h[de],a
        mov     123456h[a],a
        mov     123456h[hl],a
        mov     123456h[b],a
        mov     [tde+a],a
        mov     [whl+a],a
        mov     [tde+b],a
        mov     [whl+b],a
        mov     [vvp+de],a
        mov     [vvp+hl],a
        mov     [tde+c],a
        mov     [whl+c],a
        ; built-in PSWL = 0fffeh
        mov     pswl,#34h
        mov     pswh,#34h
        mov     pswl,a
        mov     pswh,a
        mov     a,pswl
        mov     a,pswh
        ; rU16,#byte
        mov     v,#12h
        mov     u,#34h
        mov     t,#56h
        mov     w,#78h
        ; A,rU16
        mov     a,v
        mov     a,u
        mov     a,t
        mov     a,w
        ; rU16,A
        mov     v,a
        mov     u,a
        mov     t,a
        mov     w,a

        ; rp,#word
        mov     ax,#1234h
        movw    ax,#1234h
        mov     bc,#1234h
        movw    bc,#1234h
        mov     de,#1234h
        movw    de,#1234h
        mov     hl,#1234h
        movw    hl,#1234h
        mov     vp,#1234h
        movw    vp,#1234h
        mov     up,#1234h
        movw    up,#1234h
        ; saddrp2,#word
        movw    saddr2,#4711h
        ; saddrp1,#word
        movw    saddr1,#4711h
        ; sfrp,#word
        movw    psw,#4711h
        ; !addr16,#word
        movw    addr16,#4711h
        ; !!addr24,#word
        movw    addr24,#4711h
        ; rp,rp'
        irp     rpd,ax,bc,rp2,rp3,vp,up,de,hl
        irp     rps,ax,bc,rp2,rp3,vp,up,de,hl
        mov     rpd,rps
        endm
        endm
        ; rp,saddrp2
        mov     ax,saddr2
        movw    bc,saddr2
        mov     de,saddr2
        movw    hl,saddr2
        ; rp,saddrp1
        mov     ax,saddr1
        movw    bc,saddr1
        mov     de,saddr1
        movw    hl,saddr1
        ; saddrp2,rp
        mov     saddr2,ax
        movw    saddr2,bc
        mov     saddr2,de
        movw    saddr2,hl
        ; saddrp1,rp
        mov     saddr1,ax
        movw    saddr1,bc
        mov     saddr1,de
        movw    saddr1,hl
        ; rp,sfrp
        mov     ax,psw
        movw    bc,psw
        mov     de,psw
        movw    hl,psw
        ; sfrp,rp
        mov     psw,ax
        movw    psw,bc
        mov     psw,de
        movw    psw,hl
        ; saddrp2,saddrp2'
        movw    saddr2,saddr2_
        ; saddrp2,saddrp1
        movw    saddr2,saddr1
        ; saddrp1,saddrp2
        movw    saddr1,saddr2
        ; saddrp1,saddrp1'
        movw    saddr1,saddr1_
        ; rp,!abs16
        mov     ax,addr16
        movw    bc,addr16
        mov     de,addr16
        movw    hl,addr16
        ; !abs16,rp
        mov     addr16,ax
        movw    addr16,bc
        mov     addr16,de
        movw    addr16,hl
        ; rp,!!abs24
        mov     ax,addr24
        movw    bc,addr24
        mov     de,addr24
        movw    hl,addr24
        ; !!abs24,rp
        mov     addr24,ax
        movw    addr24,bc
        mov     addr24,de
        movw    addr24,hl
        ; AX,[saddrp2]
        mov     ax,[saddr2]
        ; AX,[saddrp1]
        mov     ax,[saddr1]
        ; AX,[%saddrg2]
        mov     ax,[%saddr2]
        ; AX,[%saddrg1]
        mov     ax,[%saddr1]
        ; AX,mem
        mov     ax,[tde+]
        mov     ax,[whl+]
        mov     ax,[tde-]
        mov     ax,[whl-]
        mov     ax,[tde]
        mov     ax,[whl]
        mov     ax,[vvp]
        mov     ax,[uup]
        mov     ax,[tde+55h]
        mov     ax,[sp+55h]
        mov     ax,[whl+55h]
        mov     ax,[uup+55h]
        mov     ax,[vvp+55h]
        mov     ax,123456h[de]
        mov     ax,123456h[a]
        mov     ax,123456h[hl]
        mov     ax,123456h[b]
        mov     ax,[tde+a]
        mov     ax,[whl+a]
        mov     ax,[tde+b]
        mov     ax,[whl+b]
        mov     ax,[vvp+de]
        mov     ax,[vvp+hl]
        mov     ax,[tde+c]
        mov     ax,[whl+c]
        ; [saddrp2],AX
        mov     [saddr2],ax
        ; [saddrp1],AX
        mov     [saddr1],ax
        ; [%saddrg2],AX
        mov     [%saddr2],ax
        ; [%saddrg1],AX
        mov     [%saddr1],ax
        ; mem,AX
        mov     [tde+],ax
        mov     [whl+],ax
        mov     [tde-],ax
        mov     [whl-],ax
        mov     [tde],ax
        mov     [whl],ax
        mov     [vvp],ax
        mov     [uup],ax
        mov     [tde+55h],ax
        mov     [sp+55h],ax
        mov     [whl+55h],ax
        mov     [uup+55h],ax
        mov     [vvp+55h],ax
        mov     123456h[de],ax
        mov     123456h[a],ax
        mov     123456h[hl],ax
        mov     123456h[b],ax
        mov     [tde+a],ax
        mov     [whl+a],ax
        mov     [tde+b],ax
        mov     [whl+b],ax
        mov     [vvp+de],ax
        mov     [vvp+hl],ax
        mov     [tde+c],ax
        mov     [whl+c],ax

        ; rg,#imm24
        mov     vvp,#123456h
        movg    rg4,#123456h
        mov     uup,#123456h
        movg    rg5,#123456h
        mov     tde,#123456h
        movg    rg6,#123456h
        mov     whl,#123456h
        movg    rg7,#123456h
        ; rg,rg'
        irp     dest,vvp,uup,tde,whl
        irp     src,rg4,rg5,rg6,rg7
        mov     dest,src
        movg    dest,src
        endm
        endm
        ; rg,!!addr24
        mov     vvp,addr16
        mov     uup,addr24
        mov     tde,addr16
        mov     whl,addr24
        ; !!addr24,rg
        mov     addr16,vvp
        mov     addr24,uup
        mov     addr16,tde
        mov     addr24,whl
        ; rg,saddrg2
        mov     vvp,saddr2
        mov     uup,saddr2
        mov     tde,saddr2
        mov     whl,saddr2
        ; rg,saddrg1
        mov     vvp,saddr1
        mov     uup,saddr1
        mov     tde,saddr1
        mov     whl,saddr1
        ; saddrg2,rg
        mov     saddr2,vvp
        mov     saddr2,uup
        mov     saddr2,tde
        mov     saddr2,whl
        ; saddrg1,rg
        mov     saddr1,vvp
        mov     saddr1,uup
        mov     saddr1,tde
        mov     saddr1,whl
        ; WHL,[saddrg2]
        movg    whl,[%saddr2]
        ; WHL,[saddrg1]
        movg    whl,[%saddr1]
        ; [saddrg2],WHL
        movg    [%saddr2],whl
        ; [saddrg1],WHL
        movg    [%saddr1],whl
        ; WHL,mem
        mov     whl,[tde+]
        ;mov    whl,[whl+]      ; forbidden
        mov     whl,[tde-]
        ;mov    whl,[whl-]      ; forbidden
        mov     whl,[tde]
        mov     whl,[whl]
        mov     whl,[vvp]
        mov     whl,[uup]
        mov     whl,[tde+55h]
        mov     whl,[sp+55h]
        mov     whl,[whl+55h]
        mov     whl,[uup+55h]
        mov     whl,[vvp+55h]
        mov     whl,123456h[de]
        mov     whl,123456h[a]
        mov     whl,123456h[hl]
        mov     whl,123456h[b]
        mov     whl,[tde+a]
        mov     whl,[whl+a]
        mov     whl,[tde+b]
        mov     whl,[whl+b]
        mov     whl,[vvp+de]
        mov     whl,[vvp+hl]
        mov     whl,[tde+c]
        mov     whl,[whl+c]
        ; mem,WHL
        mov     [tde+],whl
        ;mov    [whl+],whl      ; forbidden
        mov     [tde-],whl
        ;mov    [whl-],whl      ; forbidden
        mov     [tde],whl
        mov     [whl],whl
        mov     [vvp],whl
        mov     [uup],whl
        mov     [tde+55h],whl
        mov     [sp+55h],whl
        mov     [whl+55h],whl
        mov     [uup+55h],whl
        mov     [vvp+55h],whl
        mov     123456h[de],whl
        mov     123456h[a],whl
        mov     123456h[hl],whl
        mov     123456h[b],whl
        mov     [tde+a],whl
        mov     [whl+a],whl
        mov     [tde+b],whl
        mov     [whl+b],whl
        mov     [vvp+de],whl
        mov     [vvp+hl],whl
        mov     [tde+c],whl
        mov     [whl+c],whl

        ; r,r1/r2
        irp     dest,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        irp     src,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        xch     dest,src
        endm
        endm
        ; A,r1
        irp     reg,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        xch     a,reg
        xch     reg,a
        endm
        ; A,saddr2
        xch     a,saddr2
        xch     saddr2,a
        ; r,saddr2
        irp     reg,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        xch     reg,saddr2
        xch     saddr2,reg
        endm
        ; r,saddr1
        irp     reg,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        xch     reg,saddr1
        xch     saddr1,reg
        endm
        ; r,sfr
        irp     reg,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        xch     reg,sfr
        xch     sfr,reg
        endm
        ; saddr2,saddr2'
        xch     saddr2,saddr2_
        ; saddr2,saddr1
        xch     saddr2,saddr1
        ; saddr1,saddr2
        xch     saddr1,saddr2
        ; saddr1,saddr1'
        xch     saddr1,saddr1_
        ; r,!addr16
        irp     reg,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        xch     reg,addr16
        xch     addr16,reg
        endm
        ; r,!!addr24
        irp     reg,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        xch     reg,addr24
        xch     addr24,reg
        endm
        ; A,[saddrp2]
        xch     a,[saddr2]
        xch     [saddr2],a
        ; A,[saddrp1]
        xch     a,[saddr1]
        xch     [saddr1],a
        ; A,[%saddrg2]
        xch     a,[%saddr2]
        xch     [%saddr2],a
        ; A,[%saddrg1]
        xch     a,[%saddr1]
        xch     [%saddr1],a
        ; A,mem
        xch     a,[tde+]
        xch     [tde+],a
        xch     a,[whl+]
        xch     [whl+],a
        xch     a,[tde-]
        xch     [tde-],a
        xch     a,[whl-]
        xch     [whl-],a
        xch     a,[tde]
        xch     [tde],a
        xch     a,[whl]
        xch     [whl],a
        xch     a,[vvp]
        xch     [vvp],a
        xch     a,[uup]
        xch     [uup],a
        xch     a,[tde+55h]
        xch     [tde+55h],a
        xch     a,[sp+55h]
        xch     [sp+55h],a
        xch     a,[whl+55h]
        xch     [whl+55h],a
        xch     a,[uup+55h]
        xch     [uup+55h],a
        xch     a,[vvp+55h]
        xch     [vvp+55h],a
        xch     a,123456h[de]
        xch     123456h[de],a
        xch     a,123456h[a]
        xch     123456h[a],a
        xch     a,123456h[hl]
        xch     123456h[hl],a
        xch     a,123456h[b]
        xch     123456h[b],a
        xch     a,[tde+a]
        xch     [tde+a],a
        xch     a,[whl+a]
        xch     [whl+a],a
        xch     a,[tde+b]
        xch     [tde+b],a
        xch     a,[whl+b]
        xch     [whl+b],a
        xch     a,[vvp+de]
        xch     [vvp+de],a
        xch     a,[vvp+hl]
        xch     [vvp+hl],a
        xch     a,[tde+c]
        xch     [tde+c],a
        xch     a,[whl+c]
        xch     [whl+c],a

        ; rp,rp'
        irp     dest,ax,bc,rp2,rp3,vp,up,de,hl
        irp     src,ax,bc,rp2,rp3,vp,up,de,hl
        xch     dest,src
        xchw    dest,src
        endm
        endm
        ; AX,saddrp2
        xch     ax,saddr2
        xchw    saddr2,ax
        ; rp,saddrp2
        irp     reg,bc,rp2,rp3,vp,up,de,hl
        xch     reg,saddr2
        xchw    saddr2,reg
        endm
        ; rp,saddrp1
        irp     reg,ax,bc,rp2,rp3,vp,up,de,hl
        xch     reg,saddr1
        xchw    saddr1,reg
        endm
        ; rp,sfr
        irp     reg,ax,bc,rp2,rp3,vp,up,de,hl
        xch     reg,sfr
        xchw    sfr,reg
        endm
        ; AX,[saddrp2]
        xch     ax,[saddr2]
        xchw    [saddr2],ax
        ; AX,[saddrp1]
        xch     ax,[saddr1]
        xchw    [saddr1],ax
        ; AX,[%saddrg2]
        xch     ax,[%saddr2]
        xchw    [%saddr2],ax
        ; AX,[%saddrg1]
        xch     ax,[%saddr1]
        xchw    [%saddr1],ax
        ; AX,!addr16
        xch     ax,addr16
        xch     addr16,ax
        ; AX,!!addr24
        xch     ax,addr24
        xch     addr24,ax
        ; saddrp2,saddrp2'
        xchw    saddr2,saddr2_
        ; saddrp2,saddrp1
        xchw    saddr2,saddr1
        ; saddrp1,saddrp2
        xchw    saddr1,saddr2
        ; saddrp1,saddrp1'
        xchw    saddr1,saddr1_
        ; AX,mem
        xch     ax,[tde+]
        xch     [tde+],ax
        xch     ax,[whl+]
        xch     [whl+],ax
        xch     ax,[tde-]
        xch     [tde-],ax
        xch     ax,[whl-]
        xch     [whl-],ax
        xch     ax,[tde]
        xch     [tde],ax
        xch     ax,[whl]
        xch     [whl],ax
        xch     ax,[vvp]
        xch     [vvp],ax
        xch     ax,[uup]
        xch     [uup],ax
        xch     ax,[tde+55h]
        xch     [tde+55h],ax
        xch     ax,[sp+55h]
        xch     [sp+55h],ax
        xch     ax,[whl+55h]
        xch     [whl+55h],ax
        xch     ax,[uup+55h]
        xch     [uup+55h],ax
        xch     ax,[vvp+55h]
        xch     [vvp+55h],ax
        xch     ax,123456h[de]
        xch     123456h[de],ax
        xch     ax,123456h[a]
        xch     123456h[a],ax
        xch     ax,123456h[hl]
        xch     123456h[hl],ax
        xch     ax,123456h[b]
        xch     123456h[b],ax
        xch     ax,[tde+a]
        xch     [tde+a],ax
        xch     ax,[whl+a]
        xch     [whl+a],ax
        xch     ax,[tde+b]
        xch     [tde+b],ax
        xch     ax,[whl+b]
        xch     [whl+b],ax
        xch     ax,[vvp+de]
        xch     [vvp+de],ax
        xch     ax,[vvp+hl]
        xch     [vvp+hl],ax
        xch     ax,[tde+c]
        xch     [tde+c],ax
        xch     ax,[whl+c]
        xch     [whl+c],ax

        irp     instr,add,addc,sub,subc,cmp,and,or,xor
        ; A,#byte
        instr   a,#45h
        irp     reg,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        instr   reg,#45h
        endm
        ; saddr2,#byte
        instr   saddr2,#45h
        ; saddr1,#byte
        instr   saddr1,#45h
        ; sfr,#byte
        instr   sfr,#45h
        ; r,r1/r2
        irp     dest,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        irp     src,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        instr   dest,src
        endm
        endm
        ; A,saddr2
        instr   a,saddr2
        ; r,saddr2
        irp     reg,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        instr   reg,saddr2
        endm
        ; A,saddr1
        irp     reg,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        instr   reg,saddr1
        endm
        ; saddr2,r
        irp     reg,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        instr   saddr2,reg
        endm
        ; saddr1,r
        irp     reg,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        instr   saddr1,reg
        endm
        ; r,sfr
        irp     reg,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        instr   reg,sfr
        endm
        ; sfr,r
        irp     reg,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        instr   sfr,reg
        endm
        ; saddr2,saddr2'
        instr   saddr2,saddr2_
        ; saddr2,saddr1
        instr   saddr2,saddr1
        ; saddr1,saddr2
        instr   saddr1,saddr2
        ; saddr1,saddr1'
        instr   saddr1,saddr1_
        ; A,[saddrp2]
        instr   a,[saddr2]
        ; A,[saddrp1]
        instr   a,[saddr1]
        ; A,[%saddrg2]
        instr   a,[%saddr2]
        ; A,[%saddrg1]
        instr   a,[%saddr1]
        ; [saddrp2],A
        instr   [saddr2],a
        ; [saddrp1],A
        instr   [saddr1],a
        ; [%saddrg2],A
        instr   [%saddr2],a
        ; [%saddrg1],A
        instr   [%saddr1],a
        ; A,!abs16
        instr   a,addr16
        ; A,!!abs24
        instr   a,addr24
        ; !abs16,A
        instr   addr16,a
        ; !!abs24,A
        instr   addr24,a
        ; A,mem
        instr   a,[tde+]
        instr   a,[whl+]
        instr   a,[tde-]
        instr   a,[whl-]
        instr   a,[tde]
        instr   a,[whl]
        instr   a,[vvp]
        instr   a,[uup]
        instr   a,[tde+55h]
        instr   a,[sp+55h]
        instr   a,[whl+55h]
        instr   a,[uup+55h]
        instr   a,[vvp+55h]
        instr   a,123456h[de]
        instr   a,123456h[a]
        instr   a,123456h[hl]
        instr   a,123456h[b]
        instr   a,[tde+a]
        instr   a,[whl+a]
        instr   a,[tde+b]
        instr   a,[whl+b]
        instr   a,[vvp+de]
        instr   a,[vvp+hl]
        instr   a,[tde+c]
        instr   a,[whl+c]
        ; mem,A
        instr   [tde+],a
        instr   [whl+],a
        instr   [tde-],a
        instr   [whl-],a
        instr   [tde],a
        instr   [whl],a
        instr   [vvp],a
        instr   [uup],a
        instr   [tde+55h],a
        instr   [sp+55h],a
        instr   [whl+55h],a
        instr   [uup+55h],a
        instr   [vvp+55h],a
        instr   123456h[de],a
        instr   123456h[a],a
        instr   123456h[hl],a
        instr   123456h[b],a
        instr   [tde+a],a
        instr   [whl+a],a
        instr   [tde+b],a
        instr   [whl+b],a
        instr   [vvp+de],a
        instr   [vvp+hl],a
        instr   [tde+c],a
        instr   [whl+c],a
        endm

        ; note that when stringifying the instruction field, the string is also
        ; expanded while a macro body is read.  This is necessary because while reading
        ; it, the assembler has to check for instructions like 'endm'.  So assure the
        ; string variable is set to something harmless before the outer IRP is read.

si      set     ""
        irp     instr,add,sub,cmp
si      set     "INSTR"
        ; AX/rp,#word
        irp     reg,ax,bc,rp2,rp3,vp,up,de,hl
        instr   reg,#0aa55h
        {si}w   reg,#0aa55h
        endm
        ; rp,rp'
        irp     dest,ax,bc,rp2,rp3,vp,up,de,hl
        irp     src,ax,bc,rp2,rp3,vp,up,de,hl
        instr   dest,src
        {si}w   dest,src
        endm
        endm
        ; AX/rp,saddrp2
        irp     reg,ax,bc,rp2,rp3,vp,up,de,hl
        instr   reg,saddr2
        {si}w   reg,saddr2
        endm
        ; rp,saddrp1
        irp     reg,ax,bc,rp2,rp3,vp,up,de,hl
        instr   reg,saddr1
        {si}w   reg,saddr1
        endm
        ; saddrp2,rp
        irp     reg,ax,bc,rp2,rp3,vp,up,de,hl
        instr   saddr2,reg
        {si}w   saddr2,reg
        endm
        ; saddrp1,rp
        irp     reg,ax,bc,rp2,rp3,vp,up,de,hl
        instr   saddr1,reg
        {si}w   saddr1,reg
        endm
        ; rp,sfp
        irp     reg,ax,bc,rp2,rp3,vp,up,de,hl
        instr   reg,sfr
        {si}w   reg,sfr
        endm
        ; sfp,rp
        irp     reg,ax,bc,rp2,rp3,vp,up,de,hl
        instr   sfr,reg
        {si}w   sfr,reg
        endm
        ; saddrp2,#word
        {si}w   saddr2,#6789h
        ; saddrp1,#word
        {si}w   saddr1,#6789h
        ; sfrp,#word
        {si}w   sfr,#6789h
        ; saddrp2,saddrp2'
        {si}w   saddr2,saddr2_
        ; saddrp2,saddrp1
        {si}w   saddr2,saddr1
        ; saddrp1,saddrp2
        {si}w   saddr1,saddr2
        ; saddrp1,saddrp1'
        {si}w   saddr1,saddr1_
        endm

si      set     ""
        irp     instr,add,sub
si      set     "INSTR"
        ; rg,rg'
        irp     dest,vvp,uup,tde,whl
        irp     src,rg4,rg5,rg6,rg7
        instr   dest,src
        {si}g   dest,src
        endm
        endm
        ; rg,#imm24
        irp     reg,vvp,uup,tde,whl
        instr   reg,#654321h
        {si}g   reg,#654321h
        endm
        ; WHL,saddrg2
        instr   whl,saddr2
        instr   whl,saddr1
        endm

        irp     reg,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        mulu    reg
        divuw   reg
        endm
        irp     reg,ax,bc,rp2,rp3,vp,up,de,hl
        mulu    reg
        muluw   reg
        mulw    reg
        divux   reg
        endm

        macw    12
        macsw   100
        sacw    [tde+],[whl+]

si      set     ""
        irp     instr,inc,dec
si      set     "INSTR"
        ; r1/r2
        irp     reg,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        instr   reg
        endm
        ; saddr2
        instr   saddr2
        ; saddr1
        instr   saddr1
        ; rp
        irp     reg,ax,bc,rp2,rp3,vp,up,de,hl
        instr   reg
        {si}w   reg
        endm
        ; saddrp2
        {si}w   saddr2
        ; saddrp1
        {si}w   saddr1
        ; rg
        irp     reg,vvp,uup,tde,whl
        instr   reg
        {si}g   reg
        endm
        endm

        adjba
        adjbs
        cvtbw

        irp     instr,ror,rol,rorc,rolc,shr,shl
        irp     reg,a,x,b,c,r5,r4,r7,r6,vph,vpl,uph,upl,d,e,h,l
        instr   reg,5
        endm
        endm
si      set     ""
        irp     instr,shr,shl
si      set     "INSTR"
        irp     reg,ax,bc,rp2,rp3,vp,up,de,hl
        instr   reg,6
        {si}w   reg,3
        endm
        endm

        irp     instr,ror4,rol4
        irp     reg,rp0,rg4,rp1,rg5,rp2,rg6,rp3,rg7
        instr   [reg]
        endm
        endm

s2bit   bit     saddr2.1
s1bit   bit     saddr1.2
sfrbit  bit     sfr.3
pswlbit bit     pswl.4
pswhbit bit     pswh.5
abit    bit     a.6
xbit    bit     x.7
tdebit  bit     [tde].1
whlbit  bit     [whl].2
a16bit  bit     addr16.3
a24bit  bit     addr24.4

        mov     cy,s2bit
        mov1    cy,s2bit
        mov     cy,s1bit
        mov1    cy,s1bit
        mov     cy,sfrbit
        mov1    cy,sfrbit
        mov     cy,abit
        mov1    cy,abit
        mov     cy,xbit
        mov1    cy,xbit
        mov     cy,pswlbit
        mov1    cy,pswlbit
        mov     cy,pswhbit
        mov1    cy,pswhbit
        mov     cy,tdebit
        mov1    cy,tdebit
        mov     cy,whlbit
        mov1    cy,whlbit
        mov     cy,a16bit
        mov1    cy,a16bit
        mov     cy,a24bit
        mov1    cy,a24bit
        mov     s2bit,cy
        mov1    s2bit,cy
        mov     s1bit,cy
        mov1    s1bit,cy
        mov     sfrbit,cy
        mov1    sfrbit,cy
        mov     abit,cy
        mov1    abit,cy
        mov     xbit,cy
        mov1    xbit,cy
        mov     pswlbit,cy
        mov1    pswlbit,cy
        mov     pswhbit,cy
        mov1    pswhbit,cy
        mov     tdebit,cy
        mov1    tdebit,cy
        mov     whlbit,cy
        mov1    whlbit,cy
        mov     a16bit,cy
        mov1    a16bit,cy
        mov     a24bit,cy
        mov1    a24bit,cy

si      set     ""
        irp     instr,and,or
si      set     "INSTR"
        instr   cy,s2bit
        {si}1   cy,s2bit
        instr   cy,s1bit
        {si}1   cy,s1bit
        instr   cy,/s2bit
        {si}1   cy,/s2bit
        instr   cy,/s1bit
        {si}1   cy,/s1bit
        instr   cy,sfrbit
        {si}1   cy,sfrbit
        instr   cy,/sfrbit
        {si}1   cy,/sfrbit
        instr   cy,xbit
        {si}1   cy,xbit
        instr   cy,/xbit
        {si}1   cy,/xbit
        instr   cy,abit
        {si}1   cy,abit
        instr   cy,/abit
        {si}1   cy,/abit
        instr   cy,pswlbit
        {si}1   cy,pswlbit
        instr   cy,/pswlbit
        {si}1   cy,/pswlbit
        instr   cy,pswhbit
        {si}1   cy,pswhbit
        instr   cy,/pswhbit
        {si}1   cy,/pswhbit
        instr   cy,tdebit
        {si}1   cy,tdebit
        instr   cy,/tdebit
        {si}1   cy,/tdebit
        instr   cy,whlbit
        {si}1   cy,whlbit
        instr   cy,/whlbit
        {si}1   cy,/whlbit
        instr   cy,a16bit
        {si}1   cy,a16bit
        instr   cy,/a16bit
        {si}1   cy,/a16bit
        instr   cy,a24bit
        {si}1   cy,a24bit
        instr   cy,/a24bit
        {si}1   cy,/a24bit
        endm

        xor     cy,s2bit
        xor1    cy,s2bit
        xor     cy,s1bit
        xor1    cy,s1bit
        xor     cy,sfrbit
        xor1    cy,sfrbit
        xor     cy,xbit
        xor1    cy,xbit
        xor     cy,abit
        xor1    cy,abit
        xor     cy,pswlbit
        xor1    cy,pswlbit
        xor     cy,pswhbit
        xor1    cy,pswhbit
        xor     cy,tdebit
        xor1    cy,tdebit
        xor     cy,whlbit
        xor1    cy,whlbit
        xor     cy,a16bit
        xor1    cy,a16bit
        xor     cy,a24bit
        xor1    cy,a24bit

        irp     instr,not1,set1,clr1
        instr   s2bit
        instr   s1bit
        instr   sfrbit
        instr   xbit
        instr   abit
        instr   pswlbit
        instr   pswhbit
        instr   tdebit
        instr   whlbit
        instr   a16bit
        instr   a24bit
        instr   cy
        endm

        push    psw
        pushw   psw
        pushw   sfr
        push    sfr
        push    bc,rp3,up,hl
        pushw   bc,rp3,up,hl
        push    vvp
        pushg   vvp
        push    uup
        pushg   uup
        push    tde
        pushg   tde
        push    whl
        pushg   whl
        pushu   psw
        pushu   bc,rp3,psw,hl  
        pushuw  bc,rp3,psw,hl
        pop     psw
        popw    psw
        popw    sfr
        pop     sfr
        pop     bc,rp3,up,hl
        popw    bc,rp3,up,hl
        pop     vvp
        popg    vvp
        pop     uup
        popg    uup
        pop     tde
        popg    tde
        pop     whl
        popg    whl
        popu    psw
        popu    bc,rp3,psw,hl  
        popuw   bc,rp3,psw,hl

        mov     sp,#123456h
        movg    sp,#123456h
        mov     sp,whl
        movg    sp,whl
        mov     whl,sp
        movg    whl,sp

        add     sp,#1234h
        addwg   sp,#1234h
        sub     sp,#1234h
        subwg   sp,#1234h

        inc     sp
        incg    sp
        dec     sp
        decg    sp

        irp     instr,call,br
        instr   addr16+8000h    ; force usage of !addr16 by value
        instr   !addr16
        instr   addr20
        instr   !!addr20
        irp     reg,ax,bc,rp2,rp3,vp,up,de,hl
        instr   reg
        instr   [reg]
        endm
        irp     reg,vvp,uup,tde,whl
        instr   reg
        instr   [reg]
        endm
        instr   PC+10
        instr   $PC+10
        instr   $!PC+10
        instr   PC+200
        instr   $!PC+200
        instr   PC-10
        instr   $PC-10
        instr   $!PC-10
        instr   PC-200
        instr   $!PC-200
        endm

        callf   0c23h
        callf   !0c23h
        callt   [60h]
        callt   [!60h]
        callt   [40h]
        callt   [!40h]
        callt   [7eh]
        callt   [!7eh]
        brk
        brkcs   rb6
        ret
        reti
        retb
        retcs   addr16
        retcs   !addr16
        retcsb  addr16

        bnz     PC+1
        bne     PC+2
        bz      PC+3
        be      PC+4
        bnc     PC+5
        bnl     PC+6
        bc      PC+7
        bl      PC+8
        bnv     PC+9
        bpo     PC+10
        bv      PC+11
        bpe     PC+12
        bp      PC+13
        bn      PC+14
        blt     PC+15
        bge     PC+16
        ble     PC+17
        bgt     PC+18
        bnh     PC+19
        bh      PC+20

        irp     instr,bf,bt,btclr,bfset
        instr   s2bit,PC+1
        instr   s1bit,PC+2
        instr   sfrbit,PC+3
        instr   xbit,PC+4
        instr   abit,PC+5
        instr   pswlbit,PC+6
        instr   pswhbit,PC+7
        instr   tdebit,PC+8
        instr   whlbit,PC+9
        instr   a16bit,PC+10
        instr   a24bit,PC+11
        endm

        dbnz    b,PC+1
        dbnz    c,PC+2
        dbnz    saddr2,PC+3
        dbnz    saddr1,PC+4

        mov     stbc,#55h
        mov     wdm,#0aah
        location 0
        location 15
        sel     rb5
        sel     rb2,alt
        swrs
        nop
        ei
        di

        chkl    pswl
        chkla   pswh

        movtblw 20h,45h
        movm    [tde+],a
        movm    [tde-],a
        movbk   [tde+],[whl+]
        movbk   [tde-],[whl-]
        xchm    [tde+],a
        xchm    [tde-],a
        xchbk   [tde+],[whl+]
        xchbk   [tde-],[whl-]
        cmpme   [tde+],a
        cmpme   [tde-],a
        cmpbke  [tde+],[whl+]
        cmpbke  [tde-],[whl-]
        cmpmne  [tde+],a
        cmpmne  [tde-],a
        cmpbkne [tde+],[whl+]
        cmpbkne [tde-],[whl-]
        cmpmc   [tde+],a
        cmpmc   [tde-],a
        cmpbkc  [tde+],[whl+]
        cmpbkc  [tde-],[whl-]
        cmpmnc  [tde+],a
        cmpmnc  [tde-],a
        cmpbknc [tde+],[whl+]
        cmpbknc [tde-],[whl-]