; You should have received a copy of the GNU General Public License
; along with avrcpm. If not, see <http://www.gnu.org/licenses/>.
;
-; $Id$
+; $Id: init.asm 241 2015-12-10 09:38:25Z rapid $
;
#define REFR_PRE 8 /* timer prescale factor 1/8 */
outm8 WDTCSR,temp
ldi temp,(1<<WDCE)
outm8 WDTCSR,temp
-
+
; - Setup Ports
; ldi temp,(1<<PUD) ;disable pullups
out PORTD,_255 ;all pins high (enables pullup on input ports)
out PORTB,_255
out PORTC,_255
- out DDRD,_255 ; all outputs
- out DDRB,_255
- out DDRC,_255
- cbi P_RXD-1,RXD ; RXD pin is input
+ out DDRD,_255 ; PD all outputs
+#if I2C_SUPPORT
+ ldi temp,~((1<<SCL)|(1<<SDA))
+ out DDRC,temp
+#endif
+#if DRAM_8BIT
+ ldi temp,~(1<<RXD)
+ out DDRB,temp
+#endif
outm8 TIMSK1,_0
outm8 TIMSK2,_0
; Init timer 1 as 1 ms system clock tick.
- ldi temp, low (F_CPU/1000)
- ldi temp2,high(F_CPU/1000)
+ ldi temp, low (TC_1MS)
+ ldi temp2,high(TC_1MS)
outm8 OCR1BH,temp2
outm8 OCR1BL,temp
ldi temp,(1<<ICNC1)|(1<<CS10) ;Noise cancel, fall. edge, Normal Mode, clk/1
; - Init serial port
rcall uart_init
-
+
;Init timer2. Refresh-call should happen every (8ms/512) cycles.
ldi temp,REFR_CNT*2 ; 2 cycles per int
.endif
rcall printstr
- .db 13,13,"CPM on an AVR, v"
- db_version VMAJOR, VMINOR
- printstring " r" SVN_REVSTR " " TESTSTR
-
+ .db '\r', '\r'
+version_string:
+ makestring "CPM on an AVR, v" VERS_STR " r" SVN_REVSTR TESTSTR
+
.if MEMTEST
printnewline
printstring "Testing RAM: fill..."
rcall dram_read
; ori temp,0x04 ;simulate error
-; andi temp,0xF7
+; andi temp,0xF7 ;another error
mov temp2,xh
eor temp2,xl
brcc ramtestr
ramtestrex:
tst temp3 ;any errors?
- breq ramtestend
+ breq ramtestend
printstring " System halted!"
halted_loop:
dec temp2
brne boot_iplwl
rjmp boot_again
-
+
boot_ipl2:
lcall mgr_prnt_parttbl
printnewline
printstring "Partinit done."
-
+
; Init (de)blocking buffer
lcall dsk_inval_hostbuf
ldiw x,IPLADDR
std y+o_dmaadr+0,xl
std y+o_dmaadr+1,xh
-
+
ldi temp,1<<READ_FUNC
lcall dskDoIt
; vim:set ts=8 noet nowrap
-