aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/appl/template/template.asm
blob: 53de8603a4b72db1862d8e8e916ac0a4b4dd55ca (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
124
; This is a template for an amforth project.
;
; The order of the entries (esp the include order) must not be
; changed since it is very important that the settings are in the
; right order
;
; note: .set is like a variable, .equ is like a constant
;
; first is include the preamble. It contains macro definitions, 
; default settings and mcu specific stuff like register names. 
; The files included with it depend on the -I order of the 
; assembler.

.include "preamble.inc"

; The amforth code is split into two segments, one starting
; at address 0 (the RWW area) and one starting in
; the NRWW region. The latter part cannot be changed
; at runtime so it contains most of the core system
; that would never be changed. If unsure what it
; means, leave it as it is. This address may be
; adjusted to give room for other code fragments (e.g.
; bootloaders). The amforth code will start here and may
; occupy all space until flash-end.

; If you want leave out the first 512 bytes of the NRWW section
; for e.g. a bootloader change the line to
; .equ AMFORTH_RO_SEG = NRWW_START_ADDR+512/2
; note the /2 since the flash is 16bit per address
; default is the whole NRWW section
; .equ AMFORTH_RO_SEG = NRWW_START_ADDR

.set AMFORTH_RO_SEG = NRWW_START_ADDR

; amforth needs two essential parameters: CPU clock
; and command terminal line.
; cpu clock in hertz, 1MHz is factory default
.equ F_CPU = 20000000

; terminal settings
; check http://amforth.sourceforge.net/TG/recipes/Usart.html
; for further information

; serial line settings. The defaults are set in avr8/preamble.inc.
; You should not change that file but use your own settings *here*
; since it may get changed in future versions of amforth.
;.set BAUD=38400
;.set BAUD_MAXERROR=10
;.set WANT_ISR_RX = 1 ; interrupt driven receive
;.set WANT_ISR_TX = 0 ; send slowly but with less code space

; define which usart to use.
.include "drivers/usart_0.asm"


; now define your own options, if the settings from
; the files included above are not ok. Use the .set
; instruction, not the .equ. e.g.:
;
; .set WANT_XY = 1
;
; there are many options available. There are two
; places where they are defined initially: core/macros.asm 
; and core/devices/<mcutype>/device.asm. Setting the value
; to 1 enables the feature, setting to 0 disables it.
; Most options are disabled by default. You should never
; change the files mentioned above, setting the options here
; is absolutly sufficient.

; the dictionary search treats lowercase and uppercase
; letters the same. Set to 0 if you do not want it
.set WANT_IGNORECASE = 1


; default settings as specified in core/macros.asm. Uncomment and
; change them if necessary.

; Size of the Terminal Input Buffer. This is the command line buffer.
; .set TIBSIZE  = $64    ; bytes; ANS94 needs at least 80 characters per line

; The total USER size is the sum of the system internal USER area plus
; the size specified here.
; .set APPUSERSIZE = 10  ; size of application specific user area in bytes

; addresses of various data segments. 
;.set rstackstart = RAMEND      ; start address of return stack, grows downward
;.set stackstart  = RAMEND - 80 ; start address of data stack, grows downward
; change only if you know what to you do

; Total number of entries in the search order.
; The standard requires 8 wordlists in the search oder, amforth uses
; already one for itself. So you'll have 7 slots available.
;.set NUMWORDLISTS = 8

; Total number of recognizers.
; There are 2 recognizers already in the core system. That makes
; 2 for you.
;.set NUMRECOGNIZERS = 4


; DRIVER SECTION
; 
; settings for 1wire interface, uncomment to use it
;.equ OW_PORT=PORTB
;.equ OW_BIT=4
;.include "drivers/1wire.asm"

; Interrupts.
; globally enable (or disable) the interrupt support. It is
; enabled by default and some other settings (usart receive)
; depend on it. disabling it makes the inner interpreter
; slightly faster and frees some code space.
; .set WANT_INTERRUPTS = 1

; reserve a RAM region to count each interrupt individually.
; each interrupt of the given controller type gets a byte
; that is incremented for each interrupt. Needs a lot of 
; RAM but may be useful for debugging interrupts or get rid
; of random effects. disabled by default.
; .set WANT_INTERRUPT_COUNTERS = 0


; include the whole source tree.
.include "amforth.asm"