cc65/libsrc/cx16/layer_enable.s

40 lines
1.0 KiB
ArmAsm

;
; 2020-05-02, Greg King
;
; unsigned char __fastcall__ vera_layer_enable (unsigned char layers);
; /* Display the layers that are "named" by the bit flags in layers.
; ** A value of 0b01 shows layer 0, a value of 0b10 shows layer 1,
; ** a value of 0b11 shows both layers. Return the previous value.
; */
;
.export _vera_layer_enable
.include "cx16.inc"
mask = VERA::DISP::ENABLE::LAYER1 | VERA::DISP::ENABLE::LAYER0
.proc _vera_layer_enable
stz VERA::CTRL ; Use display register bank 0
asl a
asl a ; Shift new flags into position
asl a
asl a
ldy VERA::DISP::VIDEO
eor VERA::DISP::VIDEO
and #mask
eor VERA::DISP::VIDEO ; Replace old flags with new flags
sta VERA::DISP::VIDEO
tya
and #mask ; Get old flags
lsr a
lsr a
lsr a
lsr a
ldx #>$0000
rts
.endproc