Skip to content

Instantly share code, notes, and snippets.

@svnt
Last active June 29, 2018 09:27
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save svnt/c50064363036576e1f4c47d5e90f6fe0 to your computer and use it in GitHub Desktop.
Save svnt/c50064363036576e1f4c47d5e90f6fe0 to your computer and use it in GitHub Desktop.
C64 16x16 char matrix plot routine + sinus generator
;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