From: Alan Cox Date: Wed, 8 Nov 2017 16:42:26 +0000 (+0000) Subject: socz80: align with current code X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=cb9e4ccbdb038a13fc2b5f05e2edf693fbb950ab;p=FUZIX.git socz80: align with current code --- diff --git a/Kernel/platform-socz80/devrd.c b/Kernel/platform-socz80/devrd.c index a0fe3031..7881f9a2 100644 --- a/Kernel/platform-socz80/devrd.c +++ b/Kernel/platform-socz80/devrd.c @@ -32,39 +32,24 @@ int rd_write(uint8_t minor, uint8_t rawflag, uint8_t flag) int ramdisk_transfer(bool is_read, uint8_t minor, uint8_t rawflag) { blkno_t block; - int block_xfer; /* r/w return value (number of 512 byte blocks transferred) */ - char *dptr; - int dlen; uint16_t addr; - if(rawflag){ - dlen = udata.u_count; - dptr = udata.u_base; - block = udata.u_offset >> 9; - block_xfer = dlen >> 9; - }else{ /* rawflag == 0 */ - dlen = 512; - dptr = udata.u_buf->bf_data; - block = udata.u_buf->bf_blk; - block_xfer = 1; + if (rawflag) { + if (d_blkoff(9)) + return -1; } + block = udata.u_block; + if(block > (2 * 1024 * 2)){ /* > 2MB? */ udata.u_error = EIO; return -1; } - switch(minor){ - case 0: - block += (4 * 1024 * 2); /* rd0 at 4MB */ - break; - case 1: - block += (6 * 1024 * 2); /* rd1 at 6MB */ - break; - default: - udata.u_error = ENXIO; - return -1; - } + if (minor == 0) + block += (4 * 1024 * 2); /* rd0 at 4MB */ + else + block += (6 * 1024 * 2); /* rd1 at 6MB */ /* compute address in 256-byte chunks */ addr = block << 1; @@ -74,8 +59,8 @@ int ramdisk_transfer(bool is_read, uint8_t minor, uint8_t rawflag) /* FIXME Should be able to avoid the __critical once bank switching is fixed */ __critical { - rd_dlen = dlen; - rd_dptr = dptr; + rd_dlen = udata.u_nblock << 9; + rd_dptr = udata.u_dptr; rd_address = addr; if(is_read) ramdisk_read(); @@ -83,7 +68,7 @@ int ramdisk_transfer(bool is_read, uint8_t minor, uint8_t rawflag) ramdisk_write(); } - return block_xfer; + return udata.u_nblock << BLKSHIFT; } @@ -92,7 +77,7 @@ int rd_open(uint8_t minor) if(minor < NUM_DEV_RD){ return 0; } else { - udata.u_error = EIO; + udata.u_error = ENXIO; return -1; } } diff --git a/Kernel/platform-socz80/kernel.def b/Kernel/platform-socz80/kernel.def index bf28fa4f..36153720 100644 --- a/Kernel/platform-socz80/kernel.def +++ b/Kernel/platform-socz80/kernel.def @@ -6,3 +6,8 @@ U_DATA__TOTALSIZE .equ 0x300 ; 256+256+256 bytes. Z80_TYPE .equ 0 ; Actually a T80 PROGLOAD .equ 0x100 + +; +; For now - we can actually use this properly +; +Z80_MMU_HOOKS .equ 0