;\r
\r
\r
-; ------------------------- Defines for the disk management Structures\r
+;-------------------------- Defines for the disk management Structures\r
\r
;----------------------------------------------- Start of Data Segment\r
\r
.dseg\r
\r
\r
+; Partition table offsets:\r
+tmp_tbl:\r
+ .byte PARTENTRY_SIZE*MAXDISKS\r
\r
; ------------------------------- Start of Code Segment\r
.cseg\r
; ====================================================================\r
; Parameters\r
; --------------------------------------------------------------------\r
-; Registers : none\r
-; Variables : [w] temp Status of Operation\r
-; (0x80 - Operation Failure )\r
-; (others - Operation Suceded)\r
+; \r
+; Registers : [w] temp Number of disk images (raw and fat16) found.\r
+; + 0x80 if sd card changes. (not used, doesn't work)\r
+; SREG : Z according to temp\r
; --------------------------------------------------------------------\r
; Description:\r
; This Function scans an SD-Cards Boot-Sector for valid Partitions.\r
; Get Partitiontype\r
ldd temp,z+PART_TYPE\r
\r
-; Test for FAT Partition\r
- cpi temp,PARTID_FAT16\r
+; Test for FAT Partition Type 1\r
+ cpi temp,PARTID1_FAT16\r
+ brne mgr_nextp1\r
+ \r
+ rcall fat_add_partition\r
+ rjmp mgr_pend\r
+\r
+; Test for FAT Partition Type 2\r
+mgr_nextp1:\r
+ cpi temp,PARTID2_FAT16\r
brne mgr_nextp2\r
\r
- rcall fat_add_partition\r
+ rcall fat_add_partition\r
+ rjmp mgr_pend \r
\r
- rjmp mgr_pend\r
- \r
mgr_nextp2:\r
adiw zl,16\r
cpi zl,low(hostbuf+510)\r
\r
mgr_pend:\r
\r
+#if 0 /* ToDo: ramdisks are not in sd-card partitions */\r
; Initialize RAM-Disks\r
rcall rdsk_add_partition\r
+#endif\r
+\r
+; Save ammount of found CP/M Partitions\r
+ sts ndisks,temp3\r
+ tst temp3\r
+ breq mgr_fat\r
\r
;Store new partitions and check if the SD card has been changed.\r
\r
clt\r
\r
mgr_pcpl:\r
- ld temp,y+\r
- ld temp2,z\r
- st z+,temp\r
+ ld temp,y+\r
+ ld temp2,z\r
+ st z+,temp\r
cpse temp,temp2\r
set\r
- dec temp4\r
+ dec temp4\r
brne mgr_pcpl\r
\r
- mov temp,temp3\r
- sts ndisks,temp\r
+ mov temp,temp3\r
+ sts ndisks,temp\r
+\r
brtc mgr_pcpe\r
\r
- tst temp\r
- breq mgr_pcpe\r
+; SD card changed.\r
\r
-; SD card not changed.\r
+ tst temp\r
+ breq mgr_pcpe\r
\r
+mgr_fat:\r
#if FAT16_SUPPORT\r
rcall fat_scan_partition\r
- rcall fat_reset_cache
+ rcall fat_reset_cache\r
#endif\r
+\r
lds temp,ndisks\r
sbr temp,0x80\r
\r
mgr_pcpe:\r
\r
+\r
+ tst temp\r
ret\r
\r
\r
lds yl,ndisks\r
ldi xh,'A'\r
\r
-pprl:
- ldd temp ,z+1 ;Get partition start
- ldd temp2,z+2
- ldd temp3,z+3
- ldd temp4,z+4
+pprl:\r
+ ldd temp ,z+1 ;Get partition start\r
+ ldd temp2,z+2\r
+ ldd temp3,z+3\r
+ ldd temp4,z+4\r
\r
printnewline\r
\r
- cp temp,_0 ;If zero ...
- cpc temp2,_0
- cpc temp3,_0
- cpc temp4,_0
- breq mgr_prnop ;... no partition table at 0
+ cp temp,_0 ;If zero ...\r
+ cpc temp2,_0\r
+ cpc temp3,_0\r
+ cpc temp4,_0\r
+ breq mgr_prnop ;... no partition table at 0\r
\r
; Partitiontype examining\r
ldd xl,z+0\r
rcall mgr_prnt_image\r
\r
mgr_prnt_size:\r
- call print_ultoa
+ call print_ultoa\r
printstring ", size: "\r
\r
ldd temp ,z+5 ;Get partition size\r
ror temp3\r
ror temp2\r
ror temp\r
- call print_ultoa
+ call print_ultoa\r
printstring "KB."\r
\r
mgr_goto_next_part: \r
adiw z,PARTENTRY_SIZE\r
- inc xh
+ inc xh\r
dec yl\r
tst yl\r
- brne pprl
+ brne pprl\r
\r
mgr_pppre:\r
ret\r
\r
mgr_prnt_diskname:\r
push temp\r
- mov temp,xh
+ mov temp,xh\r
call uartputc\r
- ldi temp,':'
+ ldi temp,':'\r
call uartputc\r
pop temp\r
ret\r