Browse Source

Memory disk driver updates

Updates to disk media id's
patch
b1ackmai1er 5 years ago
parent
commit
f3437487e5
  1. 1
      Source/CBIOS/cbios.asm
  2. 6
      Source/Doc/Architecture.md
  3. 1
      Source/HBIOS/hbios.inc
  4. 43
      Source/HBIOS/md.asm

1
Source/CBIOS/cbios.asm

@ -290,6 +290,7 @@ DPBMAP:
.DW DPB_FD120 ; MID_FD120
.DW DPB_FD111 ; MID_FD111
.DW DPB_HDNEW ; MID_HDNEW (1024 DIR ENTRIES)
.DW DPB_ROM ; MID_MDFSH
;
DPBCNT .EQU ($ - DPBMAP) / 2
;

6
Source/Doc/Architecture.md

@ -607,6 +607,8 @@ MID\_FD144 | 6 | 3.5" 1.44M Floppy
MID\_FD360 | 7 | 5.25" 360K Floppy
MID\_FD120 | 8 | 5.25" 1.2M Floppy
MID\_FD111 | 9 | 8" 1.11M Floppy
MID\_HDNEW | 10 | Hard Disk with 1024 Directory entries
MID\_MDFSH | 11 | FLASH Drive
### Function 0x10 -- Disk Status (DIOSTATUS)
@ -765,9 +767,9 @@ Bit 7: 1=Floppy, 0=Hard Disk (or similar, e.g. CF, SD, RAM)
| Bits 1-0: Reserved
| If Hard Disk:
| Bit 6: Removable\
| Bit 6: Removable
| Bits: 5-3: Type (0=Hard, 1=CF, 2=SD, 3=USB,
| 4=ROM, 5=RAM, 6=RAMF, 7=Reserved)
| 4=ROM, 5=RAM, 6=RAMF, 7=FLASH)
| Bits 2-0: Reserved
Each disk device is handled by an appropriate driver (IDE, SD,

1
Source/HBIOS/hbios.inc

@ -148,6 +148,7 @@ MID_FD360 .EQU 7
MID_FD120 .EQU 8
MID_FD111 .EQU 9
MID_HDNEW .EQU 10
MID_MDFSH .EQU 11
;
; CHAR DEVICE IDS
;

43
Source/HBIOS/md.asm

@ -5,6 +5,13 @@
;
; MD DEVICE CONFIGURATION
;
;
; DISK DEVICE TYPE ID MEDIA ID ATTRIBUTE
;--------------------------------------------------------------------------------------------------
; 0x00 MEMORY DISK 0x02 RAM DRIVE %00101000 HD STYLE, NON-REMOVABLE, TYPE-RAM
; 0x00 MEMORY DISK 0x01 ROM DRIVE %00100000 HD STYLE, NON-REMOVABLE, TYPE-ROM
; 0x00 MEMORY DISK 0x0B FLASH DRIVE %00111000 HD STYLE, NON-REMOVABLE, TYPE-FLASH
;
MD_DEVCNT .EQU 2 ; NUMBER OF MD DEVICES SUPPORTED
MD_CFGSIZ .EQU 8 ; SIZE OF CFG TBL ENTRIES
;
@ -18,8 +25,6 @@ MD_AROM .EQU %00100000 ; ROM ATTRIBUTE
MD_ARAM .EQU %00101000 ; RAM ATTRIBUTE
MD_AFSH .EQU %00111000 ; FLASH ATTRIBUTE
;
MID_MDFS .EQU 10 ; REWRITEABLE FLASH MEDIA
;
; DEVICE CONFIG TABLE (RAM DEVICE FIRST TO MAKE IT ALWAYS FIRST DRIVE)
;
MD_CFGTBL:
@ -59,19 +64,22 @@ MD_INIT:
;
; SETUP THE DIO TABLE ENTRIES
;
LD A,(FF_RW) ; IF FLASH
OR A ; FILESYSTEM
JR NZ,MD_IN1 ; CAPABLE,
LD A,MID_MDFSH ; UPDATE ROM DIO
LD (MD_CFGTBL + MD_CFGSIZ + MD_MID),A
LD A,MD_AFSH
LD (MD_CFGTBL + MD_CFGSIZ + MD_ATTRIB),A
MD_IN1:
LD BC,MD_FNTBL
LD DE,MD_CFGTBL
PUSH BC
CALL DIO_ADDENT
CALL DIO_ADDENT ; ADD FIRST ENTRY
POP BC
;#IF (FFENABLE) ; IF FLASH
; LD A,(FF_RW) ; FILESYSTEM
; OR A ; ENABLED SKIP
; JR Z,MD_IN1 ; ROM DISK
;#ENDIF
LD DE,MD_CFGTBL + MD_CFGSIZ
CALL DIO_ADDENT
MD_IN1:
CALL DIO_ADDENT ; ADD SECOND ENTRY
XOR A ; INIT SUCCEEDED
RET ; RETURN
;
@ -216,9 +224,12 @@ MD_WRITE:
CALL HB_DSKWRITE ; HOOK HBIOS DISK WRITE SUPERVISOR
LD BC,MD_WRSEC ; GET ADR OF SECTOR WRITE FUNC
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_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
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
LD A,ERR_READONLY ; SIGNAL ERROR
OR A ; SET FLAGS
@ -500,9 +511,9 @@ FF_PROBE:
LD A,(FF_RW) ; R/W FLAG TO R/O
OR H
OR L
LD (FF_RW),A
POP DE
POP HL
LD (FF_RW),A ; A NON ZERO VALUE
POP DE ; MEANS WE CAN'T
POP HL ; ENABLE FLASH WRITING
;
CALL FF_LAND ; LOOKUP AND DISPLAY
POP BC

Loading…
Cancel
Save