(root)/src/z80/mem_marg.asm – Rev 1029
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