Last active
June 29, 2018 09:27
-
-
Save svnt/c50064363036576e1f4c47d5e90f6fe0 to your computer and use it in GitHub Desktop.
C64 16x16 char matrix plot routine + sinus generator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;create the 16x16 char matrix | |
MAKESRC | |
LDX #$00 | |
LDA #$00 | |
CLC | |
LOOP TAY | |
STA $0400+(40*5+12),X | |
ADC #1 | |
STA $0400+(40*6+12),X | |
ADC #1 | |
STA $0400+(40*7+12),X | |
ADC #1 | |
STA $0400+(40*8+12),X | |
ADC #1 | |
STA $0400+(40*9+12),X | |
ADC #1 | |
STA $0400+(40*10+12),X | |
ADC #1 | |
STA $0400+(40*11+12),X | |
ADC #1 | |
STA $0400+(40*12+12),X | |
ADC #1 | |
STA $0400+(40*13+12),X | |
ADC #1 | |
STA $0400+(40*14+12),X | |
ADC #1 | |
STA $0400+(40*15+12),X | |
ADC #1 | |
STA $0400+(40*16+12),X | |
ADC #1 | |
STA $0400+(40*17+12),X | |
ADC #1 | |
STA $0400+(40*18+12),X | |
ADC #1 | |
STA $0400+(40*19+12),X | |
ADC #1 | |
STA $0400+(40*20+12),X | |
TYA | |
ADC #16 | |
INX | |
CPX #$10 | |
BNE LOOP | |
RTS | |
; set a dot at x/y... to the char ram at $2000 | |
PLOT | |
;LDX #0 | |
;LDY #0 | |
LDA XTAB,X | |
STA 58 | |
LDA YTAB,X | |
STA 59 | |
LDA (58),Y | |
ORA BMP,X | |
STA (58),Y | |
RTS | |
XTAB .BYTE 0,0,0,0,0,0,0,0 | |
.BYTE $80,$80,$80,$80,$80,$80 | |
.BYTE $80,$80 | |
.BYTE 0,0,0,0,0,0,0,0 | |
.BYTE $80,$80,$80,$80,$80,$80 | |
.BYTE $80,$80 | |
.BYTE 0,0,0,0,0,0,0,0 | |
.BYTE $80,$80,$80,$80,$80,$80 | |
.BYTE $80,$80 | |
.BYTE 0,0,0,0,0,0,0,0 | |
.BYTE $80,$80,$80,$80,$80,$80 | |
.BYTE $80,$80 | |
.BYTE 0,0,0,0,0,0,0,0 | |
.BYTE $80,$80,$80,$80,$80,$80 | |
.BYTE $80,$80 | |
.BYTE 0,0,0,0,0,0,0,0 | |
.BYTE $80,$80,$80,$80,$80,$80 | |
.BYTE $80,$80 | |
.BYTE 0,0,0,0,0,0,0,0 | |
.BYTE $80,$80,$80,$80,$80,$80 | |
.BYTE $80,$80 | |
.BYTE 0,0,0,0,0,0,0,0 | |
.BYTE $80,$80,$80,$80,$80,$80 | |
.BYTE $80,$80 | |
BMP .BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
.BYTE $80,$40,$20,$10,$08,$04 | |
.BYTE $02,$01 | |
YTAB .BYTE $20,$20,$20,$20,$20,$20 | |
.BYTE $20,$20,$20,$20,$20,$20 | |
.BYTE $20,$20,$20,$20,$21,$21 | |
.BYTE $21,$21,$21,$21,$21,$21 | |
.BYTE $21,$21,$21,$21,$21,$21 | |
.BYTE $21,$21,$22,$22,$22,$22 | |
.BYTE $22,$22,$22,$22,$22,$22 | |
.BYTE $22,$22,$22,$22,$22,$22 | |
.BYTE $23,$23,$23,$23,$23,$23 | |
.BYTE $23,$23,$23,$23,$23,$23 | |
.BYTE $23,$23,$23,$23,$24,$24 | |
.BYTE $24,$24,$24,$24,$24,$24 | |
.BYTE $24,$24,$24,$24,$24,$24 | |
.BYTE $24,$24,$25,$25,$25,$25 | |
.BYTE $25,$25,$25,$25,$25,$25 | |
.BYTE $25,$25,$25,$25,$25,$25 | |
.BYTE $26,$26,$26,$26,$26,$26 | |
.BYTE $26,$26,$26,$26,$26,$26 | |
.BYTE $26,$26,$26,$26,$27,$27 | |
.BYTE $27,$27,$27,$27,$27,$27 | |
.BYTE $27,$27,$27,$27,$27,$27 | |
.BYTE $27,$27 | |
; generates a rough sinus wave at $3000 | |
SINGEN | |
LDY #$3F | |
LDX #$00 | |
STX $E0 | |
STX $E1 | |
STX $E2 | |
SGLOOP INC $0E | |
LDA $0E | |
ASL A | |
ASL A | |
ADC $E1 | |
STA $E1 | |
LDA $E2 | |
ADC #$00 | |
STA $E2 | |
ASL A | |
STA $3080,Y | |
STA $30C0,X | |
LSR A | |
EOR #$3F | |
ASL A | |
STA $3000,Y | |
STA $3040,X | |
INX | |
DEY | |
BPL SGLOOP | |
RTS | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment