Login

Subversion Repositories NedoOS

Rev

Rev 171 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

;"a"=a
;"x"=c (b=0)
;"y"=e (d=0)

        macro checka
        inc a
        dec a
        endm

        macro checkx
        inc c
        dec c
        endm

        macro checky
        inc e
        dec e
        endm

        macro sei ;ei
        endm

        macro cld ;clear decimal mode
        endm

        macro txs ;set stack pointer = x
        endm

        macro beq addr
        jp z,addr
        endm
       
        macro bne addr
        jp nz,addr
        endm
       
        macro bcs addr
        jp c,addr
        endm
       
        macro bcc addr
        jp nc,addr
        endm
       
        macro bmi addr
        jp m,addr
        endm

        macro bpl addr
        jp p,addr
        endm
       
        macro jsr addr
        call addr
        endm

        macro jmp addr
        jp addr
        endm
       
        macro jmpindirect addr
        ld hl,(addr)
        jp (hl)
        endm
       
        macro rts
        ret
        endm
       
        macro rti ;return from interrupt
        ret
        endm
       
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
       
        macro sec
        scf
        endm
       
        macro secsub ;перенос в вычитании инверсный
        or a
        endm
       
        macro cmpcy ;перенос после сравнения инверсный
        ccf
        endm
       
        macro clc ;сохраняет Z как минимум в chkjumpstringmetatiles
        scf
        ccf
        endm
       
        macro lsr
        srl a ;set Z,N,CY
        endm

        macro ror
        rr a ;set Z,N,CY
        endm
       
        macro rol
        rl a ;set Z,N,CY
        endm
       
        macro asl
        add a,a ;set Z,N,CY
        endm
       
        macro lsri addr
        ld hl,addr
        srl (hl)
        endm
       
        macro rori addr
        ld hl,addr
        rr (hl)
        endm
       
        macro roli addr
        ld hl,addr
        rl (hl)
        endm
       
        macro asli addr
        ld hl,addr
        sla (hl)
        endm
       
        macro rorx shift,x
        push af
        ld hl,shift
        add hl,bc
        pop af
        rr (hl)
        endm

        macro rolx shift,x
        push af
        ld hl,shift
        add hl,bc
        pop af
        rl (hl)
        endm

        macro oran value ;TODO don't spoil CY
         push af
        or value
         ld h,a
         pop af
         ld a,h
         inc a
         dec a
        endm
       
        macro eorn value ;TODO don't spoil CY
         push af
        xor value
         ld h,a
         pop af
         ld a,h
         inc a
         dec a
        endm
       
        macro andn value ;TODO don't spoil CY
         push af
        and value
         ld h,a
         pop af
         ld a,h
         inc a
         dec a
        endm
       
        macro orax shift,x
         push af
        ld hl,shift
        add hl,bc
        or (hl) ;TODO don't spoil CY
         ld h,a
         pop af
         ld a,h
         inc a
         dec a
        endm

        macro oray shift,y
         push af
        ld hl,shift
        add hl,de
        or (hl) ;TODO don't spoil CY
         ld h,a
         pop af
         ld a,h
         inc a
         dec a
        endm

        macro eorx shift,x
         push af
        ld hl,shift
        add hl,bc
        xor (hl) ;TODO don't spoil CY
         ld h,a
         pop af
         ld a,h
         inc a
         dec a
        endm

        macro eory shift,y
         push af
        ld hl,shift
        add hl,de
        xor (hl) ;TODO don't spoil CY
         ld h,a
         pop af
         ld a,h
         inc a
         dec a
        endm

        macro andx shift,x
         push af
        ld hl,shift
        add hl,bc
        and (hl) ;TODO don't spoil CY
         ld h,a
         pop af
         ld a,h
         inc a
         dec a
        endm

        macro andy shift,y
         push af
        ld hl,shift
        add hl,de
        and (hl) ;TODO don't spoil CY
         ld h,a
         pop af
         ld a,h
         inc a
         dec a
        endm

        macro orai addr ;TODO don't spoil CY
         push af
        ld hl,addr
        or (hl)
         ld h,a
         pop af
         ld a,h
         inc a
         dec a
        endm
       
        macro eori addr ;TODO don't spoil CY
         push af
        ld hl,addr
        xor (hl)
         ld h,a
         pop af
         ld a,h
         inc a
         dec a
        endm
       
        macro andi addr ;TODO don't spoil CY
         push af
        ld hl,addr
        and (hl)
         ld h,a
         pop af
         ld a,h
         inc a
         dec a
        endm
       
        macro biti addr ;TODO don't spoil CY
         push af
        ld hl,(addr)
        ld h,a
        and l
         ld h,a
         pop af
         inc h
         dec h
        endm
       
        macro adcn value
        adc a,value
        endm
       
        macro sbcn value
        sbc a,value
        endm
       
        macro adci addr
        ld hl,addr
        adc a,(hl)
        endm
       
        macro sbci addr
        ld hl,addr
        sbc a,(hl)
        endm
       
        macro adcx shift,x
        push af
        ld hl,shift
        add hl,bc
        pop af
        adc a,(hl)
        endm

        macro sbcx shift,x
        push af
        ld hl,shift
        add hl,bc
        pop af
        sbc a,(hl)
        endm

        macro adcy shift,y
        push af
        ld hl,shift
        add hl,de
        pop af
        adc a,(hl)
        endm

        macro sbcy shift,y
        push af
        ld hl,shift
        add hl,de
        pop af
        sbc a,(hl)
        endm

        macro cmpn value
        cp value
        endm

        macro cpxn value
        ld l,a
        ld a,c
        cp value
        ld a,l
        endm

        macro cpyn value
        ld l,a
        ld a,e
        cp value
        ld a,l
        endm

        macro cmpi addr
        ld hl,addr
        cp (hl)
        endm

        macro cpxi addr
        ld hl,(addr)
        ld h,a
        ld a,c
        cp l
        ld a,h
        endm

        macro cpyi addr
        ld hl,(addr)
        ld h,a
        ld a,e
        cp l
        ld a,h
        endm

        macro cmpx shift,x
         push af
        ld hl,shift
        add hl,bc
         pop af
        cp (hl)
        endm

        macro cmpy shift,y
         push af
        ld hl,shift
        add hl,de
         pop af
        cp (hl)
        endm

        macro dex
        dec c
        endm
       
        macro inx
        inc c
        endm
       
        macro dey
        dec e
        endm
       
        macro iny
        inc e
        endm
       
        macro deci addr
        ld hl,addr
        dec (hl)
        endm
       
        macro inci addr
        ld hl,addr
        inc (hl)
        endm
       
        macro incx shift,x
         push af
        ld hl,shift
        add hl,bc
         pop af
        inc (hl)
        endm

        macro decx shift,x
         push af
        ld hl,shift
        add hl,bc
         pop af
        dec (hl)
        endm

        macro incy shift,y
         push af
        ld hl,shift
        add hl,de
         pop af
        inc (hl)
        endm

        macro decy shift,y
         push af
        ld hl,shift
        add hl,de
         pop af
        dec (hl)
        endm

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
       
        macro pha
        push af
        endm
       
        macro pla
        ;pop hl
        ;ld a,h ;keep CY
        ;inc a
        ;dec a ;keep CY, set Z,N
        pop af
        endm
       
        macro plakeepcy
        pop hl
        ld a,h ;keep CY
        inc a
        dec a ;set Z,N
        endm
       
        macro plarol ;pla:rol
        pop hl
        ld a,h ;keep CY
        rla
        endm

        macro txa
        ld a,c
        ;inc a
        ;dec a ;keep CY, set Z,N
        endm
       
        macro tya
        ld a,e
        ;inc a
        ;dec a ;keep CY, set Z,N
        endm
       
        macro tax
        ld c,a
        ;inc a
        ;dec a ;keep CY, set Z,N
        endm
       
        macro tay
        ld e,a
        ;inc a
        ;dec a ;keep CY, set Z,N
        endm
       
        macro ldan value
        ld a,value
        ;inc a
        ;dec a ;keep CY, set Z,N
        endm

        macro ldxn value
        ld c,value
        ;inc c
        ;dec c ;keep CY, set Z,N
        endm

        macro ldyn value
        ld e,value
        ;inc e
        ;dec e ;keep CY, set Z,N
        endm

        macro ldyn16 value
        ld de,value
        endm

        macro lda addr
        ld a,(addr)
        ;inc a
        ;dec a ;keep CY, set Z,N
        endm

        macro ldx addr
        ld hl,addr
        ld c,(hl)
        ;inc c
        ;dec c ;keep CY, set Z,N
        endm

        macro ldy addr
        ld hl,addr
        ld e,(hl)
        ;inc e
        ;dec e ;keep CY, set Z,N
        endm

        macro ldax shift,x ;???
        ;push af
        ld hl,shift
        add hl,bc
        ;pop af
        ld a,(hl)
        ;inc a
        ;dec a ;keep CY, set Z,N
        endm

        macro ldaxkeepcy shift,x ;???
        push af
        ld hl,shift
        add hl,bc
        pop af
        ld a,(hl)
        ;inc a
        ;dec a ;keep CY, set Z,N
        endm

        macro lday shift,y ;???
         push af
        ld hl,shift
        add hl,de
         pop af
        ld a,(hl)
        ;inc a
        ;dec a ;keep CY, set Z,N
        endm

        macro ldaykeepcy shift,y ;???
        push af
        ld hl,shift
        add hl,de
        pop af
        ld a,(hl)
        ;inc a
        ;dec a ;keep CY, set Z,N
        endm

        macro ldxy shift,y ;???
         push af
        ld hl,shift
        add hl,de
         pop af
        ld c,(hl)
        ;inc c
        ;dec c ;keep CY, set Z,N
        endm

        macro ldyx shift,x ;???
         push af
        ld hl,shift
        add hl,bc
         pop af
        ld e,(hl)
        ;inc e
        ;dec e ;keep CY, set Z,N
        endm

        macro ldayindirect addr,y ;???
         push af
        ld hl,(addr)
        add hl,de
         pop af
        ld a,(hl)
        ;inc a
        ;dec a ;keep CY, set Z,N
        endm

        macro sta addr
        ld (addr),a
        endm

        macro stx addr
        ld hl,addr
        ld (hl),c
        endm

        macro sty addr
        ld hl,addr
        ld (hl),e
        endm

        macro stax shift,x ;??? no branches found after stax
         push af
        ld hl,shift
        add hl,bc
         pop af
        ld (hl),a
        endm

        macro stay shift,y ;??? no branches found after stay
         push af
        ld hl,shift
        add hl,de
         pop af
        ld (hl),a
        endm

        macro stxy shift,y ;??? no branches found after stxy
         push af
        ld hl,shift
        add hl,de
         pop af
        ld (hl),c
        endm

        macro styx shift,x ;??? no branches found after styx
         push af
        ld hl,shift
        add hl,bc
         pop af
        ld (hl),e
        endm

        macro stayindirect addr,y ;??? no branches found after stayindirect
         push af
        ld hl,(addr)
        add hl,de
         pop af
        ld (hl),a
        endm