; Start mmc Card interaction
lcall mmcInit
- andi temp,MMCST_NOINIT & MMCST_NODISK
+ andi temp,MMCST_NOINIT | MMCST_NODISK
brne mgr_pierr
;Load first sector from MMC (boot sector)
;Test, if it has a valid MBR
lds temp,hostbuf+510 ;MBR signature (0xAA55) at and of sector?
- lds temp2,hostbuf+510+1
- ldi temp4,0xAA
cpi temp,0x55
- cpc temp2,temp4
+ lds temp,hostbuf+510+1
+ ldi temp2,0xAA
+ cpc temp,temp2
breq mgr_search
;No MBR, no partition table ...
+#if CPMDSK_SUPPORT
+
inc temp3 ;pretend we have one.
sts ndisks,temp3
ldi temp,high((1<<16) * 128/512)
ldi temp3,0
rcall dpb_imgdata_get
+#endif /* CPMDSK_SUPPORT */
+
rjmp mgr_pend
-; Search for valid Partitions and ImageFiles
mgr_search:
+
+#if CPMDSK_SUPPORT
+
+; Search for valid Partitions and ImageFiles
ldiw z,hostbuf+510-64 ;Point to first byte of partition table
- ldi temp4,4 ;Partition table has 4 entries.
mgr_ploop:
mgr_nextp:
adiw z,16
- dec temp4
+ cpi zl,low(hostbuf+510) ;End of partition table reached?
brne mgr_ploop
+#endif /* CPMDSK_SUPPORT */
#if FAT16_SUPPORT
; Test for FAT16 Partition
ldiw z,hostbuf+510-64 ;Point to first byte of partition table
- ldi temp4,4
mgr_ploop2:
; Get Partitiontype
mgr_nextp2:
adiw zl,16
- dec temp4
+ cpi zl,low(hostbuf+510)
brne mgr_ploop2
-#endif
+#endif /* FAT16_SUPPORT */
mgr_pend:
- lds temp4,ndisks
clr temp3
mgr_imgd_lp:
- tst temp4
+ lds temp,ndisks
+ cp temp3,temp
breq mgr_pend2
rcall dpb_imgdata_get
inc temp3
- dec temp4
rjmp mgr_imgd_lp
mgr_pend2:
; ====================================================================
mgr_prnt_parttbl:
- ldiw z,hostparttbl
lds yl,ndisks
- ldi xh,'A'
+ tst yl
+ brne ppr_doit
+ ret
+ppr_doit:
+ push r15
+ push r14
+ ldiw z,hostparttbl
+ ldi xh,'A'
pprl:
+ printnewline
+
ldd temp ,z+1 ;Get partition start
ldd temp2,z+2
- ldd temp3,z+3
- ldd temp4,z+4
+ ldd r14,z+3
+ ldd r15,z+4
- printnewline
+; Partitiontype examining
+
+ ldd xl,z+0
+ andi xl,dskType_MASK
+
+#if CPMDSK_SUPPORT
cp temp,_0 ;If zero ...
cpc temp2,_0
- cpc temp3,_0
- cpc temp4,_0
- breq mgr_prnop ;... no partition table at 0
+ cpc r14,_0
+ cpc r15,_0
+ brne mgr_prchkcpm ;... no partition table at 0
-; Partitiontype examining
- ldd xl,z+0
- andi xl,dskType_MASK
+ rcall mgr_prnt_diskname
+ rcall mgr_prnt_image
+ rjmp mgr_prnt_size
+
+mgr_prchkcpm:
; CP/M ?
cpi xl,dskType_CPM
brne mgr_prtb_nocpm
rcall mgr_prnt_diskname
rcall mgr_prnt_table_cpm
rjmp mgr_prnt_size
-
mgr_prtb_nocpm:
+#endif
+
#if FAT16_SUPPORT
; FAT16 ?
cpi xl,dskType_FAT
rjmp mgr_prnt_size
mgr_prtb_nofat:
#endif
+
#if 0 /* RAMDISK is not on SD card */
+#if RAMDISKCNT
; RAMDISK ?
cpi xl,dskType_RAM
- brne mgr_prnt_err
+ brne mgr_prnt_noramdisk
rcall mgr_prnt_diskname
rcall mgr_prnt_table_ram
rjmp mgr_prnt_size
+mgr_prnt_noramdisk:
+#endif
#endif
-mgr_prnt_err:
+
; Entry Error
rcall mgr_prnt_table_err
- rjmp mgr_prnt_size
-
-mgr_prnop:
- rcall mgr_prnt_diskname
- rcall mgr_prnt_image
mgr_prnt_size:
lcall print_ultoa
ldd temp ,z+5 ;Get partition size
ldd temp2,z+6
- ldi temp3,0
- ldi temp4,0
-
- lsr temp4
- ror temp3
- ror temp2
+ clr r14
+ clr r15
+ lsr temp2
ror temp
lcall print_ultoa
printstring "KB."
brne pprl
mgr_pppre:
+ pop r14
+ pop r15
ret
push temp
mov temp,xh
lcall uartputc
- ldi temp,':'
- lcall uartputc
+ printstring ": "
pop temp
ret
+#if CPMDSK_SUPPORT
mgr_prnt_table_cpm:
printstring "CP/M partition at: "
ret
+mgr_prnt_image:
+ printstring "Assuming CP/M image at: "
+ ret
+#endif
+
+#if FAT16_SUPPORT
mgr_prnt_table_fat:
- printstring "FAT16 File-Image at: "
+ printstring "FAT16 File-Image '"
+ push temp
+ mov temp,r14
+ lcall uartputc
+ clr r14
+ pop temp
+ printstring "' at: "
ret
+#endif
+#if RAMDISKCNT
mgr_prnt_table_ram:
printstring "Ramdisk at: "
ret
+#endif
mgr_prnt_table_err:
printstring "Unknown Entry at: "
ret
-mgr_prnt_image:
- printstring "Assuming CP/M image at: "
- ret
-