[stella] Visualisations for Paul

Subject: [stella] Visualisations for Paul
From: Christopher Tumber <christophertumber@xxxxxxxxxx>
Date: Sun, 21 Dec 2003 00:08:27 -0500
Crap! Forgot about this... It's a little visualisation for Paul.

It's pretty simple, but potentially powerful. It draws a checkboard pattern. Each square can be individually coloured with any TIA colour (up to 64 different colours on screen at once from the full 128 colour palette).

Included are a whole whack of subroutines which modify the display (change colours, colour cycle, scroll, mirror image, etc). It's intended to be very modular and you should be able to easily adapt it for your purposes.

Currently all it does is cycle through some of these routines in a very simple demo mode. You could key these routines to particular frequencies/beats. Or you could just run through pre-programmed sequences in time to your tempo. Or you could just do a simple graphic equaliser type display.

The list of routines is as follows:

ShiftLeft       Shifts all squares to the left (Right most squares unaffected)
ShiftRight      Shifts all squares to the right (left most squares unaffected)
ShiftUp         Shifts all squares up (bottom row unaffected)
ShiftDown       Shifts all squares down (top row unaffected)
ScrollLeft      Scrolls squares to the left (squares wrap around edges)
ScrollRight     Scrolls squares to the right (squares wrap around edges)
ScrollUp        Scrolls squares up (squares wrap around edges)
ScrollDown      Scrolls squares down (squares wrap around edges)
ClearColumn     Clears column (0-7) specified by X register
ClearRow        Clears row (0-7) specified by X register
ClearAll        Clears all squares to black
IncSquare       Increments colour of square (0-63) specified by X register
DecSquare       Decrements colour of square (0-63) specified by X register
IncColumn       Increments colour of column (0-7) specified by X register
DecColumn       Decrements colour of column (0-7) specified by X register
IncRow          Increments colour of row (0-7) specified by X register
DecRow          Decrements colour of row (0-7) specified by X register
IncAll          Increments colour of all squares
DecAll          Decrements colour of all squares
ColourColumn    Puts colour (0-255) in A register into column (0-7) specified by X register
ColourRow       Puts colour (0-255) in A register into row (0-7) specified by X register
ColourSquare    Puts colour (0-255) in A register into square (0-63) specified by X register
ColourAll       Puts colour (0-255) in A register into all squares
MirrorLeft      Right side becomes mirror image of left side
MirrorRight     Left side becomes mirror image of right side
MirrorTop       Bottom half becomes mirror image of top half
MirrorBottom    Top half becomes mirror image of bottom half
MirrorQuad      Upper left 1/4 of screen source of mirror left/right and up/down
FillQuarter     Puts colour (0-255) into 1/4 of screen (0-3) specified by X register
FillEighth      Puts colour (0-255) into 1/8 of screen (0-7) specified by X register
PatternQuad     Upper left 1/4 of screen repeated in other 4 quadrants
PatternEighth   Upper left 1/8 of screen repeated in other 8 quadrants
RotateClockwise Rotate clockwise
RotateCounter   Rotate counter clockwise
ChangeTempo     X register is number of frames between subroutine calls
DoNothing       Does nothing



Chris...
	processor 6502
	include vcs.h

dummy EQU $3c


 SEG.U   variables
 org $80

delay .byte
temp1 .byte
temp2 .byte
temp3 .byte
temp4 .byte
temp5 .byte
temp6 .byte
temp7 .byte
temp8 .byte
position .byte
tempo   .byte
pointer .word

Colour1 .byte
Colour2 .byte
Colour3 .byte
Colour4 .byte
Colour5 .byte
Colour6 .byte
Colour7 .byte
Colour8 .byte
Colour9 .byte
Colour10 .byte
Colour11 .byte
Colour12 .byte
Colour13 .byte
Colour14 .byte
Colour15 .byte
Colour16 .byte
Colour17 .byte
Colour18 .byte
Colour19 .byte
Colour20 .byte
Colour21 .byte
Colour22 .byte
Colour23 .byte
Colour24 .byte
Colour25 .byte
Colour26 .byte
Colour27 .byte
Colour28 .byte
Colour29 .byte
Colour30 .byte
Colour31 .byte
Colour32 .byte
Colour33 .byte
Colour34 .byte
Colour35 .byte
Colour36 .byte
Colour37 .byte
Colour38 .byte
Colour39 .byte
Colour40 .byte
Colour41 .byte
Colour42 .byte
Colour43 .byte
Colour44 .byte
Colour45 .byte
Colour46 .byte
Colour47 .byte
Colour48 .byte
Colour49 .byte
Colour50 .byte
Colour51 .byte
Colour52 .byte
Colour53 .byte
Colour54 .byte
Colour55 .byte
Colour56 .byte
Colour57 .byte
Colour58 .byte
Colour59 .byte
Colour60 .byte
Colour61 .byte
Colour62 .byte
Colour63 .byte
Colour64 .byte

      MAC LINE1
      ldy #24
      sta WSYNC
      sta dummy
next1:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda Colour1
      sta.w COLUBK
      lda Colour2
      sta COLUBK
      lda Colour3
      sta COLUBK
      lda Colour4
      sta COLUBK
      lda Colour5
      sta COLUBK
      lda Colour6
      sta COLUBK
      lda Colour7
      sta COLUBK
      lda Colour8
      sta COLUBK
      lda #0
      sta.w COLUBK
      dey
      bne next1
      ENDM

      MAC LINE2
      ldy #24
      sta dummy
next2:
      nop
      nop
      nop
      nop
      nop
      nop
      lda Colour9
      sta.w COLUBK
      lda Colour10
      sta COLUBK
      lda Colour11
      sta COLUBK
      lda Colour12
      sta COLUBK
      lda Colour13
      sta COLUBK
      lda Colour14
      sta COLUBK
      lda Colour15
      sta COLUBK
      lda Colour16
      sta COLUBK
      lda #0
      sta.w COLUBK
      nop
      nop
      dey
      bne next2
      nop
      nop
      nop
      nop
      nop
      sta dummy
      lda Colour9
      sta.w COLUBK
      lda Colour10
      sta COLUBK
      lda Colour11
      sta COLUBK
      lda Colour12
      sta COLUBK
      lda Colour13
      sta COLUBK
      lda Colour14
      sta COLUBK
      lda Colour15
      sta COLUBK
      lda Colour16
      sta COLUBK
      lda #0
      sta.w COLUBK
      ENDM

      MAC LINE3
      ldy #24
      nop
      nop
      sta dummy
next3:
      nop
      nop
      nop
      nop
      nop
      nop
      lda Colour17
      sta.w COLUBK
      lda Colour18
      sta COLUBK
      lda Colour19
      sta COLUBK
      lda Colour20
      sta COLUBK
      lda Colour21
      sta COLUBK
      lda Colour22
      sta COLUBK
      lda Colour23
      sta COLUBK
      lda Colour24
      sta COLUBK
      lda #0
      sta.w COLUBK
      nop
      nop
      dey
      bne next3
      nop
      nop
      nop
      nop
      nop
;      nop
      sta dummy
      lda Colour17
      sta.w COLUBK
      lda Colour18
      sta COLUBK
      lda Colour19
      sta COLUBK
      lda Colour20
      sta COLUBK
      lda Colour21
      sta COLUBK
      lda Colour22
      sta COLUBK
      lda Colour23
      sta COLUBK
      lda Colour24
      sta COLUBK
      lda #0
      sta.w COLUBK
      ENDM

      MAC LINE4
      ldy #24
      sta dummy
next4
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda Colour25
      sta.w COLUBK
      lda Colour26
      sta COLUBK
      lda Colour27
      sta COLUBK
      lda Colour28
      sta COLUBK
      lda Colour29
      sta COLUBK
      lda Colour30
      sta COLUBK
      lda Colour31
      sta COLUBK
      lda Colour32
      sta COLUBK
      lda #0
      sta.w COLUBK
      dey
      bne next4
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda Colour25
      sta COLUBK
      lda Colour26
      sta COLUBK
      lda Colour27
      sta COLUBK
      lda Colour28
      sta COLUBK
      lda Colour29
      sta COLUBK
      lda Colour30
      sta COLUBK
      lda Colour31
      sta COLUBK
      lda Colour32
      sta COLUBK
      lda #0
      sta.w COLUBK
      ENDM

      MAC LINE5
      ldy #24
      sta dummy
next5
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda Colour33
      sta.w COLUBK
      lda Colour34
      sta COLUBK
      lda Colour35
      sta COLUBK
      lda Colour36
      sta COLUBK
      lda Colour37
      sta COLUBK
      lda Colour38
      sta COLUBK
      lda Colour39
      sta COLUBK
      lda Colour40
      sta COLUBK
      lda #0
      sta.w COLUBK
      dey
      bne next5
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda Colour33
      sta COLUBK
      lda Colour34
      sta COLUBK
      lda Colour35
      sta COLUBK
      lda Colour36
      sta COLUBK
      lda Colour37
      sta COLUBK
      lda Colour38
      sta COLUBK
      lda Colour39
      sta COLUBK
      lda Colour40
      sta COLUBK
      lda #0
      sta.w COLUBK
      ENDM

      MAC LINE6
      ldy #24
      nop
      nop
next6
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda Colour41
      sta COLUBK
      lda Colour42
      sta COLUBK
      lda Colour43
      sta COLUBK
      lda Colour44
      sta COLUBK
      lda Colour45
      sta COLUBK
      lda Colour46
      sta COLUBK
      lda Colour47
      sta COLUBK
      lda Colour48
      sta COLUBK
      lda #0
      sta.w COLUBK
      dey
      bne next6
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda Colour41
      sta COLUBK
      lda Colour42
      sta COLUBK
      lda Colour43
      sta COLUBK
      lda Colour44
      sta COLUBK
      lda Colour45
      sta COLUBK
      lda Colour46
      sta COLUBK
      lda Colour47
      sta COLUBK
      lda Colour48
      sta COLUBK
      lda #0
      sta.w COLUBK
      ENDM

      MAC LINE7
      ldy #24
      sta dummy
next7:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda Colour49
      sta.w COLUBK
      lda Colour50
      sta COLUBK
      lda Colour51
      sta COLUBK
      lda Colour52
      sta COLUBK
      lda Colour53
      sta COLUBK
      lda Colour54
      sta COLUBK
      lda Colour55
      sta COLUBK
      lda Colour56
      sta COLUBK
      lda #0
      sta.w COLUBK
      dey
      bne next7
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda Colour49
      sta COLUBK
      lda Colour50
      sta COLUBK
      lda Colour51
      sta COLUBK
      lda Colour52
      sta COLUBK
      lda Colour53
      sta COLUBK
      lda Colour54
      sta COLUBK
      lda Colour55
      sta COLUBK
      lda Colour56
      sta COLUBK
      lda #0
      sta.w COLUBK
      ENDM

      MAC LINE8
      ldy #24
      sta dummy
next8:
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda Colour57
      sta.w COLUBK
      lda Colour58
      sta COLUBK
      lda Colour59
      sta COLUBK
      lda Colour60
      sta COLUBK
      lda Colour61
      sta COLUBK
      lda Colour62
      sta COLUBK
      lda Colour63
      sta COLUBK
      lda Colour64
      sta COLUBK
      lda #0
      sta.w COLUBK
      dey
      bne next8
      ENDM










    SEG     Bank0

    org $F000


Start:

      SEI  ; Disable interrupts, if there are any.
      CLD  ; Clear BCD math bit.

      LDX  #$FF
      TXS  ; Set stack to beginning.

      LDA #0
B1    STA 0,X
      DEX
      BPL B1


      lda #$00
      jsr ColourAll
      lda #40
      sta delay
      lda #10
      sta tempo
      lda #58
      sta position
MainLoop
VerticalBlank  ;*********************** VERTICAL BLANK HANDLER



	LDA  #2
	STA  VSYNC ;Begin vertical sync.
	STA  WSYNC ; First line of VSYNC
	STA  WSYNC ; Second line of VSYNC.

	LDA  #43
	STA  TIM64T
	LDA  #0
;	STA  CXCLR
	STA  WSYNC ; Third line of VSYNC.
	STA  VSYNC ; (0)


      dec delay
      bne noupdate
      lda tempo
      sta delay
      lda #>(return-1)
      pha
      lda #<(return-1)
      pha
      ldy position
      lda LowerByteTable,y
      sta pointer
      lda HigherByteTable,y
      sta pointer+1
      ldx Xtable,y
      lda Atable,y
      jmp (pointer)
return:
      dec position
      bne noupdate
      lda #58
      sta position
noupdate:      

      jsr DrawScreen


      STA VBLANK ; Make TIA output invisible,
      lda #30
      sta TIM64T
OverscanWait:
      lda     INTIM
      bne     OverscanWait
      JMP  MainLoop      ;Continue forever.


RotateClockwise:
      rts
RotateCounter:
      rts
ChangeTempo:
      stx tempo
      rts
ShiftLeft:
      ldx #0
nextshiftleft:
      lda Colour1+1,x
      sta Colour1,x
      lda Colour1+8+1,x
      sta Colour1+8,x
      lda Colour1+16+1,x
      sta Colour1+16,x
      lda Colour1+24+1,x
      sta Colour1+24,x
      lda Colour1+32+1,x
      sta Colour1+32,x
      lda Colour1+40+1,x
      sta Colour1+40,x
      lda Colour1+48+1,x
      sta Colour1+48,x
      lda Colour1+56+1,x
      sta Colour1+56,x
      inx
      cpx #7
      bne nextshiftleft
      rts
ScrollLeft:
      lda Colour1
      sta temp1
      lda Colour1+8
      sta temp2
      lda Colour1+16
      sta temp3
      lda Colour1+24
      sta temp4
      lda Colour1+32
      sta temp5
      lda Colour1+40
      sta temp6
      lda Colour1+48
      sta temp7
      lda Colour1+56
      sta temp8
      ldx #0
nextscrollleft:
      lda Colour1+1,x
      sta Colour1,x
      lda Colour1+8+1,x
      sta Colour1+8,x
      lda Colour1+16+1,x
      sta Colour1+16,x
      lda Colour1+24+1,x
      sta Colour1+24,x
      lda Colour1+32+1,x
      sta Colour1+32,x
      lda Colour1+40+1,x
      sta Colour1+40,x
      lda Colour1+48+1,x
      sta Colour1+48,x
      lda Colour1+56+1,x
      sta Colour1+56,x
      inx
      cpx #7
      bne nextscrollleft
      lda temp1
      sta Colour8
      lda temp2
      sta Colour8+8
      lda temp3
      sta Colour8+16
      lda temp4
      sta Colour8+24
      lda temp5
      sta Colour8+32
      lda temp6
      sta Colour8+40
      lda temp7
      sta Colour8+48
      lda temp8
      sta Colour8+56
      rts


ShiftRight:
      ldx #6
nextshiftright:
      lda Colour1,x
      sta Colour1+1,x
      lda Colour1+8,x
      sta Colour1+8+1,x
      lda Colour1+16,x
      sta Colour1+16+1,x
      lda Colour1+24,x
      sta Colour1+24+1,x
      lda Colour1+32,x
      sta Colour1+32+1,x
      lda Colour1+40,x
      sta Colour1+40+1,x
      lda Colour1+48,x
      sta Colour1+48+1,x
      lda Colour1+56,x
      sta Colour1+56+1,x
      dex
      bpl nextshiftright
      rts

ScrollRight:
      lda Colour8
      sta temp1
      lda Colour8+8
      sta temp2
      lda Colour8+16
      sta temp3
      lda Colour8+24
      sta temp4
      lda Colour8+32
      sta temp5
      lda Colour8+40
      sta temp6
      lda Colour8+48
      sta temp7
      lda Colour8+56
      sta temp8
      ldx #6
nextscrollright:
      lda Colour1,x
      sta Colour1+1,x
      lda Colour1+8,x
      sta Colour1+8+1,x
      lda Colour1+16,x
      sta Colour1+16+1,x
      lda Colour1+24,x
      sta Colour1+24+1,x
      lda Colour1+32,x
      sta Colour1+32+1,x
      lda Colour1+40,x
      sta Colour1+40+1,x
      lda Colour1+48,x
      sta Colour1+48+1,x
      lda Colour1+56,x
      sta Colour1+56+1,x
      dex
      bpl nextscrollright
      lda temp1
      sta Colour1
      lda temp2
      sta Colour1+8
      lda temp3
      sta Colour1+16
      lda temp4
      sta Colour1+24
      lda temp5
      sta Colour1+32
      lda temp6
      sta Colour1+40
      lda temp7
      sta Colour1+48
      lda temp8
      sta Colour1+56
      rts

ShiftUp:
      ldy #6
      ldx #0
nextshiftup:
      lda Colour1+8,x
      sta Colour1,x
      lda Colour2+8,x
      sta Colour2,x
      lda Colour3+8,x
      sta Colour3,x
      lda Colour4+8,x
      sta Colour4,x
      lda Colour5+8,x
      sta Colour5,x
      lda Colour6+8,x
      sta Colour6,x
      lda Colour7+8,x
      sta Colour7,x
      lda Colour8+8,x
      sta Colour8,x
      inx
      inx
      inx
      inx
      inx
      inx
      inx
      inx
      dey
      bpl nextshiftup
      rts

ShiftDown:
      ldy #7
      ldx #64
nextshiftdown:
      lda Colour1-8,x
      sta Colour1,x
      lda Colour2-8,x
      sta Colour2,x
      lda Colour3-8,x
      sta Colour3,x
      lda Colour4-8,x
      sta Colour4,x
      lda Colour5-8,x
      sta Colour5,x
      lda Colour6-8,x
      sta Colour6,x
      lda Colour7-8,x
      sta Colour7,x
      lda Colour8-8,x
      sta Colour8,x
      dex
      dex
      dex
      dex
      dex
      dex
      dex
      dex
      dey
      bpl nextshiftdown
      rts

ScrollUp:
      lda Colour1
      sta temp1
      lda Colour2
      sta temp2
      lda Colour3
      sta temp3
      lda Colour4
      sta temp4
      lda Colour5
      sta temp5
      lda Colour6
      sta temp6
      lda Colour7
      sta temp7
      lda Colour8
      sta temp8
      ldy #6
      ldx #0
nextscrollup:
      lda Colour1+8,x
      sta Colour1,x
      lda Colour2+8,x
      sta Colour2,x
      lda Colour3+8,x
      sta Colour3,x
      lda Colour4+8,x
      sta Colour4,x
      lda Colour5+8,x
      sta Colour5,x
      lda Colour6+8,x
      sta Colour6,x
      lda Colour7+8,x
      sta Colour7,x
      lda Colour8+8,x
      sta Colour8,x
      inx
      inx
      inx
      inx
      inx
      inx
      inx
      inx
      dey
      bpl nextscrollup
      lda temp1
      sta Colour57
      lda temp2
      sta Colour58
      lda temp3
      sta Colour59
      lda temp4
      sta Colour60
      lda temp5
      sta Colour61
      lda temp6
      sta Colour62
      lda temp7
      sta Colour63
      lda temp8
      sta Colour64
      rts

ScrollDown:
      lda Colour57
      sta temp1
      lda Colour58
      sta temp2
      lda Colour59
      sta temp3
      lda Colour60
      sta temp4
      lda Colour61
      sta temp5
      lda Colour62
      sta temp6
      lda Colour63
      sta temp7
      lda Colour64
      ldy #7
      ldx #64
nextscrolldown:
      lda Colour1-8,x
      sta Colour1,x
      lda Colour2-8,x
      sta Colour2,x
      lda Colour3-8,x
      sta Colour3,x
      lda Colour4-8,x
      sta Colour4,x
      lda Colour5-8,x
      sta Colour5,x
      lda Colour6-8,x
      sta Colour6,x
      lda Colour7-8,x
      sta Colour7,x
      lda Colour8-8,x
      sta Colour8,x
      dex
      dex
      dex
      dex
      dex
      dex
      dex
      dex
      dey
      bpl nextscrolldown
      lda temp1
      sta Colour1
      lda temp2
      sta Colour2
      lda temp3
      sta Colour3
      lda temp4
      sta Colour4
      lda temp5
      sta Colour5
      lda temp6
      sta Colour6
      lda temp7
      sta Colour7
      lda temp8
      sta Colour8
      rts

ClearAll:
     ldx #63
     lda #0
nextclearall:
     sta Colour1,x
     dex
     bpl nextclearall
     rts
ClearSquare:
     lda #0
     sta Colour1,x
     rts
ClearColumn:
;X=Column To Clear (0-7)
      lda #0
      sta Colour1,x
      sta Colour1+8,x
      sta Colour1+16,x
      sta Colour1+24,x
      sta Colour1+32,x
      sta Colour1+40,x
      sta Colour1+48,x
      sta Colour1+56,x
      rts
ClearRow:
;X=Row To Clear (0-7)
      txa
      asl
      asl
      asl
      tax
      lda #0
      sta Colour1,x
      sta Colour1+1,x
      sta Colour1+2,x
      sta Colour1+3,x
      sta Colour1+4,x
      sta Colour1+5,x
      sta Colour1+6,x
      sta Colour1+7,x
      rts

IncSquare:
      inc Colour1,x
      inc Colour1,x
      rts
DecSquare:
      dec Colour1,x
      dec Colour1,x
      rts
IncColumn:
;X=Column To Increment (0-7)
      inc Colour1,x
      inc Colour1+8,x
      inc Colour1+16,x
      inc Colour1+24,x
      inc Colour1+32,x
      inc Colour1+40,x
      inc Colour1+48,x
      inc Colour1+56,x
      inc Colour1,x
      inc Colour1+8,x
      inc Colour1+16,x
      inc Colour1+24,x
      inc Colour1+32,x
      inc Colour1+40,x
      inc Colour1+48,x
      inc Colour1+56,x
      rts
IncRow:
;X=Row To Increment (0-7)
      txa
      asl
      asl
      asl
      tax
      inc Colour1,x
      inc Colour1+1,x
      inc Colour1+2,x
      inc Colour1+3,x
      inc Colour1+4,x
      inc Colour1+5,x
      inc Colour1+6,x
      inc Colour1+7,x
      inc Colour1,x
      inc Colour1+1,x
      inc Colour1+2,x
      inc Colour1+3,x
      inc Colour1+4,x
      inc Colour1+5,x
      inc Colour1+6,x
      inc Colour1+7,x
      rts
DecColumn:
;X=Column To decrement (0-7)
      dec Colour1,x
      dec Colour1+8,x
      dec Colour1+16,x
      dec Colour1+24,x
      dec Colour1+32,x
      dec Colour1+40,x
      dec Colour1+48,x
      dec Colour1+56,x
      dec Colour1,x
      dec Colour1+8,x
      dec Colour1+16,x
      dec Colour1+24,x
      dec Colour1+32,x
      dec Colour1+40,x
      dec Colour1+48,x
      dec Colour1+56,x
      rts
DecRow:
;X=Row To Decrement (0-7)
      txa
      asl
      asl
      asl
      tax
      dec Colour1,x
      dec Colour1+1,x
      dec Colour1+2,x
      dec Colour1+3,x
      dec Colour1+4,x
      dec Colour1+5,x
      dec Colour1+6,x
      dec Colour1+7,x
      dec Colour1,x
      dec Colour1+1,x
      dec Colour1+2,x
      dec Colour1+3,x
      dec Colour1+4,x
      dec Colour1+5,x
      dec Colour1+6,x
      dec Colour1+7,x
      rts
IncAll:
     ldx #63
nextincall:
     inc Colour1,x
     inc Colour1,x
     dex
     bpl nextincall
     rts
DecAll:
     ldx #63
nextdeccall:
     dec Colour1,x
     dec Colour1,x
     dex
     bpl nextdeccall
     rts

ColourColumn:
;X=Column To Colour (0-7)
      sta Colour1,x
      sta Colour1+8,x
      sta Colour1+16,x
      sta Colour1+24,x
      sta Colour1+32,x
      sta Colour1+40,x
      sta Colour1+48,x
      sta Colour1+56,x
      rts
ColourRow:   
;X=Row To Clear (0-7)
      sta temp1
      txa
      asl
      asl
      asl
      tax
      lda #temp1
      sta Colour1,x
      sta Colour1+1,x
      sta Colour1+2,x
      sta Colour1+3,x
      sta Colour1+4,x
      sta Colour1+5,x
      sta Colour1+6,x
      sta Colour1+7,x
      rts
ColourSquare:
      sta Colour1,x
      rts

ColourAll:
     ldx #63
nextcolourall:
     sta Colour1,x
     dex
     bpl nextcolourall
;     jmp return
     rts

MirrorLeft:
     ldx #0
nextmirrorleft:
     lda Colour1,x
     sta Colour8,x
     lda Colour2,x
     sta Colour7,x
     lda Colour3,x
     sta Colour6,x
     lda Colour4,x
     sta Colour5,x
     inx
     inx
     inx
     inx
     inx
     inx
     inx
     inx
     cpx #64
     bne nextmirrorleft
     rts
MirrorRight:
     ldx #0
nextmirrorright:
     lda Colour8,x
     sta Colour1,x
     lda Colour7,x
     sta Colour2,x
     lda Colour6,x
     sta Colour3,x
     lda Colour5,x
     sta Colour4,x
     inx
     inx
     inx
     inx
     inx
     inx
     inx
     inx
     cpx #64
     bne nextmirrorright
     rts

MirrorBottom:
     ldx #7
nextmirrorbottom:
     lda Colour33,x
     sta Colour25,x
     lda Colour41,x
     sta Colour17,x
     lda Colour49,x
     sta Colour9,x
     lda Colour57,x
     sta Colour1,x
     dex
     bpl nextmirrorbottom
     rts

MirrorTop:
     ldx #7
nextmirrortop:
     lda Colour25,x
     sta Colour33,x
     lda Colour17,x
     sta Colour41,x
     lda Colour9,x
     sta Colour49,x
     lda Colour1,x
     sta Colour57,x
     dex
     bpl nextmirrortop
     rts

MirrorQuad:   
     jsr MirrorTop
     jsr MirrorLeft
     rts

FillQuarter:  
     sta temp1
     lda FillQuarterTable,x
     tax
     lda temp1
     sta Colour1,x
     sta Colour1+1,x
     sta Colour1+2,x
     sta Colour1+3,x
     sta Colour9,x
     sta Colour9+1,x
     sta Colour9+2,x
     sta Colour9+3,x
     sta Colour17,x
     sta Colour17+1,x
     sta Colour17+2,x
     sta Colour17+3,x
     sta Colour25,x
     sta Colour25+1,x
     sta Colour25+2,x
     sta Colour25+3,x
     rts
FillEighth:   
     sta temp1
     lda FillEighthTable,x
     tax
     lda temp1
     sta Colour1,x
     sta Colour1+1,x
     sta Colour9,x
     sta Colour9+1,x
     rts
PatternQuad:  
     ldx #0
nextpatternquad1:
     lda Colour1,x
     sta Colour1+32,x
     sta Colour5,x
     sta Colour5+32,x
     lda Colour2,x
     sta Colour2+32,x
     sta Colour6,x
     sta Colour6+32,x
     lda Colour3,x
     sta Colour3+32,x
     sta Colour7,x
     sta Colour7+32,x
     lda Colour4,x
     sta Colour4+32,x
     sta Colour8,x
     sta Colour8+32,x
     inx
     inx
     inx
     inx
     inx
     inx
     inx
     inx
     cpx #32
     bne nextpatternquad1
     rts
PatternEighth:
     lda Colour1
     sta Colour3
     sta Colour1+16
     sta Colour3+16
     lda Colour2
     sta Colour4
     sta Colour2+16
     sta Colour4+16

     lda Colour1+8
     sta Colour3+8
     sta Colour1+8+16
     sta Colour3+8+16

     lda Colour2+8
     sta Colour4+8
     sta Colour2+8+16
     sta Colour4+8+16
     jsr PatternQuad
     rts
DoNothing:
     rts

FillQuarterTable .byte 0,4,32,36
FillEighthTable  .byte 0,2,4,6,0+16,2+16,4+16,6+16,0+32,2+32,4+32,6+32,0+48,2+48,4+48,6+48

  ORG $FA00
Xtable: .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,1,0,2,3,1,0,0,0,1,2,3,4,5,6,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$30,$30,$30,$30,$30,$0,$0,$30,$0,$0,$30
Atable: .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$60,0,0,0,0,$60,$60,$60,$60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$30,$30,$30,$30,$30,$0,$0,$30,$0,$0,$30
  ORG $FB00
LowerByteTable:  .byte #<ShiftUp,#<ShiftUp,#<ShiftUp,#<ScrollUp
                 .byte #<ShiftLeft,#<ShiftLeft,#<ShiftLeft,#<ScrollLeft
                 .byte #<ShiftDown,#<ShiftDown,#<ShiftDown,#<ScrollDown
                 .byte #<ShiftRight,#<ShiftRight,#<ShiftRight,#<ScrollRight
                 .byte #<FillQuarter,#<FillQuarter,#<FillQuarter,#<FillQuarter,#<FillQuarter,#<FillQuarter,#<FillQuarter,#<FillQuarter,#<FillQuarter
                 .byte #<ColourAll,#<ClearRow,#<ClearRow,#<ClearRow,#<ClearRow,#<ClearRow,#<ClearRow,#<ClearRow,#<ClearRow
                 .byte #<DecAll,#<DecAll,#<DecAll,#<DecAll,#<DecAll,#<DecAll,#<DecAll,#<IncAll,#<IncAll,#<IncAll,#<IncAll,#<IncAll,#<IncAll,#<IncAll
                 .byte #<ColourAll,#<ColourAll,#<ColourAll,#<ColourAll,#<ColourAll,#<ColourAll,#<ColourAll,#<ColourAll,#<ColourAll,#<ColourAll,#<ColourAll
HigherByteTable: .byte #>ShiftUp,#>ShiftUp,#>ShiftUp,#>ScrollUp
                 .byte #>ShiftLeft,#>ShiftLeft,#>ShiftLeft,#>ScrollLeft
                 .byte #>ShiftDown,#>ShiftDown,#>ShiftDown,#>ScrollDown
                 .byte #>ShiftRight,#>ShiftRight,#>ShiftRight,#>ScrollRight
                 .byte #>FillQuarter,#>FillQuarter,#>FillQuarter,#>FillQuarter,#>FillQuarter,#>FillQuarter,#>FillQuarter,#>FillQuarter,#>FillQuarter
                 .byte #>ColourAll,#>ClearRow,#>ClearRow,#>ClearRow,#>ClearRow,#>ClearRow,#>ClearRow,#>ClearRow,#>ClearRow
                 .byte #>DecAll,#>DecAll,#>DecAll,#>DecAll,#>DecAll,#>DecAll,#>DecAll,#>IncAll,#>IncAll,#>IncAll,#>IncAll,#>IncAll,#>IncAll,#>IncAll
                 .byte #>ColourAll,#>ColourAll,#>ColourAll,#>ColourAll,#>ColourAll,#>ColourAll,#>ColourAll,#>ColourAll,#>ColourAll,#>ColourAll,#>ColourAll

  org $FC00

DrawScreen ;**************************** SCREEN DRAWING ROUTINES
      LDA INTIM
      BNE DrawScreen 
      STA WSYNC
      STA VBLANK  

      sta WSYNC
      lda #0
      sta COLUBK

      LINE1
      LINE2
      LINE3
      LINE4
      LINE5
      LINE6
      LINE7
      LINE8

      rts


	org $FFFC
	.word Start
	.word Start



Attachment: checker.bin
Description: Binary data

Current Thread