#include <kernel.h>
#include <blkdev.h>
#include <devsd.h>
+#include <devtty.h>
__sfr __at 0xE7 divmmc_cs;
__sfr __at 0xEB divmmc_data;
void sd_spi_lower_cs(void)
{
- divmmc_data = 0x02; /* FIXME we can have a slave */
+ if (sd_drive == 0)
+ divmmc_data = 0x02; /* Lower bit 0 (active low) */
+ else
+ divmmc_data = 0x01; /* Lower bit 1 (active low) */
}
void sd_spi_clock(bool go_fast)
__asm
ld a, (_blk_op+BLKPARAM_IS_USER_OFFSET)
ld hl, (_blk_op+BLKPARAM_ADDR_OFFSET)
- or a ; Set the Z flag up and save it, dont do it twice
push af
+#ifdef SWAPDEV
+ cp #2
+ jr nz, not_swapin
+ ld a,(_blk_op+BLKPARAM_SWAP_PAGE)
+ call map_for_swap
+ jr doread
+not_swapin:
+#endif
+ or a
call nz,map_process_always
+doread:
ld bc, #0xEB ; b = 0, c = port
+ ld a,#0x05
+ out (0xfe),a
inir
+ ld a,#0x02
+ out (0xfe),a
inir
+ ld a,(_vtborder)
+ out (0xfe),a
pop af
- call nz,map_kernel
+ or a
+ jp nz,map_kernel
ret
__endasm;
}
__asm
ld a, (_blk_op+BLKPARAM_IS_USER_OFFSET)
ld hl, (_blk_op+BLKPARAM_ADDR_OFFSET)
- or a ; Set the Z flag up and save it, dont do it twice
push af
+#ifdef SWAPDEV
+ cp #2
+ jr nz, not_swapout
+ ld a, (_blk_op+BLKPARAM_SWAP_PAGE)
+ call map_for_swap
+ jr dowrite
+not_swapout:
+#endif
+ or a
call nz,map_process_always
+dowrite:
ld bc, #0xEB
+ ld a,#0x05
+ out (0xfe),a
otir
+ ld a,#0x02
+ out (0xfe),a
otir
+ ld a,(_vtborder)
+ out (0xfe),a
pop af
- call nz,map_kernel
+ or a
+ jp nz,map_kernel
ret
__endasm;
}