; Hardware initialisation, disk, mmc, timer, DRAM test
;
; Copyright (C) 2010 Sprite_tm
-; Copyright (C) 2010 Leo C.
+; Copyright (C) 2010-2013 Leo C.
;
; This file is part of avrcpm.
;
; - Setup Ports
- ldi temp,(1<<PUD) ;disable pullups
- outm8 P_PUD,temp
- out PORTD,_255 ;all pins high
+; ldi temp,(1<<PUD) ;disable pullups
+; outm8 P_PUD,temp
+ out PORTD,_255 ;all pins high (enables pullup on input ports)
out PORTB,_255
out PORTC,_255
out DDRD,_255 ; all outputs
rcall uart_init
-;Init timer2. Refresh-call should happen every (8ms/512)=312 cycles.
+;Init timer2. Refresh-call should happen every (8ms/512) cycles.
ldi temp,REFR_CNT*2 ; 2 cycles per int
outm8 OCR2A,temp
sei
-#if I2C
+#if I2C_SUPPORT
rcall i2c_init ; Init I2C master
rcall rtc_get
#endif
rcall printstr
.db 13,13,"CPM on an AVR, v"
db_version VMAJOR, VMINOR
- printstring " r" SVN_REVSTR
+ printstring " r" SVN_REVSTR " " TESTSTR
.if MEMTEST
printnewline
printstring "Addr xx yy "
ramtestr1:
printnewline
- mov temp4,temp
+ mov zl,temp
movw temp,x
rcall printhexw
rcall printspace
mov temp2,temp
rcall printhex
rcall printspace
- mov temp,temp4
+ mov temp,zl
rcall printhex
rcall printspace
mov temp,temp2
- eor temp,temp4
+ eor temp,zl
and temp,temp2
rcall printxbits
rcall printspace
mov temp,temp2
- eor temp,temp4
+ eor temp,zl
com temp2
and temp,temp2
rcall printxbits
.if MEMFILL
ldiw x,0
+ ldi temp,MEMFILL_VAL
ramfillw:
- ldi temp,MEMFILL_VAL
rcall dram_write_pp
brcc ramfillw
.endif
printnewline
printstring "Partinit done."
- lcall dsk_inval_hostbuf ;init (de)blocking buffer
+; Init (de)blocking buffer
+
+ lcall dsk_inval_hostbuf
; Read first sector of first CP/M partition (ipl)
ldiw x,IPLADDR
stsw dmaadr,x
- lcall dsk_read
+ ldi temp,1<<READ_FUNC
+ lcall dskDoIt
; lift off
ljmp z80_init