The same code but modified with double buffering the screens:
nolist
org #8000
LD HL,BufferRsx
LD BC,PtrRsx
JP #BCD1
PtrRsx:
DW RSX_TABLE
JP Bank
JP Copy
RSX_TABLE:
DB "BAN","K"+#80
DB "COP","Y"+#80
Bank:
LD A,(IX+0)
LD B,#7F
OUT (C),A
RET
Copy:
LD BC,#BC0C
OUT (C),C
LD BC,#BD10
OUT (C),C ; switch display to #4000 bank #C0
LD HL,#4000
LD DE,#C000
LD BC,#4000
LDIR
LD BC,#BD30
OUT (C),C ; switch display to #C000
LD BC,#7FC0
OUT (C),C ; switch to bank #C0
LD HL,#C000
LD DE,#4000
LD BC,#4000
LDIR
RET
BufferRsx:
DS 4