matrix.inc
author Tero Marttila <terom@paivola.fi>
Sun, 20 Apr 2014 23:51:57 +0300
changeset 80 5254ba612630
parent 42 99a179b64e6a
permissions -rw-r--r--
dmx-web: slightly better RGB colorpicker control..
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
;; LED Matrix driver
38
f430b507a885 Working font rendering on LED matrix
Tero Marttila <terom@fixme.fi>
parents: 36
diff changeset
     2
;; vim: set ft=avr:
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
     4
.dseg
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
     5
;; I/O addresses
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
     6
; Control port
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
.set MATRIX_DDR = DDRB
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
.set MATRIX_PORT = PORTB
36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
     9
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    10
; Pin for matrix driver Output Enable
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
.set MATRIX_OE = PORTB1		; Output Enable, active low, externally pulled high
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    13
;; Matrix properties
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    14
; Matrix width in columns
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    15
.set MATRIX_COLS = 8                        ; physical columns
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    17
; Framebuffer width in columns
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    18
.set MATRIX_BUF_COLS = 16		            ; framebuffer columns
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    19
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    20
;; SPI addresses
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    21
; row drivers (8 bits)
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    22
.set MATRIX_SPI_ROW = 0                     ; row mask source
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    23
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    24
; column sinks (8 bits)
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    25
.set MATRIX_SPI_COL = 1                     ; column scan sink
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    26
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    27
;; Matrix state
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    28
; Matrix framebuffer
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    29
; this holds the columns data as a 1 byte bitmask of row data per column (8 bits -> 8 rows)
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    30
matrix_colbuf:	    .byte MATRIX_BUF_COLS   ; framebuffer (row data by column)
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    31
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    32
; Column scan bit
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    33
; in the matrix refresh loop, we push out each column's row data in turn
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    34
; this bit tracks the currently refreshing column
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    35
matrix_colbit:	    .byte 1                 ; column scan bit
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    37
; Matrix viewport offset
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    38
; the visible matrix data is taken directly from the framebuffer, but it can be taken at an arbitrary offset
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    39
; this determines the starting offset for the visible viewport's left edge from the start of the framebuffer in columns
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    40
matrix_colshift:    .byte 1                 ; viewport left column offset
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
39
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    42
;; Text
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    43
; Maximum length of message
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    44
.set TEXT_MAXLENGTH = 64
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    45
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    46
; Scrolling speed (kiloticks per frame)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    47
.set TEXT_SPEED = 1
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    48
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    49
text_buffer:        .byte TEXT_MAXLENGTH    ; display message buffer
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    50
text_offset:        .byte 1                 ; current offset in text
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    51
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
.cseg
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    54
;; Normalize the outputs, enable the matrix, and set up buffers
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
Matrix_Init:
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
    ; Setup ENable port
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
        sbi         MATRIX_PORT, MATRIX_OE	; high -> disabled
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
        sbi         MATRIX_DDR, MATRIX_OE	; out
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
 
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
	; blank hardware
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
		ldi			r16, 0
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
		sts			spi_outbuf + 0, r16		; column sinks
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
		sts			spi_outbuf + 1, r16		; row drivers
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
	; write out
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
		rcall		SPI_SendRecv
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
	; enable
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
		cbi			MATRIX_PORT, MATRIX_OE	; low -> enabled
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
	; init buffers
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
		ldi			r16, 0b1
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
		sts			matrix_colbit, r16
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
34
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
    76
        ldi         r16, 0
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
    77
        sts         matrix_colshift, r16
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
    78
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
		ldi			r16, 0
34
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
    80
		ldi			r17, MATRIX_BUF_COLS
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
    81
		ldi			YL, low(matrix_colbuf)
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
    82
		ldi			YH, high(matrix_colbuf)
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
m_init_mzero:
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
		st			Y+, r16
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
		
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
		; loop until zero
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
		dec			r17
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
		brne		m_init_mzero
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
	; Use Timer0, 32k cycles -> 500Hz scan rate
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
		ldi			r16, 32
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
		rcall		Timer0_Start
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
	; done
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
		ret
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    98
;; Scan the matrix's next column from the viewport
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    99
;;  Interrupt-driven
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
Matrix_ScanCol:
34
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   101
    ; Save registers
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   102
        push        r16
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   103
        push        r17
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   104
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   105
	; Column bit
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   106
		; load
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   107
		lds			r16, matrix_colbit
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   108
	
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   109
		; start packet
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   110
        cbi         SPI_PORT, SPI_SS
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   111
36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   112
		; output single column-enable bit
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
		out			SPDR, r16
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   114
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   115
	; Compute col index
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   116
		ldi			r17, 0
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   117
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   118
m_sc_colidx:
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   119
		; shift
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   120
		lsr			r16
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   121
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   122
		; done if we shifted the bit out
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   123
		brcs		m_sc_row
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   124
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   125
		; count shifts
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   126
		inc			r17
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   127
		rjmp		m_sc_colidx
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   128
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   129
m_sc_row:
34
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   130
    ; Column shift
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   131
        ; load
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   132
        lds         r16, matrix_colshift
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   133
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   134
        ; add to col index
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   135
        add         r17, r16
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   136
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   137
	; Row mask
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   138
		; base
34
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   139
		ldi			XL, low(matrix_colbuf)
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   140
		ldi			XH, high(matrix_colbuf)
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   141
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   142
		; offset
34
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   143
		ldi			r16, 0
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   144
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   145
		add			XL, r17
34
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   146
		adc			XH, r16
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   147
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   148
		; load
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   149
		ld			r16, X
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   150
36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   151
		; output full row-enable bitmask
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   152
		rcall		SPI_Wait
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   153
		out			SPDR, r16
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   154
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   155
	; Update col bit
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   156
		lds			r16, matrix_colbit
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   157
	
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   158
		; shift left
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   159
		lsl			r16
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   160
		brcc		m_sc_colout
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   161
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   162
		; overflow, take bit from C
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   163
		rol			r16
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   164
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   165
m_sc_colout:
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   166
		; store
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   167
		sts			matrix_colbit, r16
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   168
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   169
	; End of packet
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   170
		rcall		SPI_Wait
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   171
        sbi         SPI_PORT, SPI_SS
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   172
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   173
	; Done
34
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   174
        pop         r17
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   175
        pop         r16
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   176
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   177
		ret
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   178
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   179
;; Scan the matrix once in one go
36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   180
;; XXX: doesn't support colshift
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   181
Matrix_ScanFull:
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   182
	; Row index
34
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   183
		ldi			ZL, low(matrix_colbuf)
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   184
		ldi			ZH, high(matrix_colbuf)
33
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   185
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   186
	; Column bit
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   187
		ldi			r25, 0
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   188
		sec								; set C
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   189
		
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   190
m_pulse_col:
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   191
		; rotate bit left from C
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   192
		rol			r25
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   193
		
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   194
		; overflow
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   195
		brcs		m_pulse_end
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   196
		
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   197
		; store in output buffer
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   198
		sts			spi_outbuf + 1, r25
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   199
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   200
	; Row mask
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   201
		ld			r16, Z+
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   202
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   203
		sts			spi_outbuf + 0, r16
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   204
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   205
	; Display
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   206
		rcall		SPI_SendRecv
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   207
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   208
	; Next column
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   209
		rjmp		m_pulse_col
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   210
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   211
m_pulse_end:
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   212
	; Done
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   213
		ret
0d0309787be3 Working matrix scan
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   214
36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   215
;; Reset the viewport to the start (left edge) of the framebuffer
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   216
Matrix_ShiftZero:
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   217
    ; Constant offset
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   218
        ldi         r16, 0
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   219
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   220
    ; Set
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   221
        rjmp        Matrix_ShiftSet
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   222
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   223
;; Shift the viewport one column to the left in the framebuffer, looping around to the end of the framebuffer
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   224
; This moves the visible output one column to the right
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   225
Matrix_ShiftLeft:
34
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   226
    ; Decrement-loop current value
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   227
        ; current value
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   228
        lds         r16, matrix_colshift
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   229
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   230
        ; shift window left
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   231
        dec         r16
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   232
36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   233
        ; test for underflow (MSB/N set) -> don't skip reset
34
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   234
        brpl        Matrix_ShiftSet
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   235
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   236
        ; reset window to right edge
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   237
        ldi         r16, MATRIX_BUF_COLS - MATRIX_COLS
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   238
36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   239
    ; Set
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   240
        rjmp        Matrix_ShiftSet
34
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   241
36
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   242
;; Shift the viewport one column to the right in the framebuffer, looping around to the start of the FB
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   243
; This moves the visible output one column to the left
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   244
Matrix_ShiftRight:
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   245
    ; Increment-loop current value
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   246
        ; current value
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   247
        lds         r16, matrix_colshift
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   248
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   249
        ; shift window right
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   250
        inc         r16
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   251
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   252
        ; test for overflow -> don't skip reset
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   253
        cpi         r16, MATRIX_BUF_COLS - MATRIX_COLS
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   254
        brlt        Matrix_ShiftSet
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   255
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   256
        ; reset window to left edge
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   257
        ldi         r16, 0
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   258
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   259
    ; Set
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   260
        rjmp        Matrix_ShiftSet
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   261
06e1e554acbb Rename Matrix_ShiftRight to ShiftLeft, improve matrix.inc documentation
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
   262
;; Set the matrix viewport offset
34
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   263
;; Input: r16
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   264
Matrix_ShiftSet:
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   265
        ; store new value
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   266
        sts         matrix_colshift, r16
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   267
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   268
        ; done
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   269
        ret
4646abd073fb Matrix_Shift, Main_ScanText animation and Main_ScanCode
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
   270
39
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   271
;; Rewinds the currently visible viewport to the beginning of the framebuffer
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   272
; This copies the currently visible viewport data to the beginning of the framebuffer and resets the offset
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   273
Matrix_ShiftRewind:
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   274
        ; current view offset
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   275
        ldi         XL, low(matrix_colbuf)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   276
        ldi         XH, high(matrix_colbuf)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   277
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   278
        ; offset
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   279
        lds         r16, matrix_colshift
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   280
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   281
        ; add
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   282
        ldi         r17, 0
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   283
        add         XL, r16
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   284
        adc         XH, r17
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   285
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   286
        ; start of framebuffer
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   287
        ldi         YL, low(matrix_colbuf + 0)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   288
        ldi         YH, high(matrix_colbuf + 0)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   289
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   290
        ; viewport width
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   291
        ldi         r17, MATRIX_COLS
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   292
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   293
matrix_shiftrew_loop:
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   294
        ; copy
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   295
        ld          r16, X+
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   296
        st          Y+, r16
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   297
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   298
        ; count
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   299
        dec         r17
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   300
        brne        matrix_shiftrew_loop
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   301
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   302
        ; done, reset offset
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   303
        rjmp        MAtrix_ShiftZero
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   304
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   305
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   306
;; Load a NUL-terminated ASCII string from PGM into the text buffer
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   307
; Input:    Z       - Address of NUL-terminated ASCII string in PGM        
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   308
Text_LoadString:
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   309
    ; Setup
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   310
        ; storage buffer
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   311
        ldi         YL, low(text_buffer)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   312
        ldi         YH, high(text_buffer)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   313
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   314
        ; max. length
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   315
        ldi         r18, TEXT_MAXLENGTH
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   316
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   317
text_loads_loop:
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   318
    ; Test max length
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   319
        ; count and check for overflow
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   320
        dec         r18
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   321
        brne        text_loads_char
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   322
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   323
    ; Load char
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   324
        ; force NUL
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   325
        ldi         r16, 0x00
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   326
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   327
text_loads_char:
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   328
        ; load next char
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   329
        lpm         r16, Z+
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   330
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   331
text_loads_store:
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   332
    ; Store and test NUL
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   333
        ; store it
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   334
        st          Y+, r16
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   335
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   336
        ; test for NUL
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   337
        tst         r16
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   338
        brne        text_loads_loop
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   339
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   340
    ; Update scroll offset
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   341
        ; reset offset
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   342
        ldi         r17, 0
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   343
        sts         text_offset, r17
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   344
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   345
        ; done
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   346
        ret
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   347
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   348
;; Shows the loaded string of ASCII text on the display, scrolling it horizontally
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   349
; Uses font.inc for rendering
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   350
; XXX: uses blocking timer sleeps and doesn't return until done
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   351
Text_ShowString:
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   352
    ; Load initial char
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   353
        ldi         XL, low(text_buffer + 0)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   354
        ldi         XH, high(text_buffer + 0)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   355
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   356
        ; load char
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   357
        ld          r16, X+
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   358
        push        XL
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   359
        push        XH
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   360
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   361
        ; one column spacing
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   362
        ldi         YL, low(matrix_colbuf + 1)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   363
        ldi         YH, high(matrix_colbuf + 1)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   364
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   365
        ; render to framebuffer
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   366
        rcall       Font_Render
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   367
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   368
        ; reset viewport
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   369
        rcall       Matrix_ShiftZero
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   370
       
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   371
   ; Load next char
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   372
text_shows_next:        
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   373
        ; next char
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   374
        pop         XH
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   375
        pop         XL
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   376
        ld          r16, X+
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   377
        push        XL
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   378
        push        XH
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   379
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   380
        ; test NUL
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   381
        tst         r16
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   382
        breq        text_shows_end
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   383
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   384
        ; offscreen
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   385
        ldi         YL, low(matrix_colbuf + 1 + 6 + 1)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   386
        ldi         YH, high(matrix_colbuf + 1 + 6 + 1)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   387
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   388
        ; render
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   389
        rcall       Font_Render
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   390
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   391
    ; Animate to next char
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   392
        ldi         r20, 7
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   393
        
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   394
text_shows_animloop:
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   395
        ; sleep
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   396
        ldi         XH, high(TEXT_SPEED * 1024)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   397
        ldi         XL, low(TEXT_SPEED * 1024)
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   398
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   399
        rcall       Timer_Sleep
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   400
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   401
        ; shift
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   402
        rcall       Matrix_ShiftRight
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   403
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   404
        ; count
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   405
        dec         r20
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   406
        brne        text_shows_animloop
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   407
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   408
    ; Rewind to next char
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   409
        rcall       Matrix_ShiftRewind
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   410
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   411
        sbi         PIND, PIND7
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   412
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   413
        ; load next char and animate it in
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   414
        rjmp        text_shows_next
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   415
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   416
text_shows_end:
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   417
    ; Done
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   418
        pop         XH
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   419
        pop         XL
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   420
42
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   421
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   422
    ; Clear second frame
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   423
        ldi         YL, low(matrix_colbuf + 16)
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   424
        ldi         YH, high(matrix_colbuf + 16)
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   425
        ldi         r16, MATRIX_COLS
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   426
        ldi         r17, 0
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   427
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   428
text_shows_end2:        
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   429
        st          -Y, r17
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   430
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   431
        dec         r16
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   432
        brne        text_shows_end2
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   433
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   434
    ; Blink
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   435
text_shows_end3:        
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   436
        ; on
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   437
        ldi         r16, 0
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   438
        rcall       Matrix_ShiftSet
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   439
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   440
        ; sleep
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   441
        ldi         XH, high(TEXT_SPEED * 6 * 1024)
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   442
        ldi         XL, low(TEXT_SPEED * 6 * 1024)
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   443
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   444
        rcall       Timer_Sleep
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   445
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   446
        ; off        
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   447
        ldi         r16, 8
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   448
        rcall       Matrix_ShiftSet
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   449
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   450
        ; sleep
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   451
        ldi         XH, high(TEXT_SPEED * 6 * 1024)
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   452
        ldi         XL, low(TEXT_SPEED * 6 * 1024)
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   453
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   454
        rcall       Timer_Sleep
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   455
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   456
        ; loop
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   457
        rjmp        text_shows_end3
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   458
99a179b64e6a matrix: Text_ShowString blinking
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   459
    ; XXX: end
39
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   460
        ret
d7eac199d323 Implement Text_Load/ShowString
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   461