mirror of
https://github.com/cc65/cc65.git
synced 2026-04-20 02:17:07 +00:00
852b622c43
Avoid enabling IRQ after disabling them in driver code, remember previous state instead (in case user had them disabled already).
48 lines
1.1 KiB
ArmAsm
48 lines
1.1 KiB
ArmAsm
;
|
|
; Oliver Schmidt, 2020-06-14
|
|
;
|
|
; void waitvsync (void);
|
|
;
|
|
.ifdef __APPLE2ENH__
|
|
|
|
.export _waitvsync
|
|
.import ostype
|
|
|
|
.include "apple2.inc"
|
|
|
|
_waitvsync:
|
|
bit ostype
|
|
bmi iigs ; $8x
|
|
bvs iic ; $4x
|
|
|
|
: bit RDVBLBAR
|
|
bpl :- ; Blanking
|
|
: bit RDVBLBAR
|
|
bmi :- ; Drawing
|
|
rts
|
|
|
|
; Apple IIgs TechNote #40, VBL Signal
|
|
iigs: bit RDVBLBAR
|
|
bmi iigs ; Blanking
|
|
: bit RDVBLBAR
|
|
bpl :- ; Drawing
|
|
rts
|
|
|
|
; Apple IIc TechNote #9, Detecting VBL
|
|
iic: php
|
|
sei
|
|
sta IOUDISOFF
|
|
lda RDVBLMSK
|
|
bit ENVBL
|
|
bit PTRIG ; Reset VBL interrupt flag
|
|
: bit RDVBLBAR
|
|
bpl :-
|
|
asl
|
|
bcs :+ ; VBL interrupts were already enabled
|
|
bit DISVBL
|
|
: sta IOUDISON ; IIc Tech Ref Man: The firmware normally leaves IOUDIS on.
|
|
plp
|
|
rts
|
|
|
|
.endif ; __APPLE2ENH__
|