mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-26 00:29:29 +00:00
lemm: more work on iic vblank
This commit is contained in:
parent
3b8aa7fad8
commit
b6fcd7efa8
|
@ -8,11 +8,14 @@ CLR80COL = $C000 ; PAGE0/PAGE1 normal
|
||||||
SET80COL = $C001 ; PAGE0/PAGE1 switches PAGE0 in Aux instead
|
SET80COL = $C001 ; PAGE0/PAGE1 switches PAGE0 in Aux instead
|
||||||
EIGHTYCOLOFF = $C00C
|
EIGHTYCOLOFF = $C00C
|
||||||
EIGHTYCOLON = $C00D
|
EIGHTYCOLON = $C00D
|
||||||
VBLANK = $C019 ; IIe *not* RDVBL (VBL signal low)
|
VBLANK = $C019 ; IIe *not* RDVBL (VBL low), IIgs opposite
|
||||||
|
RSTVBL = $C019 ; reset VBLANK interrupt (iic)
|
||||||
|
RDVBLBAR = $C019
|
||||||
TBCOLOR = $C022 ; IIgs text foreground / background colors
|
TBCOLOR = $C022 ; IIgs text foreground / background colors
|
||||||
NEWVIDEO = $C029 ; IIgs graphics modes
|
NEWVIDEO = $C029 ; IIgs graphics modes
|
||||||
SPEAKER = $C030
|
SPEAKER = $C030
|
||||||
CLOCKCTL = $C034 ; bits 0-3 are IIgs border color
|
CLOCKCTL = $C034 ; bits 0-3 are IIgs border color
|
||||||
|
RDVBLMSK = $C041 ; read VBL interrupt (bit 7)
|
||||||
SET_GR = $C050
|
SET_GR = $C050
|
||||||
SET_TEXT = $C051
|
SET_TEXT = $C051
|
||||||
FULLGR = $C052
|
FULLGR = $C052
|
||||||
|
@ -21,17 +24,17 @@ PAGE0 = $C054
|
||||||
PAGE1 = $C055
|
PAGE1 = $C055
|
||||||
LORES = $C056 ; Enable LORES graphics
|
LORES = $C056 ; Enable LORES graphics
|
||||||
HIRES = $C057 ; Enable HIRES graphics
|
HIRES = $C057 ; Enable HIRES graphics
|
||||||
|
CLRAN1 = $C05A ; clear annunciator 1 (if IOUDIS off)
|
||||||
|
DISVBL = $C05A ; disable VBLANK (iic) (if IOUDIS on)
|
||||||
|
SETAN1 = $C05B ; set annunciator 1 (if IOUDIS off)
|
||||||
|
ENVBL = $C05B ; enable VBLANK (iic) (if IOUDIS on)
|
||||||
AN3 = $C05E ; Annunciator 3
|
AN3 = $C05E ; Annunciator 3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PADDLE_BUTTON0 = $C061
|
PADDLE_BUTTON0 = $C061
|
||||||
PADDL0 = $C064
|
PADDL0 = $C064
|
||||||
PTRIG = $C070
|
PTRIG = $C070 ; Analog input reset
|
||||||
|
VBLINT = $C070 ; Analog input reset + reset vblank (iic)
|
||||||
|
IOUDISON = $C07E ; iic
|
||||||
|
IOUDISOFF = $C07F ; iic
|
||||||
|
|
||||||
;; BASIC ROUTINES
|
;; BASIC ROUTINES
|
||||||
|
|
||||||
|
|
|
@ -364,26 +364,48 @@ level_end_messages_h:
|
||||||
|
|
||||||
.align $100
|
.align $100
|
||||||
|
|
||||||
|
.if 1
|
||||||
;==============
|
;==============
|
||||||
; this code from https://comp.sys.apple2.narkive.com/dHkvl39d/vblank-apple-iic
|
; this code from https://comp.sys.apple2.narkive.com/dHkvl39d/vblank-apple-iic
|
||||||
; as well as IIc technote #9
|
; as well as IIc technote #9
|
||||||
split_screen_iic:
|
split_screen_iic:
|
||||||
bit $c041
|
bit $c041 ; RDVBLMSK Read VBL interrupt (bit 7)
|
||||||
bmi rdvbl
|
bmi rdvbl
|
||||||
sta $c07f ; turn off IOUdis
|
sta $c07f ; IOUDISOFF turn off IOUdis
|
||||||
sta $c05b ; ENVBL enable vblank
|
sta $c05b ; ENVBL enable vblank
|
||||||
sta $c07e ; ??
|
sta $c07e ; IOUDISON turn on IOUdis
|
||||||
rdvbl:
|
rdvbl:
|
||||||
bit $c019
|
bit $c019 ; RSTVBL reset vblank (iic)
|
||||||
bmi rdvbl
|
bmi rdvbl
|
||||||
lda $c070 ; clear vblank
|
lda $c070 ; reset VBLINT vblank interrupt flag
|
||||||
rdvbl2:
|
rdvbl2:
|
||||||
bit $c019
|
bit $c019 ; RSTVBL reset vblank (iic)
|
||||||
bpl rdvbl2
|
bpl rdvbl2
|
||||||
lda $c070 ; clears vblank
|
lda $c070 ; reset VBLINT vblank interrupt flag
|
||||||
|
|
||||||
jmp start_vblank
|
jmp start_vblank
|
||||||
|
|
||||||
|
.else
|
||||||
|
; alternate implementation by Oliver Schmidt
|
||||||
|
; from https://github.com/cc65/cc65/blob/master/libsrc/apple2/waitvsync.s
|
||||||
|
split_screen_iic:
|
||||||
|
sei ; disables interrupts
|
||||||
|
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.
|
||||||
|
cli ; re-enable interrupts
|
||||||
|
|
||||||
|
jmp start_vblank
|
||||||
|
.endif
|
||||||
|
|
||||||
|
|
||||||
; split screen?
|
; split screen?
|
||||||
|
|
||||||
split_screen_iigs:
|
split_screen_iigs:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user