diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index 3538832a..d195df20 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -213,7 +213,13 @@ MD_SEEK: ; MD_READ: CALL HB_DSKREAD ; HOOK HBIOS DISK READ SUPERVISOR - LD BC,MD_RDSEC ; GET ADR OF SECTOR READ FUNC +; + LD A,(IY+MD_MID) ; GET ADR OF SECTOR READ FUNC + LD BC,MD_RDSECF ; + CP MID_MDFSH ; RAM / ROM = MD_RDSEC + JR Z,MD_RD1 ; FLASH = MD_RDSECF + LD BC,MD_RDSEC +MD_RD1: LD (MD_RWFNADR),BC ; SAVE IT AS PENDING IO FUNC JR MD_RW ; CONTINUE TO GENERIC R/W ROUTINE @@ -222,12 +228,18 @@ MD_READ: ; MD_WRITE: CALL HB_DSKWRITE ; HOOK HBIOS DISK WRITE SUPERVISOR - LD BC,MD_WRSEC ; GET ADR OF SECTOR WRITE FUNC +; + LD A,(IY+MD_MID) ; GET ADR OF SECTOR WRITE FUNC + LD BC,MD_WRSECF ; + CP MID_MDFSH ; RAM / ROM = MD_WRSEC + JR Z,MD_WR1 ; FLASH = MD_WRSECF + LD BC,MD_WRSEC +MD_WR1: LD (MD_RWFNADR),BC ; SAVE IT AS PENDING IO FUNC ; LD A,(IY+MD_DEV) ; GET DEVICE NUMBER ; OR A ; SET FLAGS TO TEST FOR ROM (UNIT 0) ; JR NZ,MD_RW ; NOT ROM, SO OK TO WRITE, CONTINUE - LD A,(IY+MD_MID ) ; IF THE DEVICES MEDIA + LD A,(IY+MD_MID) ; IF THE DEVICES MEDIA CP MID_MDROM ; IS NOT ROM THEN WE CAN JR NZ,MD_RW ; WRITE TO IT LD E,0 ; UNIT IS READ ONLY, ZERO SECTORS WRITTEN @@ -269,7 +281,13 @@ MD_RW3: OR A ; SET FLAGS BASED ON RETURN CODE RET ; AND RETURN, A HAS RETURN CODE ; +; READ FLASH +; +MD_RDSECF: + CALL MD_RDSEC + RET ; +; READ RAM / ROM ; MD_RDSEC: CALL MD_IOSETUP ; SETUP FOR MEMORY COPY @@ -300,7 +318,13 @@ MD_RDSEC: XOR A RET ; +; WRITE FLASH +; +MD_WRSECF: + CALL MD_WRSEC + RET ; +; WRITE RAM ; MD_WRSEC: CALL MD_IOSETUP ; SETUP FOR MEMORY COPY