aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/avr8/devices/atmega169/device.asm
blob: e80445befc8e702b459729cbb889a03907d36453 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
; Partname:  ATmega169
; Built using part description XML file version 300
; generated automatically, do not edit

.nolist
	.include "m169def.inc"
.list

.equ ramstart =  $100
.equ CELLSIZE = 2
.macro readflashcell
	lsl zl
	rol zh
	lpm @0, Z+
	lpm @1, Z+
.endmacro
.macro writeflashcell
	lsl zl
	rol zh
.endmacro

; the following definitions are shortcuts for the respective forth source segments if set to 1
.set WANT_AD_CONVERTER = 0
.set WANT_ANALOG_COMPARATOR = 0
.set WANT_BOOT_LOAD = 0
.set WANT_CPU = 0
.set WANT_EEPROM = 0
.set WANT_EXTERNAL_INTERRUPT = 0
.set WANT_JTAG = 0
.set WANT_LCD = 0
.set WANT_PORTA = 0
.set WANT_PORTB = 0
.set WANT_PORTC = 0
.set WANT_PORTD = 0
.set WANT_PORTE = 0
.set WANT_PORTF = 0
.set WANT_PORTG = 0
.set WANT_SPI = 0
.set WANT_TIMER_COUNTER_0 = 0
.set WANT_TIMER_COUNTER_1 = 0
.set WANT_TIMER_COUNTER_2 = 0
.set WANT_USART0 = 0
.set WANT_USI = 0
.set WANT_WATCHDOG = 0


.ifndef SPMEN
 .equ SPMEN = SELFPRGEN
.endif

.ifndef SPMCSR
 .equ SPMCSR = SPMCR
.endif

.ifndef EEPE
 .equ EEPE = EEWE
.endif

.ifndef EEMPE
 .equ EEMPE = EEMWE
.endif
.equ intvecsize = 2 ; please verify; flash size: 16384 bytes
.equ pclen = 2 ; please verify
.overlap
.equ INTVECTORS = 23
.org $002
	 rcall isr ; External Interrupt Request 0
.org $004
	 rcall isr ; Pin Change Interrupt Request 0
.org $006
	 rcall isr ; Pin Change Interrupt Request 1
.org $008
	 rcall isr ; Timer/Counter2 Compare Match
.org $00A
	 rcall isr ; Timer/Counter2 Overflow
.org $00C
	 rcall isr ; Timer/Counter1 Capture Event
.org $00E
	 rcall isr ; Timer/Counter1 Compare Match A
.org $010
	 rcall isr ; Timer/Counter Compare Match B
.org $012
	 rcall isr ; Timer/Counter1 Overflow
.org $014
	 rcall isr ; Timer/Counter0 Compare Match
.org $016
	 rcall isr ; Timer/Counter0 Overflow
.org $018
	 rcall isr ; SPI Serial Transfer Complete
.org $01A
	 rcall isr ; USART0, Rx Complete
.org $01C
	 rcall isr ; USART0 Data register Empty
.org $01E
	 rcall isr ; USART0, Tx Complete
.org $020
	 rcall isr ; USI Start Condition
.org $022
	 rcall isr ; USI Overflow
.org $024
	 rcall isr ; Analog Comparator
.org $026
	 rcall isr ; ADC Conversion Complete
.org $028
	 rcall isr ; EEPROM Ready
.org $02A
	 rcall isr ; Store Program Memory Read
.org $02C
	 rcall isr ; LCD Start of Frame
.nooverlap
mcu_info:
mcu_ramsize:
	.dw 1024
mcu_eepromsize:
	.dw 512
mcu_maxdp:
	.dw 7168 ; minimum of 0x1C00 (from XML) and 0xffff
mcu_numints:
	.dw 23
mcu_name:
	.dw  9
	.db "ATmega169",0
.set codestart=pc