Login

Subversion Repositories NedoOS

Rev

Rev 1026 | Rev 1031 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

;4000 - ╤Б╤В╤А╨░╨╜╨╕╤Ж╨░ ╨║╨╛╨╝╨░╨╜╨┤ (╨╝╨╛╨╢╨╡╤В ╨┐╨╛╨┤╨╝╨╡╨╜╤П╤В╤М╤Б╤П ╨┐╤А╨╕ ╨┤╨╛╤Б╤В╤Г╨┐╨╡ ╨║ ╨┤╨░╨╜╨╜╤Л╨╝, ╨╜╨╛ ╨┐╨╛╤В╨╛╨╝ ╨▓╤Л╨╖╤Л╨▓╨░╨╡╤В╤Б╤П OUTcom)
;8000,c000 - ╤Б╤В╤А╨░╨╜╨╕╤Ж╤Л ╨▓ 8000,c000

        MACRO get
        LD A,(DE)
        ENDM

        MACRO getHL
        get
        next
        LD L,A
        get
        next
        LD H,A
        ENDM

        MACRO next
        inc e
        call z,next_incd
        ENDM

;TODO ╨║╨░╨║ ╨╛╨┐╤А╨╡╨┤╨╡╨╗╨╕╤В╤М, ╤З╤В╨╛ ╨╝╤Л ╤А╨╡╨░╨╗╤М╨╜╨╛ ╤Й╤С╨╗╨║╨░╨╗╨╕ 4000, ╨╕╨╜╨░╤З╨╡ ╨┐╤А╨╛╤Б╨║╨╛╤З╨╕╤В╤М?
        MACRO OUTcom ;╨╡╤Б╨╗╨╕ ╨▓╨╝╨╡╤Б╤В╨╛ ╤Б╤В╤А.╨║╨╛╨╝╨░╨╜╨┤ ╨▓╨║╨╗╤О╤З╨╕╨╗╨╕ ╨┤╤А.╤Б╤В╤А.
        LD HL,(curquart)
        LD A,(HL)
        OUTPGCOM
        ENDM

        MACRO CALCpgcom ;╨╕╨╖╨╝╨╡╨╜╨╕╨╗╨░╤Б╤М ╨║╨╛╨╜╤Д╨╕╨│╤Г╤А╨░╤Ж╨╕╤П ╨┐╨░╨╝╤П╤В╨╕, ╨╜╨░╨┤╨╛ ╨▓╨║╨╗╤О╤З╨╕╤В╤М ╤Б╤В╤А╨░╨╜╨╕╤Ж╤Г ╨┤╨╗╤П DE(PC)
        LD HL,(curquart)
        LD A,(HL)
        OUTPGCOM
        ENDM

     ;╨┐╨╡╤А╨╡╨┤ JR/CALL/RST (╨╜╨░ ╨▓╤Е╨╛╨┤╨╡ - ╤Г╤А╨╡╨╖╨░╨╜╨╜╤Л╨╣ DE(PC), ╨░ ╨╜╨░╨┤╨╛ ╨┐╨╛╨╗╤Г╤З╨╕╤В╤М ╨┐╨╛╨╗╨╜╤Л╨╣)
        MACRO CALCpc
        LD A,(curquart) ;╨╛╨┤╨╕╨╜ ╨╕╨╖ 4 ╨░╨┤╤А╨╡╤Б╨╛╨▓ ╨┐╨╛╨┤╤А╤П╨┤, ╨│╨┤╨╡ ╨╗╨╡╨╢╨░╤В ╤В╨╡╨║╤Г╤Й╨╕╨╡ ╤Б╤В╤А╨░╨╜╨╕╤Ж╤Л ╨▓ ╨╛╨║╨╜╨░╤Е ;a=0,1,2,3 for 4000,8000,c000,0000
        RRCA
        RRCA ;a=0x00,0x40,0x80,0xc0 for 4000,8000,c000,0000
        add a,d ;d=0x40+
        LD D,A ;0x40,0x80,0xC0,0x00 for 4000,8000,c000,0000
        ENDM

     ;╨┐╨╛╤Б╨╗╨╡ JR/JP/CALL/RST/RET (╨╜╨░ ╨▓╤Е╨╛╨┤╨╡ - ╨┐╨╛╨╗╨╜╤Л╨╣ DE(PC), ╨░ ╨╜╨░╨┤╨╛ ╨┐╨╛╨╗╤Г╤З╨╕╤В╤М ╤Г╤А╨╡╨╖╨░╨╜╨╜╤Л╨╣)
        MACRO CALCiypgcom
        ld a,d
        rlca
        rlca
        dec a
        and 3 ;a=0,1,2,3 for 4000,8000,c000,0000
       ;ld hl,(curquart)
       ;cp l
       ;jp z,1f ;╨╜╨╡ ╨┐╨╛╨╗╤Г╤З╨╕╤В╤Б╤П ╨┐╨╛╤Б╨╗╨╡ ╤Й╤С╨╗╨║╨░╨╜╤М╤П ╨▓ 4000
        ld l,a
        ld (curquart),a
        ld h,currom/256
        LD A,(HL)
        OUTPGCOM
1;oldpg
        res 7,d
        set 6,d
        ENDM

;╨┐╨╛╤А╤В╨╕╤В HL,BC!
        MACRO mem ;page [hl]
        ld a,h
        add a,a
        call nc,setmem00004000
        ENDM

        MACRO getmem ;a<=[hl]
        mem
        LD A,(HL)
        ENDM

;╨┐╨╛╤А╤В╨╕╤В BC!
        MACRO putmem ;a<=[hl]
        ld c,a
        ld a,h
        add a,a
        call nc,setmem00004000forwrite
        LD (HL),c
        ENDM

;╨┐╨╛╤А╤В╨╕╤В HL,A!
        MACRO getmemBC
        ld a,h
        add a,a
        call nc,setmem00004000
        LD C,(HL)
        INC L
        JP NZ,1f;q ;╨▓╨╜╤Г╤В╤А╨╕ mem ╨╜╨╡╤В ╨╝╨╡╤В╨║╨╕ 1
       rra
       ld h,a
        INC h
        mem
1;q
        LD B,(HL)
        ENDM

;╨┐╨╛╤А╤В╨╕╤В HL,A!
        MACRO putmemBC
        ld a,h
        add a,a
        call nc,setmem00004000forwrite
        LD (HL),c
        INC L
        JP NZ,1f;q
       rra
       ld h,a
        INC h
        ld a,h
        add a,a
        call nc,setmem00004000forwrite
1;q
        LD (HL),b
        ENDM