mirror of
https://github.com/blondie7575/GSCats.git
synced 2024-11-28 15:49:25 +00:00
Initial commit
This commit is contained in:
parent
38350af665
commit
4c8be2d8aa
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/GSCats.xcodeproj/xcuserdata/qd.xcuserdatad/xcschemes/GSCats.xcscheme
|
||||||
|
/gscats.lst
|
BIN
AppleCommander.jar
Normal file
BIN
AppleCommander.jar
Normal file
Binary file not shown.
@ -6,10 +6,23 @@
|
|||||||
objectVersion = 46;
|
objectVersion = 46;
|
||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXFileReference section */
|
||||||
|
70E9D85F1F2BD95400555C19 /* equates.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = equates.s; sourceTree = "<group>"; };
|
||||||
|
70E9D8601F2BD95400555C19 /* graphics.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = graphics.s; sourceTree = "<group>"; };
|
||||||
|
70E9D8611F2BD95400555C19 /* gscats.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gscats.s; sourceTree = "<group>"; };
|
||||||
|
70E9D8621F2BD95400555C19 /* macros.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = macros.s; sourceTree = "<group>"; };
|
||||||
|
70E9D8631F2BD95400555C19 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
|
||||||
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
70E9D8541F2BD8EF00555C19 = {
|
70E9D8541F2BD8EF00555C19 = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
70E9D85F1F2BD95400555C19 /* equates.s */,
|
||||||
|
70E9D8601F2BD95400555C19 /* graphics.s */,
|
||||||
|
70E9D8621F2BD95400555C19 /* macros.s */,
|
||||||
|
70E9D8611F2BD95400555C19 /* gscats.s */,
|
||||||
|
70E9D8631F2BD95400555C19 /* Makefile */,
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
@ -184,6 +197,7 @@
|
|||||||
70E9D85E1F2BD8EF00555C19 /* Release */,
|
70E9D85E1F2BD8EF00555C19 /* Release */,
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
};
|
};
|
||||||
/* End XCConfigurationList section */
|
/* End XCConfigurationList section */
|
||||||
};
|
};
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Scheme
|
|
||||||
LastUpgradeVersion = "0820"
|
|
||||||
version = "1.3">
|
|
||||||
<BuildAction
|
|
||||||
parallelizeBuildables = "YES"
|
|
||||||
buildImplicitDependencies = "YES">
|
|
||||||
</BuildAction>
|
|
||||||
<TestAction
|
|
||||||
buildConfiguration = "Debug"
|
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
||||||
<Testables>
|
|
||||||
</Testables>
|
|
||||||
<AdditionalOptions>
|
|
||||||
</AdditionalOptions>
|
|
||||||
</TestAction>
|
|
||||||
<LaunchAction
|
|
||||||
buildConfiguration = "Debug"
|
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
||||||
launchStyle = "0"
|
|
||||||
useCustomWorkingDirectory = "NO"
|
|
||||||
ignoresPersistentStateOnLaunch = "NO"
|
|
||||||
debugDocumentVersioning = "YES"
|
|
||||||
debugServiceExtension = "internal"
|
|
||||||
allowLocationSimulation = "YES">
|
|
||||||
<AdditionalOptions>
|
|
||||||
</AdditionalOptions>
|
|
||||||
</LaunchAction>
|
|
||||||
<ProfileAction
|
|
||||||
buildConfiguration = "Release"
|
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
||||||
savedToolIdentifier = ""
|
|
||||||
useCustomWorkingDirectory = "NO"
|
|
||||||
debugDocumentVersioning = "YES">
|
|
||||||
</ProfileAction>
|
|
||||||
<AnalyzeAction
|
|
||||||
buildConfiguration = "Debug">
|
|
||||||
</AnalyzeAction>
|
|
||||||
<ArchiveAction
|
|
||||||
buildConfiguration = "Release"
|
|
||||||
revealArchiveInOrganizer = "YES">
|
|
||||||
</ArchiveAction>
|
|
||||||
</Scheme>
|
|
35
Makefile
Normal file
35
Makefile
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#
|
||||||
|
# Makefile
|
||||||
|
# GS Cats
|
||||||
|
#
|
||||||
|
# Created by Quinn Dunki on 7/14/15.
|
||||||
|
# One Girl, One Laptop Productions
|
||||||
|
# http://www.quinndunki.com
|
||||||
|
# http://www.quinndunki.com/blondihacks
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
CL65=cl65
|
||||||
|
AC=AppleCommander.jar
|
||||||
|
ADDR=6000
|
||||||
|
|
||||||
|
PGM=gscats
|
||||||
|
|
||||||
|
all: $(PGM)
|
||||||
|
|
||||||
|
|
||||||
|
$(PGM):
|
||||||
|
@PATH=$(PATH):/usr/local/bin; $(CL65) -t apple2enh --cpu 65816 --start-addr $(ADDR) -l$(PGM).lst $(PGM).s
|
||||||
|
java -jar $(AC) -d $(PGM).2mg $(PGM)
|
||||||
|
java -jar $(AC) -p $(PGM).2mg $(PGM) BIN 0x$(ADDR) < $(PGM)
|
||||||
|
cp $(PGM).2mg ~/Library/Application\ Support/Sweet16/Disk\ Images
|
||||||
|
rm -f $(PGM)
|
||||||
|
rm -f $(PGM).o
|
||||||
|
osascript V2Make.scpt $(PROJECT_DIR) $(PGM)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(PGM)
|
||||||
|
rm -f $(PGM).o
|
||||||
|
rm ~/Library/Application\ Support/Sweet16/Disk\ Images/*
|
||||||
|
|
||||||
|
|
BIN
V2Make.scpt
Normal file
BIN
V2Make.scpt
Normal file
Binary file not shown.
19
equates.s
Normal file
19
equates.s
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
TEXTCOLOR = $c022
|
||||||
|
NEWVIDEO = $c029
|
||||||
|
BORDERCOLOR = $c034
|
||||||
|
CLOCKCTL = $c034
|
||||||
|
COUT = $fded
|
||||||
|
KBD = $c000
|
||||||
|
KBDSTROBE = $c010
|
||||||
|
|
||||||
|
|
||||||
|
; Zero page locations we use (unused by Monitor, Applesoft, or ProDOS)
|
||||||
|
PARAM0 = $06
|
||||||
|
PARAM1 = $07
|
||||||
|
PARAM2 = $08
|
||||||
|
PARAM3 = $09
|
||||||
|
PARAML0 = $06 ; 16-bit versions of params
|
||||||
|
PARAML1 = $08
|
||||||
|
SCRATCH0 = $19
|
||||||
|
SCRATCH1 = $1a
|
||||||
|
SCRATCHL = $19 ; 16-bit version of scratch
|
94
graphics.s
Normal file
94
graphics.s
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; colorFill
|
||||||
|
; Fills the screen with a color (or two). Not very fast.
|
||||||
|
; A 4:4:4:4 = Palette entries
|
||||||
|
|
||||||
|
colorFill:
|
||||||
|
phx
|
||||||
|
ldx #32000
|
||||||
|
|
||||||
|
colorFillLoop:
|
||||||
|
sta $e11ffe,x
|
||||||
|
dex
|
||||||
|
dex
|
||||||
|
bne colorFillLoop
|
||||||
|
plx
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; initSCBs
|
||||||
|
; Initialize all scanline control bytes
|
||||||
|
;
|
||||||
|
; Trashes A,X
|
||||||
|
|
||||||
|
initSCBs:
|
||||||
|
lda #0
|
||||||
|
ldx #$0100 ;set all $100 scbs to A
|
||||||
|
|
||||||
|
initSCBsLoop:
|
||||||
|
dex
|
||||||
|
dex
|
||||||
|
sta $e19cfe,x
|
||||||
|
bne initSCBsLoop
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; setPaletteColor
|
||||||
|
; Set a single color in a palette
|
||||||
|
; PARAML0 = 0:Color index
|
||||||
|
; PARAML1 = 0:R:G:B
|
||||||
|
; A = Palette index
|
||||||
|
;
|
||||||
|
; Trashes X
|
||||||
|
|
||||||
|
setPaletteColor:
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
sta SCRATCHL
|
||||||
|
lda PARAML0
|
||||||
|
asl
|
||||||
|
clc
|
||||||
|
adc SCRATCHL
|
||||||
|
tax
|
||||||
|
lda PARAML1
|
||||||
|
sta $e19e00,x
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; setPalette
|
||||||
|
; Set a single color in a palette
|
||||||
|
; PARAML0 = Pointer to 32 color bytes
|
||||||
|
; A = Palette index
|
||||||
|
;
|
||||||
|
|
||||||
|
setPalette:
|
||||||
|
SAVE_XY
|
||||||
|
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
setPaletteLoop:
|
||||||
|
|
||||||
|
lda (PARAML0),y
|
||||||
|
sta $e19e00,x
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
inx
|
||||||
|
inx
|
||||||
|
cmp #16
|
||||||
|
bne setPaletteLoop
|
||||||
|
|
||||||
|
RESTORE_XY
|
||||||
|
rts
|
BIN
gscats.2mg
Normal file
BIN
gscats.2mg
Normal file
Binary file not shown.
72
gscats.s
Normal file
72
gscats.s
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
;
|
||||||
|
; gsshr
|
||||||
|
; GS sample application
|
||||||
|
;
|
||||||
|
; Created by Quinn Dunki on 7/9/17
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
.include "macros.s"
|
||||||
|
.include "equates.s"
|
||||||
|
|
||||||
|
|
||||||
|
.org $6000
|
||||||
|
|
||||||
|
main:
|
||||||
|
NATIVE
|
||||||
|
|
||||||
|
lda #$f0
|
||||||
|
sta TEXTCOLOR
|
||||||
|
|
||||||
|
jsr initSCBs
|
||||||
|
SHRVIDEO
|
||||||
|
|
||||||
|
lda #basePalette
|
||||||
|
sta PARAML0
|
||||||
|
lda #0
|
||||||
|
jsr setPalette
|
||||||
|
|
||||||
|
lda #$3333
|
||||||
|
jsr colorFill
|
||||||
|
|
||||||
|
jsr kbdWait
|
||||||
|
CLASSICVIDEO
|
||||||
|
|
||||||
|
EMULATION
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; kbdWait
|
||||||
|
; Waits for a keystroke
|
||||||
|
;
|
||||||
|
kbdWait:
|
||||||
|
EMULATION
|
||||||
|
|
||||||
|
kbdWaitLoop:
|
||||||
|
lda KBD
|
||||||
|
bpl kbdWaitLoop
|
||||||
|
sta KBDSTROBE
|
||||||
|
|
||||||
|
NATIVE
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
basePalette:
|
||||||
|
.word $0F00,$00F0,$000F,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
|
||||||
|
|
||||||
|
|
||||||
|
.include "graphics.s"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; Suppress some linker warnings - Must be the last thing in the file
|
||||||
|
; This is because Quinn doesn't really know how to use ca65 properly
|
||||||
|
.SEGMENT "ZPSAVE"
|
||||||
|
.SEGMENT "EXEHDR"
|
||||||
|
.SEGMENT "STARTUP"
|
||||||
|
.SEGMENT "INIT"
|
||||||
|
.SEGMENT "LOWCODE"
|
96
macros.s
Normal file
96
macros.s
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
.macro EMULATION
|
||||||
|
sec ; Enable 8-bit mode
|
||||||
|
xce
|
||||||
|
.i8
|
||||||
|
.a8
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
|
||||||
|
.macro NATIVE
|
||||||
|
clc ; Enable 16-bit mode
|
||||||
|
xce
|
||||||
|
rep #$30
|
||||||
|
.i16
|
||||||
|
.a16
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
.macro SHRVIDEO
|
||||||
|
sep #$30
|
||||||
|
.i8
|
||||||
|
.a8
|
||||||
|
lda NEWVIDEO
|
||||||
|
ora #%11000001
|
||||||
|
sta NEWVIDEO
|
||||||
|
rep #$30
|
||||||
|
.i16
|
||||||
|
.a16
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
.macro CLASSICVIDEO
|
||||||
|
sep #$30
|
||||||
|
.i8
|
||||||
|
.a8
|
||||||
|
lda NEWVIDEO
|
||||||
|
and #%00111111
|
||||||
|
sta NEWVIDEO
|
||||||
|
rep #$30
|
||||||
|
.i16
|
||||||
|
.a16
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;;;;;;;;;;
|
||||||
|
; Stack Macros
|
||||||
|
|
||||||
|
|
||||||
|
.macro SAVE_AXY ; Saves all registers
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
|
||||||
|
.macro RESTORE_AXY ; Restores all registers
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
|
||||||
|
.macro SAVE_AY ; Saves accumulator and Y index
|
||||||
|
pha
|
||||||
|
phy
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
|
||||||
|
.macro RESTORE_AY ; Restores accumulator and Y index
|
||||||
|
ply
|
||||||
|
pla
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
|
||||||
|
.macro SAVE_AX ; Saves accumulator and X index
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
|
||||||
|
.macro RESTORE_AX ; Restores accumulator and X index
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
|
||||||
|
.macro SAVE_XY ; Saves X and Y index
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
|
||||||
|
.macro RESTORE_XY ; Restores X and Y index
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
.endmacro
|
||||||
|
|
Loading…
Reference in New Issue
Block a user