Browse Source

Merge pull request #73 from b1ackmai1er/master

Update rf.asm
pull/90/head
Wayne Warthen 6 years ago
committed by GitHub
parent
commit
e7794723bf
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      Source/HBIOS/cfg_master.asm
  2. 2
      Source/HBIOS/cfg_mk4.asm
  3. 2
      Source/HBIOS/cfg_n8.asm
  4. 2
      Source/HBIOS/cfg_sbc.asm
  5. 107
      Source/HBIOS/rf.asm

2
Source/HBIOS/cfg_master.asm

@ -161,7 +161,7 @@ FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-2)
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)
;
IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
IDEMODE .EQU IDEMODE_NONE ; IDE: DRIVER MODE: IDEMODE_[DIO|DIDE]

2
Source/HBIOS/cfg_mk4.asm

@ -116,7 +116,7 @@ FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-2)
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)
;
IDEENABLE .EQU TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
IDEMODE .EQU IDEMODE_MK4 ; IDE: DRIVER MODE: IDEMODE_[DIO|DIDE]

2
Source/HBIOS/cfg_n8.asm

@ -119,7 +119,7 @@ FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-2)
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)
;
IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
IDEMODE .EQU IDEMODE_DIO ; IDE: DRIVER MODE: IDEMODE_[DIO|DIDE]

2
Source/HBIOS/cfg_sbc.asm

@ -119,7 +119,7 @@ FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-2)
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)
;
IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
IDEMODE .EQU IDEMODE_DIO ; IDE: DRIVER MODE: IDEMODE_[DIO|DIDE]

107
Source/HBIOS/rf.asm

@ -7,6 +7,8 @@
;
RF_U0IO .EQU $A0
RF_U1IO .EQU $A4
RF_U2IO .EQU $A8
RF_U3IO .EQU $AC
;
; IO PORT OFFSETS
;
@ -18,24 +20,51 @@ RF_ST .EQU 3
; MD DEVICE CONFIGURATION
;
RF_DEVCNT .EQU RFCNT ; NUMBER OF RF DEVICES SUPPORTED
RF_CFGSIZ .EQU 6 ; SIZE OF CFG TBL ENTRIES
RF_CFGSIZ .EQU 8 ; SIZE OF CFG TBL ENTRIES
RF_MAXRF .EQU 4 ; MAXIMUM NUMBERS OF DEVICES SUPPORTED
;
RF_DEV .EQU 0 ; OFFSET OF DEVICE NUMBER (BYTE)
RF_STAT .EQU 1 ; OFFSET OF STATUS (BYTE)
RF_LBA .EQU 2 ; OFFSET OF LBA (DWORD)
RF_IOAD .EQU 7 ; OFFSET OF DEVICE IO ADDRESS
#IF ($RF_DEVCNT > RF_MAXRF)
.ECHO "*** ONLY 4 RAM FLOPPY DEVICES SUPPORTED ***\n"
RF_DEVCNT .SET RF_MAXRF
#ENDIF
;
; DEVICE CONFIG TABLE (RAM DEVICE FIRST TO MAKE IT ALWAYS FIRST DRIVE)
;
RF_CFGTBL:
; DEVICE 0 ($A0)
; DEVICE 0
.DB 0 ; DRIVER DEVICE NUMBER
.DB 0 ; DEVICE STATUS
.DW 0,0 ; CURRENT LBA
#IF (RF_DEVCNT >= 2)
; DEVICE 1 ($A4)
.DB 0 ; UNUSED
.DB RF_U0IO ; DEVICE BASE ADDR
#IF (RF_DEVCNT > 1)
; DEVICE 1
.DB 1 ; DEVICE NUMBER
.DB 0 ; DEVICE STATUS
.DW 0,0 ; CURRENT LBA
.DB 0 ; UNUSED
.DB RF_U1IO ; DEVICE BASE ADDR
#ENDIF
#IF (RF_DEVCNT > 2)
; DEVICE 2
.DB 2 ; DRIVER DEVICE NUMBER
.DB 0 ; DEVICE STATUS
.DW 0,0 ; CURRENT LBA
.DB 0 ; UNUSED
.DB RF_U2IO ; DEVICE BASE ADDR
#ENDIF
; ; DEVICE 3
#IF (RF_DEVCNT > 3)
.DB 3 ; DEVICE NUMBER
.DB 0 ; DEVICE STATUS
.DW 0,0 ; CURRENT LBA
.DB 0 ; UNUSED
.DB RF_U3IO ; DEVICE BASE ADDR
#ENDIF
;
#IF ($ - RF_CFGTBL) != (RF_DEVCNT * RF_CFGSIZ)
@ -48,38 +77,12 @@ RF_CFGTBL:
;
RF_INIT:
CALL NEWLINE ; FORMATTING
PRTS("RF: IO=0x$")
LD A,RF_U0IO
CALL PRTHEXBYTE
PRTS(" DEVICES=$")
LD A,RF_DEVCNT
CALL PRTDECB
PRTS(" WP=$")
IN A,(RF_U0IO+3)
AND 1
JR Z,NO_WP1
PRTS("ON$")
JR D2_WP1
NO_WP1:
PRTS("OFF$")
D2_WP1:
#IF (RF_DEVCNT >= 2)
IN A,(RF_U1IO+3)
AND 1
JR Z,NO_WP2
PRTS("-ON$")
JR D2_WP2
NO_WP2:
PRTS("-OFF$")
D2_WP2:
#ENDIF
;
; SETUP THE DIO TABLE ENTRIES
;
PRTS("RF:$")
LD B,RF_DEVCNT ; LOOP CONTROL
LD IY,RF_CFGTBL ; START OF CFG TABLE
RF_INIT0:
CALL RF_UNIT
PUSH BC ; SAVE LOOP CONTROL
LD BC,RF_FNTBL ; BC := FUNC TABLE ADR
PUSH IY ; CFG ENTRY POINTER
@ -89,10 +92,30 @@ RF_INIT0:
ADD IY,BC ; BUMP IY TO NEXT ENTRY
POP BC ; RESTORE BC
DJNZ RF_INIT0 ; LOOP AS NEEDED
PRTS(" DEVICES=$") ; DISPLAY NUMBER
LD A,RF_DEVCNT ; OF DEVICES
CALL PRTDECB
;
XOR A ; INIT SUCCEEDED
RET ; RETURN
;
RF_UNIT:
PRTS(" IO=0x$") ; DISPLAY
LD A,(IY+RF_IOAD) ; PORT AND
CALL PRTHEXBYTE ; WRITE
PRTS(" WP=$") ; PROTECT
ADD A,RF_ST ; STATUS OF
LD C,A ; THIS DEVICE
IN A,(C)
AND 1
JR Z,RF_NO_WP1
PRTS("ON$")
RET
RF_NO_WP1:
PRTS("OFF$")
RET
;
;
;
RF_FNTBL:
@ -265,21 +288,9 @@ RF_WRSEC:
;
;
RF_SETIO:
LD A,(IY+RF_DEV) ; GET DEVICE NUM
OR A ; SET FLAGS
JR NZ,RF_SETIO1
LD A,RF_U0IO
JR RF_SETIO3
RF_SETIO1:
DEC A
JR NZ,RF_SETIO2
LD A,RF_U1IO
JR RF_SETIO3
RF_SETIO2:
CALL PANIC ; INVALID UNIT
RF_SETIO3:
LD (RF_IO),A
RET
LD A,(IY+RF_IOAD) ; GET THE IO PORT
LD (RF_IO),A ; OF THE DEVICE WE
RET ; ARE WORKING ON
;
;
;

Loading…
Cancel
Save