FastLED6502 for Apple ][, Apple ][+. Apple //e, and Apple //gs. Initial commit; committer should probably be committed. Build with 'xa65' assembler.
This commit is contained in:
parent
95817e8a71
commit
05f28f6371
40
extras/AppleII.s65
Normal file
40
extras/AppleII.s65
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
KBD = $C000 ;Read keydown
|
||||||
|
KBDSTRB = $C010 ;Reset keybd
|
||||||
|
|
||||||
|
SPKR = $C030 ;Toggle speaker
|
||||||
|
|
||||||
|
; TTL digital output pins on
|
||||||
|
; 16-pin DIP game connector
|
||||||
|
SETAN0 = $C058
|
||||||
|
CLRAN0 = $C059
|
||||||
|
SETAN1 = $C05A
|
||||||
|
CLRAN1 = $C05B
|
||||||
|
SETAN2 = $C05C
|
||||||
|
CLRAN2 = $C05D
|
||||||
|
SETAN3 = $C05E
|
||||||
|
CLRAN3 = $C05F
|
||||||
|
|
||||||
|
PIN12ON = CLRAN3
|
||||||
|
PIN12OFF= SETAN3
|
||||||
|
PIN13ON = CLRAN2
|
||||||
|
PIN13OFF= SETAN2
|
||||||
|
PIN14ON = CLRAN1
|
||||||
|
PIN14OFF= SETAN1
|
||||||
|
PIN15ON = CLRAN0
|
||||||
|
PIN15OFF= SETAN0
|
||||||
|
|
||||||
|
;Special for pin 5, except on //gs
|
||||||
|
C040STROBE = $C040
|
||||||
|
PIN5STROBE = C040STROBE
|
||||||
|
|
||||||
|
SolidApple = $C062 ; read SW1 or SA
|
||||||
|
OpenApple = $C061 ; read SW0 or OA
|
||||||
|
|
||||||
|
VBL = $C019 ; vertical blanking
|
||||||
|
|
||||||
|
WAIT = $FCA8 ; wait a little while
|
||||||
|
|
||||||
|
CROUT = $FD8E ; print a CR
|
||||||
|
PRBYTE = $FDDA ; print a hex byte
|
||||||
|
|
||||||
|
|
633
extras/FastLED6502.s65
Normal file
633
extras/FastLED6502.s65
Normal file
@ -0,0 +1,633 @@
|
|||||||
|
/////////////////////////////////
|
||||||
|
//
|
||||||
|
// FastLED6502
|
||||||
|
// by Mark Kriegsman
|
||||||
|
//
|
||||||
|
// Device driver and animation
|
||||||
|
// library for connecting addressable
|
||||||
|
// LED strips to an Apple II.
|
||||||
|
// The full "FastLED" library is
|
||||||
|
// available for Arduino and related
|
||||||
|
// microcontrollers.
|
||||||
|
//
|
||||||
|
/////////////////////////////////
|
||||||
|
//
|
||||||
|
// HOST COMPATIBILITY:
|
||||||
|
// Apples with 16-pin DIP "game ports"
|
||||||
|
// are fully supported; Apples with only
|
||||||
|
// 9-pin "game ports" are NOT supported.
|
||||||
|
//
|
||||||
|
// Apple ][ fully supported
|
||||||
|
// Apple ][+ fully supported
|
||||||
|
// Apple //e fully supported
|
||||||
|
//
|
||||||
|
// Apple //c and //c+ NOT supported
|
||||||
|
// as they lack the required 16-pin
|
||||||
|
// DIP game port for digital I/O.
|
||||||
|
//
|
||||||
|
// Apple //gs:
|
||||||
|
// motherboard game port IS supported
|
||||||
|
// back panel connector NOT supported
|
||||||
|
// See Notes section below.
|
||||||
|
//
|
||||||
|
// C64, PET, VIC-20, Atari400/800,
|
||||||
|
// NES, SYM, KIM-1, and other 6502
|
||||||
|
// systems are NOT supported at this
|
||||||
|
// time, but porting should be
|
||||||
|
// relatively easy for someone familiar
|
||||||
|
// with each target platform.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// LED STRIP COMPATIBILITY:
|
||||||
|
// In general, "four-wire" (clocked)
|
||||||
|
// LED strips can be supported, but
|
||||||
|
// "three-wire" (clockless) LED strips
|
||||||
|
// cannot be supported.
|
||||||
|
//
|
||||||
|
// APA102 tested & working
|
||||||
|
// Adafruit DotStar tested & working
|
||||||
|
// LPD8806 should work (untested)
|
||||||
|
// WS2801 should work (untested)
|
||||||
|
//
|
||||||
|
// WS2811/WS2812/NeoPixel can NOT work
|
||||||
|
// due to timing incompatibilities,
|
||||||
|
// namely that the 1MHz Apple is far
|
||||||
|
// too slow to drive them correctly.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// USAGE - HARDWARE:
|
||||||
|
// Connect an external power source to
|
||||||
|
// +5 and GND on the LED strip.
|
||||||
|
// Connect GND on the LED strip to GND
|
||||||
|
// on the game port connector (pin 8)
|
||||||
|
// Connect DATA IN on the LED strip to
|
||||||
|
// pin 12, 13, or 14 on the game port.
|
||||||
|
// Connect CLOCK IN on the LED strip to
|
||||||
|
// pin 5 (preferred), 12, 13, or 14 on
|
||||||
|
// the game port. Note: Apple //gs users
|
||||||
|
// cannot use pin 5.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// USAGE - SOFTWARE:
|
||||||
|
// At build time provide definitions for
|
||||||
|
// CHIPSET, DATA_PIN, CLOCK_PIN,
|
||||||
|
// NUM_LEDS, & BRIGHTNESS.
|
||||||
|
// Inside "Setup":
|
||||||
|
// Store LED count into
|
||||||
|
// FastLED_NumPixels,
|
||||||
|
// Store brightness into
|
||||||
|
// FastLED_Brightness
|
||||||
|
// Inside "Loop":
|
||||||
|
// Update the leds array, found in
|
||||||
|
// ledsR, ledsG, and ledsB
|
||||||
|
// Call FastLED_Show
|
||||||
|
// Jump back to top of "Loop"
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// REFERENCE:
|
||||||
|
// FastLED_Show:
|
||||||
|
// display led array on LED strip
|
||||||
|
// FastLED_FillBlack:
|
||||||
|
// fill led array to black
|
||||||
|
// FastLED_FillSolid_RGB_AXY:
|
||||||
|
// fill led array with RGB color
|
||||||
|
// FastLED_FillSolid_Hue_X:
|
||||||
|
// fill led array with solid HSV Hue
|
||||||
|
// FastLED_Random8:
|
||||||
|
// return a pseudorandom number in A
|
||||||
|
// FastLED_FillRainbow_XY:
|
||||||
|
// fill led array with HSV rainbow
|
||||||
|
// starting at hue X, incrementing by
|
||||||
|
// huedelta Y each pixel.
|
||||||
|
// FastLED_SetHue_XY:
|
||||||
|
// set pixel Y to HSV hue X
|
||||||
|
// FastLED_Beat8:
|
||||||
|
// takes a speed increment in A, and
|
||||||
|
// returns a triangle wave in A.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// NOTES:
|
||||||
|
// For speed and size, there IS some
|
||||||
|
// self-modifying code in this
|
||||||
|
// library, so it cannot be burned
|
||||||
|
// into ROM without modification.
|
||||||
|
// Brightness control only works on
|
||||||
|
// APA102 at this point.
|
||||||
|
// Pin 15 is currently used as a
|
||||||
|
// 'frame start' signal for protocol
|
||||||
|
// diagnostics - makes frames more
|
||||||
|
// visible with an oscilloscope.
|
||||||
|
// If Pin 5 is specified for the CLOCK
|
||||||
|
// output pin, FastLED6502 will
|
||||||
|
// automatically use the high speed
|
||||||
|
// C040STROBE signal for clock. Note
|
||||||
|
// that the Apple //gs lacks this
|
||||||
|
// signal, even on the motherboard
|
||||||
|
// game port.
|
||||||
|
// The Apple joystick/mouse port on the
|
||||||
|
// rear of the //c, //c+, and //gs
|
||||||
|
// can NOT be used for LED connections
|
||||||
|
// because it lacks the necessary
|
||||||
|
// digital output pins.
|
||||||
|
// This library can drive 100 LED pixels
|
||||||
|
// at more than 30 frames per second.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// VERSION HISTORY
|
||||||
|
// 2015-02-07 - first version, by MEK
|
||||||
|
// assembled with xa65
|
||||||
|
// www.floodgap.com/retrotech/xa/
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
//
|
||||||
|
// ENTRY POINT
|
||||||
|
//
|
||||||
|
|
||||||
|
FastLED_Entry
|
||||||
|
jsr FastLED_FillBlack
|
||||||
|
jmp Setup
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
//
|
||||||
|
// FASTLED6502 GLOBALS
|
||||||
|
//
|
||||||
|
|
||||||
|
FastLED_NumPixels .byt NUM_LEDS
|
||||||
|
FastLED_Brightness .byt BRIGHTNESS
|
||||||
|
|
||||||
|
FastLED_RandomState .byt 17
|
||||||
|
FastLED_BeatState .byt 0
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
//
|
||||||
|
// API FUNCTIONS
|
||||||
|
//
|
||||||
|
|
||||||
|
FastLED_FillBlack
|
||||||
|
lda FastLED_NumPixels
|
||||||
|
pha
|
||||||
|
lda #255
|
||||||
|
sta FastLED_NumPixels
|
||||||
|
lda #0
|
||||||
|
tax
|
||||||
|
tay
|
||||||
|
jsr FastLED_FillSolid_RGB_AXY
|
||||||
|
jsr FastLED_Show
|
||||||
|
pla
|
||||||
|
sta FastLED_NumPixels
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
FastLED_FillRainbow_XY
|
||||||
|
sty rbHueDelta
|
||||||
|
ldy #0
|
||||||
|
FR1
|
||||||
|
lda FastLED_RainbowR,x
|
||||||
|
sta ledsR,y
|
||||||
|
lda FastLED_RainbowG,x
|
||||||
|
sta ledsG,y
|
||||||
|
lda FastLED_RainbowB,x
|
||||||
|
sta ledsB,y
|
||||||
|
|
||||||
|
txa
|
||||||
|
clc
|
||||||
|
adc rbHueDelta
|
||||||
|
tax
|
||||||
|
|
||||||
|
iny
|
||||||
|
cpy FastLED_NumPixels
|
||||||
|
bne FR1
|
||||||
|
rts
|
||||||
|
|
||||||
|
rbHueDelta .byt 0
|
||||||
|
|
||||||
|
|
||||||
|
FastLED_SetHue_XY
|
||||||
|
lda FastLED_RainbowR,x
|
||||||
|
sta ledsR,y
|
||||||
|
lda FastLED_RainbowG,x
|
||||||
|
sta ledsG,y
|
||||||
|
lda FastLED_RainbowB,x
|
||||||
|
sta ledsB,y
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
FastLED_FillSolid_RGB_AXY
|
||||||
|
sta ledsR
|
||||||
|
stx ledsG
|
||||||
|
sty ledsB
|
||||||
|
ldy #0
|
||||||
|
FillSolidRGBAXY1
|
||||||
|
lda ledsR
|
||||||
|
sta ledsR,y
|
||||||
|
lda ledsG
|
||||||
|
sta ledsG,y
|
||||||
|
lda ledsB
|
||||||
|
sta ledsB,y
|
||||||
|
iny
|
||||||
|
cpy FastLED_NumPixels
|
||||||
|
bne FillSolidRGBAXY1
|
||||||
|
rts
|
||||||
|
|
||||||
|
FastLED_FillSolid_Hue_X
|
||||||
|
ldy #0
|
||||||
|
FillSolidHX1
|
||||||
|
lda FastLED_RainbowR,x
|
||||||
|
sta ledsR,y
|
||||||
|
lda FastLED_RainbowG,x
|
||||||
|
sta ledsG,y
|
||||||
|
lda FastLED_RainbowB,x
|
||||||
|
sta ledsB,y
|
||||||
|
iny
|
||||||
|
cpy FastLED_NumPixels
|
||||||
|
bne FillSolidHX1
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
; NOTE: USES SELF-MODIFYING CODE
|
||||||
|
FastLED_Random8
|
||||||
|
inc Random8GetLo
|
||||||
|
bne Random8Get
|
||||||
|
inc Random8GetHi
|
||||||
|
bne Random8Get
|
||||||
|
lda #$F8
|
||||||
|
sta Random8GetHi
|
||||||
|
lda #03
|
||||||
|
sta Random8GetLo
|
||||||
|
Random8Get
|
||||||
|
Random8GetLo = Random8Get + 1
|
||||||
|
Random8GetHi = Random8Get + 2
|
||||||
|
lda $F803
|
||||||
|
adc FastLED_RandomState
|
||||||
|
sta FastLED_RandomState
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
FastLED_Beat8
|
||||||
|
clc
|
||||||
|
adc FastLED_BeatState
|
||||||
|
sta FastLED_BeatState
|
||||||
|
bit FastLED_BeatState
|
||||||
|
bmi FastLED_Beat8Neg
|
||||||
|
asl
|
||||||
|
rts
|
||||||
|
FastLED_Beat8Neg
|
||||||
|
lda #$ff
|
||||||
|
sec
|
||||||
|
sbc FastLED_BeatState
|
||||||
|
sbc FastLED_BeatState
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
FastLED_Show
|
||||||
|
jmp CHIPSET
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
//
|
||||||
|
// HARDWARE INTERFACING
|
||||||
|
//
|
||||||
|
|
||||||
|
PINOFF_BASE = PIN15OFF
|
||||||
|
PINON_BASE = PIN15ON
|
||||||
|
|
||||||
|
#define PINON(P) PINON_BASE+((15-P)*2)
|
||||||
|
#define PINOFF(P) PINOFF_BASE+((15-P)*2)
|
||||||
|
|
||||||
|
DATAOFF = PINOFF(DATA_PIN)
|
||||||
|
DATAON = PINON(DATA_PIN)
|
||||||
|
CLKOFF = PINOFF(CLOCK_PIN)
|
||||||
|
CLKON = PINON(CLOCK_PIN)
|
||||||
|
|
||||||
|
// Special handling if CLOCK_PIN
|
||||||
|
// is 5: the C040STROBE line.
|
||||||
|
#if CLOCK_PIN = 5
|
||||||
|
#define CLOCK_ON bit PIN5STROBE
|
||||||
|
#define CLOCK_OFF
|
||||||
|
#else
|
||||||
|
#define CLOCK_ON bit CLKON
|
||||||
|
#define CLOCK_OFF bit CLKOFF
|
||||||
|
#endif
|
||||||
|
|
||||||
|
FRAMEON = PINON(15)
|
||||||
|
FRAMEOFF = PINOFF(15)
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
APA102
|
||||||
|
bit FRAMEON
|
||||||
|
jsr FastLED_Send00
|
||||||
|
jsr FastLED_Send00
|
||||||
|
jsr FastLED_Send00
|
||||||
|
jsr FastLED_Send00
|
||||||
|
|
||||||
|
lda FastLED_Brightness
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
ora #$E0
|
||||||
|
tax
|
||||||
|
|
||||||
|
ldy FastLED_NumPixels
|
||||||
|
APA102PX
|
||||||
|
txa
|
||||||
|
jsr FastLED_SendA
|
||||||
|
lda ledsB,y
|
||||||
|
jsr FastLED_SendA
|
||||||
|
lda ledsG,y
|
||||||
|
jsr FastLED_SendA
|
||||||
|
lda ledsR,y
|
||||||
|
jsr FastLED_SendA
|
||||||
|
dey
|
||||||
|
bne APA102PX
|
||||||
|
|
||||||
|
lda FastLED_NumPixels
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
iny
|
||||||
|
APA102CL
|
||||||
|
jsr FastLED_SendFF
|
||||||
|
jsr FastLED_Send00
|
||||||
|
jsr FastLED_Send00
|
||||||
|
jsr FastLED_Send00
|
||||||
|
dey
|
||||||
|
bne APA102CL
|
||||||
|
bit FRAMEOFF
|
||||||
|
rts
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
LPD8806
|
||||||
|
bit FRAMEON
|
||||||
|
ldy FastLED_NumPixels
|
||||||
|
LPD8806PX
|
||||||
|
lda ledsG,y
|
||||||
|
lsr
|
||||||
|
ora #$80
|
||||||
|
jsr FastLED_SendA
|
||||||
|
lda ledsR,y
|
||||||
|
lsr
|
||||||
|
ora #$80
|
||||||
|
jsr FastLED_SendA
|
||||||
|
lda ledsB,y
|
||||||
|
lsr
|
||||||
|
ora #$80
|
||||||
|
jsr FastLED_SendA
|
||||||
|
dey
|
||||||
|
bne LPD8806PX
|
||||||
|
|
||||||
|
bit FRAMEOFF
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
WS2801
|
||||||
|
bit FRAMEON
|
||||||
|
ldy FastLED_NumPixels
|
||||||
|
WS2801PX
|
||||||
|
lda ledsG,y
|
||||||
|
jsr FastLED_SendA
|
||||||
|
lda ledsR,y
|
||||||
|
jsr FastLED_SendA
|
||||||
|
lda ledsB,y
|
||||||
|
jsr FastLED_SendA
|
||||||
|
dey
|
||||||
|
bne WS2801PX
|
||||||
|
|
||||||
|
bit FRAMEOFF
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
FastLED_SendFF
|
||||||
|
bit DATAON
|
||||||
|
jmp FastLED_SendXX
|
||||||
|
;
|
||||||
|
FastLED_Send00
|
||||||
|
bit DATAOFF
|
||||||
|
;
|
||||||
|
FastLED_SendXX
|
||||||
|
CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
|
||||||
|
CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
|
||||||
|
CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
|
||||||
|
CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
FastLED_SendA
|
||||||
|
cmp #0
|
||||||
|
beq FastLED_Send00
|
||||||
|
cmp #$FF
|
||||||
|
beq FastLED_SendFF
|
||||||
|
|
||||||
|
asl
|
||||||
|
bcc S0x0
|
||||||
|
S0x1 bit DATAON
|
||||||
|
bcs S0xK
|
||||||
|
S0x0 bit DATAOFF
|
||||||
|
S0xK CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
|
||||||
|
asl
|
||||||
|
bcc S1x0
|
||||||
|
S1x1 bit DATAON
|
||||||
|
bcs S1xK
|
||||||
|
S1x0 bit DATAOFF
|
||||||
|
S1xK CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
|
||||||
|
asl
|
||||||
|
bcc S2x0
|
||||||
|
S2x1 bit DATAON
|
||||||
|
bcs S2xK
|
||||||
|
S2x0 bit DATAOFF
|
||||||
|
S2xK CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
|
||||||
|
asl
|
||||||
|
bcc S3x0
|
||||||
|
S3x1 bit DATAON
|
||||||
|
bcs S3xK
|
||||||
|
S3x0 bit DATAOFF
|
||||||
|
S3xK CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
|
||||||
|
asl
|
||||||
|
bcc S4x0
|
||||||
|
S4x1 bit DATAON
|
||||||
|
bcs S4xK
|
||||||
|
S4x0 bit DATAOFF
|
||||||
|
S4xK CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
|
||||||
|
asl
|
||||||
|
bcc S5x0
|
||||||
|
S5x1 bit DATAON
|
||||||
|
bcs S5xK
|
||||||
|
S5x0 bit DATAOFF
|
||||||
|
S5xK CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
|
||||||
|
asl
|
||||||
|
bcc S6x0
|
||||||
|
S6x1 bit DATAON
|
||||||
|
bcs S6xK
|
||||||
|
S6x0 bit DATAOFF
|
||||||
|
S6xK CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
|
||||||
|
asl
|
||||||
|
bcc S7x0
|
||||||
|
S7x1 bit DATAON
|
||||||
|
bcs S7xK
|
||||||
|
S7x0 bit DATAOFF
|
||||||
|
S7xK CLOCK_ON
|
||||||
|
CLOCK_OFF
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
//
|
||||||
|
// Force page allignment for speed
|
||||||
|
// for leds array and Rainbow table
|
||||||
|
//
|
||||||
|
.dsb 256-(* & $FF),0
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
//
|
||||||
|
// LED ARRAY
|
||||||
|
//
|
||||||
|
|
||||||
|
ledsR .dsb 256,0
|
||||||
|
ledsG .dsb 256,0
|
||||||
|
ledsB .dsb 256,0
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
//
|
||||||
|
// HSV RAINBOW DEFINITION
|
||||||
|
//
|
||||||
|
// Generated directly from FastLED.
|
||||||
|
//
|
||||||
|
|
||||||
|
FastLED_RainbowR
|
||||||
|
.byt $FF,$FD,$FA,$F8,$F5,$F2,$F0,$ED
|
||||||
|
.byt $EA,$E8,$E5,$E2,$E0,$DD,$DA,$D8
|
||||||
|
.byt $D5,$D2,$D0,$CD,$CA,$C8,$C5,$C2
|
||||||
|
.byt $C0,$BD,$BA,$B8,$B5,$B2,$B0,$AD
|
||||||
|
.byt $AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB
|
||||||
|
.byt $AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB
|
||||||
|
.byt $AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB
|
||||||
|
.byt $AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB
|
||||||
|
.byt $AB,$A6,$A1,$9C,$96,$91,$8C,$86
|
||||||
|
.byt $81,$7C,$76,$71,$6C,$66,$61,$5C
|
||||||
|
.byt $56,$51,$4C,$47,$41,$3C,$37,$31
|
||||||
|
.byt $2C,$27,$21,$1C,$17,$11,$0C,$07
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$02,$05,$07,$0A,$0D,$0F,$12
|
||||||
|
.byt $15,$17,$1A,$1D,$1F,$22,$25,$27
|
||||||
|
.byt $2A,$2D,$2F,$32,$35,$37,$3A,$3D
|
||||||
|
.byt $3F,$42,$45,$47,$4A,$4D,$4F,$52
|
||||||
|
.byt $55,$57,$5A,$5C,$5F,$62,$64,$67
|
||||||
|
.byt $6A,$6C,$6F,$72,$74,$77,$7A,$7C
|
||||||
|
.byt $7F,$82,$84,$87,$8A,$8C,$8F,$92
|
||||||
|
.byt $94,$97,$9A,$9C,$9F,$A2,$A4,$A7
|
||||||
|
.byt $AB,$AD,$B0,$B2,$B5,$B8,$BA,$BD
|
||||||
|
.byt $C0,$C2,$C5,$C8,$CA,$CD,$D0,$D2
|
||||||
|
.byt $D5,$D8,$DA,$DD,$E0,$E2,$E5,$E8
|
||||||
|
.byt $EA,$ED,$F0,$F2,$F5,$F8,$FA,$FD
|
||||||
|
FastLED_RainbowG
|
||||||
|
.byt $00,$02,$05,$07,$0A,$0D,$0F,$12
|
||||||
|
.byt $15,$17,$1A,$1D,$1F,$22,$25,$27
|
||||||
|
.byt $2A,$2D,$2F,$32,$35,$37,$3A,$3D
|
||||||
|
.byt $3F,$42,$45,$47,$4A,$4D,$4F,$52
|
||||||
|
.byt $55,$57,$5A,$5C,$5F,$62,$64,$67
|
||||||
|
.byt $6A,$6C,$6F,$72,$74,$77,$7A,$7C
|
||||||
|
.byt $7F,$82,$84,$87,$8A,$8C,$8F,$92
|
||||||
|
.byt $94,$97,$9A,$9C,$9F,$A2,$A4,$A7
|
||||||
|
.byt $AB,$AD,$B0,$B2,$B5,$B8,$BA,$BD
|
||||||
|
.byt $C0,$C2,$C5,$C8,$CA,$CD,$D0,$D2
|
||||||
|
.byt $D5,$D8,$DA,$DD,$E0,$E2,$E5,$E8
|
||||||
|
.byt $EA,$ED,$F0,$F2,$F5,$F8,$FA,$FD
|
||||||
|
.byt $FF,$FD,$FA,$F8,$F5,$F2,$F0,$ED
|
||||||
|
.byt $EA,$E8,$E5,$E2,$E0,$DD,$DA,$D8
|
||||||
|
.byt $D5,$D2,$D0,$CD,$CA,$C8,$C5,$C2
|
||||||
|
.byt $C0,$BD,$BA,$B8,$B5,$B2,$B0,$AD
|
||||||
|
.byt $AB,$A6,$A1,$9C,$96,$91,$8C,$86
|
||||||
|
.byt $81,$7C,$76,$71,$6C,$66,$61,$5C
|
||||||
|
.byt $56,$51,$4C,$47,$41,$3C,$37,$31
|
||||||
|
.byt $2C,$27,$21,$1C,$17,$11,$0C,$07
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
FastLED_RainbowB
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
.byt $00,$02,$05,$07,$0A,$0D,$0F,$12
|
||||||
|
.byt $15,$17,$1A,$1D,$1F,$22,$25,$27
|
||||||
|
.byt $2A,$2D,$2F,$32,$35,$37,$3A,$3D
|
||||||
|
.byt $3F,$42,$45,$47,$4A,$4D,$4F,$52
|
||||||
|
.byt $55,$5A,$5F,$64,$6A,$6F,$74,$7A
|
||||||
|
.byt $7F,$84,$8A,$8F,$94,$9A,$9F,$A4
|
||||||
|
.byt $AA,$AF,$B4,$B9,$BF,$C4,$C9,$CF
|
||||||
|
.byt $D4,$D9,$DF,$E4,$E9,$EF,$F4,$F9
|
||||||
|
.byt $FF,$FD,$FA,$F8,$F5,$F2,$F0,$ED
|
||||||
|
.byt $EA,$E8,$E5,$E2,$E0,$DD,$DA,$D8
|
||||||
|
.byt $D5,$D2,$D0,$CD,$CA,$C8,$C5,$C2
|
||||||
|
.byt $C0,$BD,$BA,$B8,$B5,$B2,$B0,$AD
|
||||||
|
.byt $AB,$A9,$A6,$A4,$A1,$9E,$9C,$99
|
||||||
|
.byt $96,$94,$91,$8E,$8C,$89,$86,$84
|
||||||
|
.byt $81,$7E,$7C,$79,$76,$74,$71,$6E
|
||||||
|
.byt $6C,$69,$66,$64,$61,$5E,$5C,$59
|
||||||
|
.byt $55,$53,$50,$4E,$4B,$48,$46,$43
|
||||||
|
.byt $40,$3E,$3B,$38,$36,$33,$30,$2E
|
||||||
|
.byt $2B,$28,$26,$23,$20,$1E,$1B,$18
|
||||||
|
.byt $16,$13,$10,$0E,$0B,$08,$06,$03
|
BIN
extras/RainbowDemo.bin.zip
Normal file
BIN
extras/RainbowDemo.bin.zip
Normal file
Binary file not shown.
89
extras/RainbowDemo.s65
Normal file
89
extras/RainbowDemo.s65
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
; "Rainbow with glitter" demo
|
||||||
|
; for "FastLED6502"
|
||||||
|
;
|
||||||
|
; Runs on an Apple ][, ][+, //e, or //gs
|
||||||
|
;
|
||||||
|
; Supports APA102, Adafruit DotStar,
|
||||||
|
; LPD8806, and WS2801 LED strips.
|
||||||
|
;
|
||||||
|
; LED strip connects to game port pins,
|
||||||
|
; see FastLED6502.s65 for details.
|
||||||
|
;
|
||||||
|
; Mark Kriegsman, February 2015
|
||||||
|
|
||||||
|
#define NUM_LEDS 100
|
||||||
|
#define BRIGHTNESS 64
|
||||||
|
#define CHIPSET APA102
|
||||||
|
#define DATA_PIN 14
|
||||||
|
#define CLOCK_PIN 5
|
||||||
|
|
||||||
|
* = $6000
|
||||||
|
|
||||||
|
#include "FastLED6502.s65"
|
||||||
|
#include "AppleII.s65"
|
||||||
|
|
||||||
|
gHue .byt 0
|
||||||
|
gHueDelta .byt 17
|
||||||
|
gHueSpeed .byt 7
|
||||||
|
|
||||||
|
|
||||||
|
Setup
|
||||||
|
lda #0
|
||||||
|
sta gHue
|
||||||
|
|
||||||
|
Loop
|
||||||
|
lda gHue
|
||||||
|
clc
|
||||||
|
adc gHueSpeed
|
||||||
|
sta gHue
|
||||||
|
ldx gHue
|
||||||
|
ldy gHueDelta
|
||||||
|
; Fill RGB array with HSV rainbow
|
||||||
|
jsr FastLED_FillRainbow_XY
|
||||||
|
; Use master brightness control
|
||||||
|
lda #BRIGHTNESS
|
||||||
|
sta FastLED_Brightness
|
||||||
|
CheckOpenApple
|
||||||
|
bit OpenApple
|
||||||
|
bpl CheckSolidApple
|
||||||
|
; Add glitter if requested
|
||||||
|
jsr AddGlitter
|
||||||
|
CheckSolidApple
|
||||||
|
bit SolidApple
|
||||||
|
bpl DoDisplay
|
||||||
|
; Pulse brightness if requested
|
||||||
|
jsr PulseBrightness
|
||||||
|
DoDisplay
|
||||||
|
; This is where the magic happens
|
||||||
|
jsr FastLED_Show
|
||||||
|
jmp Loop
|
||||||
|
|
||||||
|
|
||||||
|
AddGlitter
|
||||||
|
ldy #3
|
||||||
|
MaybeAdd1Glitter
|
||||||
|
jsr FastLED_Random8
|
||||||
|
cmp FastLED_NumPixels
|
||||||
|
bcs SkipThis1Glitter
|
||||||
|
tax
|
||||||
|
lda #$FF
|
||||||
|
sta ledsR,x
|
||||||
|
sta ledsG,x
|
||||||
|
sta ledsB,x
|
||||||
|
SkipThis1Glitter
|
||||||
|
dey
|
||||||
|
bne MaybeAdd1Glitter
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
PulseBrightness
|
||||||
|
lda #13
|
||||||
|
jsr FastLED_Beat8
|
||||||
|
clc
|
||||||
|
adc #12
|
||||||
|
bcc PulseBright1
|
||||||
|
lda #$FF
|
||||||
|
PulseBright1
|
||||||
|
sta FastLED_Brightness
|
||||||
|
rts
|
||||||
|
|
Loading…
Reference in New Issue
Block a user