Timer working on IIgs! asmSlam optimized a bit.
This commit is contained in:
parent
4aa716b19f
commit
e951e9a8b7
4 changed files with 41 additions and 80 deletions
|
@ -16,7 +16,7 @@ iix makelib 31:/out/joey/joeylib +31:/out/joey/jIIgsc.a
|
||||||
iix makelib 31:/out/joey/joeylib +31:/out/joey/joey.a
|
iix makelib 31:/out/joey/joeylib +31:/out/joey/joey.a
|
||||||
|
|
||||||
iix compile test.c keep=31:/out/joey/test
|
iix compile test.c keep=31:/out/joey/test
|
||||||
iix -DKeepType=S16 link 31:/out/joey/test 31:/out/joey/joeylib keep=31:/out/joey/test
|
iix -DKeepType=S16 link +L 31:/out/joey/test 31:/out/joey/joeylib keep=31:/out/joey/test > test.map
|
||||||
|
|
||||||
iix dumpobj +D 31:/out/joey/test &> test.dis || true
|
iix dumpobj +D 31:/out/joey/test &> test.dis || true
|
||||||
|
|
||||||
|
|
|
@ -43,3 +43,5 @@ SDL_MIXER_LIBS = \
|
||||||
LIBS += \
|
LIBS += \
|
||||||
$$SDL_LIBS \
|
$$SDL_LIBS \
|
||||||
$$SDL_MIXER_LIBS
|
$$SDL_MIXER_LIBS
|
||||||
|
|
||||||
|
DISTFILES +=
|
||||||
|
|
113
src/jIIgs.asm
113
src/jIIgs.asm
|
@ -29,10 +29,6 @@ savedDBR data ; Storage for Data Bank Register
|
||||||
ds 2 ; 16 bits
|
ds 2 ; 16 bits
|
||||||
end ; Used by jIIgs.macro
|
end ; Used by jIIgs.macro
|
||||||
|
|
||||||
vblDBR data ; Storage for Data Bank Register during VBL Interrupt
|
|
||||||
ds 2 ; 16 bits
|
|
||||||
end
|
|
||||||
|
|
||||||
ScanTable data
|
ScanTable data
|
||||||
ds 400 ; 400 bytes for scanline offsets
|
ds 400 ; 400 bytes for scanline offsets
|
||||||
end
|
end
|
||||||
|
@ -392,32 +388,6 @@ PBoth sta temp3 ; Store accumulator in temp3
|
||||||
jreturn
|
jreturn
|
||||||
end
|
end
|
||||||
|
|
||||||
;----------------------------------------
|
|
||||||
; Turn SHR Shadowing Off
|
|
||||||
;----------------------------------------
|
|
||||||
asmShOff start
|
|
||||||
jsubroutine
|
|
||||||
short m
|
|
||||||
lda $E0C035
|
|
||||||
ora #$08
|
|
||||||
sta $E0C035
|
|
||||||
long m
|
|
||||||
jreturn
|
|
||||||
end
|
|
||||||
|
|
||||||
;----------------------------------------
|
|
||||||
; Turn SHR Shadowing On
|
|
||||||
;----------------------------------------
|
|
||||||
asmShOn start
|
|
||||||
jsubroutine
|
|
||||||
short m
|
|
||||||
lda $E0C035
|
|
||||||
and #$F7
|
|
||||||
sta $E0C035
|
|
||||||
long m
|
|
||||||
jreturn
|
|
||||||
end
|
|
||||||
|
|
||||||
;----------------------------------------
|
;----------------------------------------
|
||||||
; "PEI Slam" shadowed SHR display to the
|
; "PEI Slam" shadowed SHR display to the
|
||||||
; actual display. Copies all 200 lines,
|
; actual display. Copies all 200 lines,
|
||||||
|
@ -429,17 +399,23 @@ asmSlam start
|
||||||
|
|
||||||
jsubroutine
|
jsubroutine
|
||||||
|
|
||||||
|
short m ; Turn Shadowing On
|
||||||
|
lda $E0C035
|
||||||
|
and #$F7
|
||||||
|
sta $E0C035
|
||||||
|
long m
|
||||||
|
|
||||||
php ; Push Processor Status Register
|
php ; Push Processor Status Register
|
||||||
tdc ; Transfer Direct Register to C Accumulator
|
lda >$E0C068-1
|
||||||
sta >DataPtr ; Store Accumulator in DataPtr
|
pha ; Save main/aux bank state
|
||||||
|
phd ; Save DPage
|
||||||
tsc ; Transfer Stack Pointer to C Accumulator
|
tsc ; Transfer Stack Pointer to C Accumulator
|
||||||
sta >StackPtr ; Store Accumulator in StackPtr
|
sta >StackPtr ; Store Accumulator in StackPtr
|
||||||
|
|
||||||
sei ; Disable interrupts
|
sei ; Disable interrupts
|
||||||
short m
|
|
||||||
sta >$00C005 ; Switch to AUX
|
lda #$3000 ; Read/write aux 48k (SHR) via bank 0
|
||||||
sta >$00C003
|
sta >$E0C068-1
|
||||||
long m
|
|
||||||
|
|
||||||
ldy #$2000 ; Point to start of SHR
|
ldy #$2000 ; Point to start of SHR
|
||||||
|
|
||||||
|
@ -601,41 +577,39 @@ peiPage tya
|
||||||
|
|
||||||
brl peiPage
|
brl peiPage
|
||||||
|
|
||||||
peiInts short m
|
peiInts lda #0 ; Swap main 48k into bank 0
|
||||||
sta >$00C004 ; Switch to MAIN
|
sta >$E0C068-1
|
||||||
sta >$00C002
|
|
||||||
long m
|
|
||||||
lda >StackPtr ; Load original Stack Pointer into Accumulator
|
lda >StackPtr ; Load original Stack Pointer into Accumulator
|
||||||
tcs ; Transfer Accumulator to Stack Pointer (Restores original stack)
|
tcs ; Transfer Accumulator to Stack Pointer (Restores original stack)
|
||||||
lda >DataPtr ; Load original Direct Pointer into Accumulator
|
pld ; Restore direct page
|
||||||
tcd ; Transfer Accumulator to Direct Pointer (Restores direct page)
|
|
||||||
|
|
||||||
cli ; Go Interrupts! Go!
|
cli ; Go Interrupts! Go!
|
||||||
sei ; Stop interrupts
|
sei ; Stop interrupts
|
||||||
|
|
||||||
short m
|
phd
|
||||||
sta >$00C005 ; Switch to AUX
|
lda #$3000 ; Read/write aux 48k (SHR) via bank 0
|
||||||
sta >$00C003
|
sta >$E0C068-1
|
||||||
long m
|
|
||||||
|
|
||||||
brl peiChunk
|
brl peiChunk
|
||||||
|
|
||||||
peiEnd short m
|
peiEnd lda #0 ; Swap main 48k into bank 0
|
||||||
sta >$00C004 ; Switch to MAIN
|
sta >$E0C068-1
|
||||||
sta >$00C002
|
|
||||||
long m
|
|
||||||
lda >StackPtr
|
lda >StackPtr
|
||||||
tcs ; Restore stack
|
tcs ; Restore stack
|
||||||
lda >DataPtr
|
pld ; Restore DP
|
||||||
tcd ; Restore DP
|
pla
|
||||||
cli ; Enable Interrupts
|
sta >$E0C068-1 ; Restore main/aux bank state
|
||||||
|
|
||||||
plp ; Restore processor register
|
plp ; Restore processor register
|
||||||
|
|
||||||
|
short m ; Turn Shadowing Off
|
||||||
|
lda $E0C035
|
||||||
|
ora #$08
|
||||||
|
sta $E0C035
|
||||||
|
long m
|
||||||
|
|
||||||
jreturn
|
jreturn
|
||||||
|
|
||||||
StackPtr ds 2 ; Space for SP
|
StackPtr ds 2 ; Space for SP
|
||||||
DataPtr ds 2 ; Space for DP
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -667,11 +641,12 @@ STL sta ScanTable,x ; Store accumulator in ScanTable+x
|
||||||
lda #42 ; Reset timer
|
lda #42 ; Reset timer
|
||||||
sta >VblTime
|
sta >VblTime
|
||||||
|
|
||||||
;ph4 #VblHdr ; Start VBL interrupt task
|
ph4 #VblHdr ; Start VBL interrupt task
|
||||||
;ldx #$1203 ;_SetHeartBeat
|
ldx #$1203 ;_SetHeartBeat
|
||||||
;jsl $E10000
|
jsl $E10000
|
||||||
|
|
||||||
jreturn
|
jreturn
|
||||||
|
jsl VblTask ; This is a dummy call to be sure there's a reference to VblTask when linking as a library.
|
||||||
end
|
end
|
||||||
|
|
||||||
;----------------------------------------
|
;----------------------------------------
|
||||||
|
@ -680,9 +655,9 @@ STL sta ScanTable,x ; Store accumulator in ScanTable+x
|
||||||
asmStop start
|
asmStop start
|
||||||
jsubroutine
|
jsubroutine
|
||||||
|
|
||||||
;ph4 #VblHdr ; Stop VBL interrupt task
|
ph4 #VblHdr ; Stop VBL interrupt task
|
||||||
;ldx #$1303 ;_DelHeartBeat
|
ldx #$1303 ;_DelHeartBeat
|
||||||
;jsl $E10000
|
jsl $E10000
|
||||||
|
|
||||||
jreturn
|
jreturn
|
||||||
end
|
end
|
||||||
|
@ -699,23 +674,11 @@ VblCount dc i2'1' ; How many VBLs between calls (1 only on initial call)
|
||||||
VblTask start
|
VblTask start
|
||||||
using VblHdr
|
using VblHdr
|
||||||
using VblRate
|
using VblRate
|
||||||
using vblDBR
|
lda >VblRate ; Reset hearbeat counter
|
||||||
long m ; 16 bit Accumulator
|
|
||||||
phb ; Push Data Bank Register
|
|
||||||
phb ; Push Data Bank Register
|
|
||||||
pla ; Pull Accumulator
|
|
||||||
sta >vblDBR ; Store Accumulator in savedDBR (Data Bank Register)
|
|
||||||
phk ; Push K (Program Bank Register)
|
|
||||||
plb ; Pull Data Bank Register
|
|
||||||
lda >VblRate ; Reset counter
|
|
||||||
sta >VblCount
|
sta >VblCount
|
||||||
lda >VblTime ; Increment timer
|
lda >VblTime ; Increment timer
|
||||||
inc a
|
inc a
|
||||||
sta >VblTime
|
sta >VblTime
|
||||||
lda >vblDBR ; Load our saved Data Bank Register
|
|
||||||
pha ; Push the C Accumulator
|
|
||||||
plb ; Pull Data Bank Register
|
|
||||||
plb ; Pull Data Bank Register
|
|
||||||
short m ; Back to 8 bit Accumulator
|
|
||||||
rtl
|
rtl
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -49,8 +49,6 @@ extern void asmBorder(int c);
|
||||||
extern void asmGrOff(void);
|
extern void asmGrOff(void);
|
||||||
extern void asmGrOn(void);
|
extern void asmGrOn(void);
|
||||||
extern int asmJoy(int which);
|
extern int asmJoy(int which);
|
||||||
extern void asmShOff(void);
|
|
||||||
extern void asmShOn(void);
|
|
||||||
extern void asmSlam(void);
|
extern void asmSlam(void);
|
||||||
extern void asmStart(int myID, int hertzBy10);
|
extern void asmStart(int myID, int hertzBy10);
|
||||||
extern void asmStop(void);
|
extern void asmStop(void);
|
||||||
|
@ -105,9 +103,7 @@ void _jlDebugBorder(jlBorderColorsE color) {
|
||||||
|
|
||||||
|
|
||||||
void jlDisplayPresent(void) {
|
void jlDisplayPresent(void) {
|
||||||
asmShOn();
|
|
||||||
asmSlam();
|
asmSlam();
|
||||||
asmShOff();
|
|
||||||
asmBorder(_jlBorderColor);
|
asmBorder(_jlBorderColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue