|
|
|
@ -189,21 +189,22 @@ PPIDE_DRVSLAVE .EQU %11110000 ; LBA, SLAVE DEVICE |
|
|
|
; |
|
|
|
; PPIDE DEVICE CONFIGURATION |
|
|
|
; |
|
|
|
PPIDE_CFGSIZ .EQU 18 ; SIZE OF CFG TBL ENTRIES |
|
|
|
PPIDE_CFGSIZ .EQU 19 ; SIZE OF CFG TBL ENTRIES |
|
|
|
; |
|
|
|
; PER DEVICE DATA OFFSETS |
|
|
|
; |
|
|
|
PPIDE_DEV .EQU 0 ; OFFSET OF DEVICE NUMBER (BYTE) |
|
|
|
PPIDE_STAT .EQU 1 ; LAST STATUS (BYTE) |
|
|
|
PPIDE_TYPE .EQU 2 ; DEVICE TYPE (BYTE) |
|
|
|
PPIDE_ACC .EQU 3 ; ACCESS FLAG BITS BIT 0=MASTER, 1=8BIT (BYTE) |
|
|
|
PPIDE_MED .EQU 4 ; MEDIA FLAG BITS BIT 0=CF, 1=LBA (BYTE) |
|
|
|
PPIDE_MEDCAP .EQU 5 ; MEDIA CAPACITY (DWORD) |
|
|
|
PPIDE_LBA .EQU 9 ; OFFSET OF LBA (DWORD) |
|
|
|
PPIDE_DATALO .EQU 13 ; BASE PORT AND IDE DATA BUS LSB (8255 PORT A) (BYTE) |
|
|
|
PPIDE_CTL .EQU 14 ; IDE ADDRESS BUS AND CONTROL SIGNALS (8255 PORT C)(BYTE) |
|
|
|
PPIDE_PPI .EQU 15 ; 8255 CONTROL PORT(BYTE) |
|
|
|
PPIDE_PARTNER .EQU 16 ; PARTNER DEVICE (MASTER <-> SLAVE) (WORD) |
|
|
|
PPIDE_MODE .EQU 1 ; OPERATION MODE: PPIDE MODE (BYTE) |
|
|
|
PPIDE_STAT .EQU 2 ; LAST STATUS (BYTE) |
|
|
|
PPIDE_TYPE .EQU 3 ; DEVICE TYPE (BYTE) |
|
|
|
PPIDE_ACC .EQU 4 ; ACCESS FLAG BITS BIT 0=MASTER, 1=8BIT (BYTE) |
|
|
|
PPIDE_MED .EQU 5 ; MEDIA FLAG BITS BIT 0=CF, 1=LBA (BYTE) |
|
|
|
PPIDE_MEDCAP .EQU 6 ; MEDIA CAPACITY (DWORD) |
|
|
|
PPIDE_LBA .EQU 10 ; OFFSET OF LBA (DWORD) |
|
|
|
PPIDE_DATALO .EQU 14 ; BASE PORT AND IDE DATA BUS LSB (8255 PORT A) (BYTE) |
|
|
|
PPIDE_CTL .EQU 15 ; IDE ADDRESS BUS AND CONTROL SIGNALS (8255 PORT C)(BYTE) |
|
|
|
PPIDE_PPI .EQU 16 ; 8255 CONTROL PORT(BYTE) |
|
|
|
PPIDE_PARTNER .EQU 17 ; PARTNER DEVICE (MASTER <-> SLAVE) (WORD) |
|
|
|
; |
|
|
|
PPIDE_ACC_MAS .EQU %00000001 ; UNIT IS MASTER (ELSE SLAVE) |
|
|
|
PPIDE_ACC_8BIT .EQU %00000010 ; UNIT WANTS 8 BIT I/O (ELSE 16 BIT) |
|
|
|
@ -219,6 +220,7 @@ PPIDE_CFGTBL: |
|
|
|
; |
|
|
|
PPIDE_DEV0M: ; DEVICE 0, MASTER |
|
|
|
.DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) |
|
|
|
.DB PPIDE0MODE ; DRIVER DEVICE MODE |
|
|
|
.DB 0 ; DEVICE STATUS |
|
|
|
.DB 0 ; DEVICE TYPE |
|
|
|
.DB PPIDE_ACC_MAS | (PPIDE0A8BIT & PPIDE_ACC_8BIT) ; UNIT ACCESS FLAGS |
|
|
|
@ -230,13 +232,27 @@ PPIDE_DEV0M: ; DEVICE 0, MASTER |
|
|
|
.DB PPIDE0BASE+3 ; PPI |
|
|
|
.DW PPIDE_DEV0S ; PARTNER |
|
|
|
; |
|
|
|
DEVECHO "PPIDE: IO=" |
|
|
|
DEVECHO "PPIDE: MODE=" |
|
|
|
#IF (PPIDE0MODE == PPIDEMODE_NONE) |
|
|
|
DEVECHO "NONE" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE0MODE == PPIDEMODE_STD) |
|
|
|
DEVECHO "STD" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE0MODE == PPIDEMODE_S100A) |
|
|
|
DEVECHO "S100A" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE0MODE == PPIDEMODE_S100B) |
|
|
|
DEVECHO "S100B" |
|
|
|
#ENDIF |
|
|
|
DEVECHO ", IO=" |
|
|
|
DEVECHO PPIDE0BASE |
|
|
|
DEVECHO ", MASTER" |
|
|
|
DEVECHO "\n" |
|
|
|
; |
|
|
|
PPIDE_DEV0S: ; DEVICE 0, SLAVE |
|
|
|
.DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) |
|
|
|
.DB PPIDE0MODE ; DRIVER DEVICE MODE |
|
|
|
.DB 0 ; DEVICE STATUS |
|
|
|
.DB 0 ; DEVICE TYPE |
|
|
|
.DB (PPIDE0B8BIT & PPIDE_ACC_8BIT) ; UNIT ACCESS FLAGS |
|
|
|
@ -248,7 +264,20 @@ PPIDE_DEV0S: ; DEVICE 0, SLAVE |
|
|
|
.DB PPIDE0BASE+3 ; PPI |
|
|
|
.DW PPIDE_DEV0M ; PARTNER |
|
|
|
; |
|
|
|
DEVECHO "PPIDE: IO=" |
|
|
|
DEVECHO "PPIDE: MODE=" |
|
|
|
#IF (PPIDE0MODE == PPIDEMODE_NONE) |
|
|
|
DEVECHO "NONE" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE0MODE == PPIDEMODE_STD) |
|
|
|
DEVECHO "STD" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE0MODE == PPIDEMODE_S100A) |
|
|
|
DEVECHO "S100A" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE0MODE == PPIDEMODE_S100B) |
|
|
|
DEVECHO "S100B" |
|
|
|
#ENDIF |
|
|
|
DEVECHO ", IO=" |
|
|
|
DEVECHO PPIDE0BASE |
|
|
|
DEVECHO ", SLAVE" |
|
|
|
DEVECHO "\n" |
|
|
|
@ -259,6 +288,7 @@ PPIDE_DEV0S: ; DEVICE 0, SLAVE |
|
|
|
; |
|
|
|
PPIDE_DEV1M: ; DEVICE 1, MASTER |
|
|
|
.DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) |
|
|
|
.DB PPIDE1MODE ; DRIVER DEVICE MODE |
|
|
|
.DB 0 ; DEVICE STATUS |
|
|
|
.DB 0 ; DEVICE TYPE |
|
|
|
.DB PPIDE_ACC_MAS | (PPIDE1A8BIT & PPIDE_ACC_8BIT) ; UNIT ACCESS FLAGS |
|
|
|
@ -270,13 +300,27 @@ PPIDE_DEV1M: ; DEVICE 1, MASTER |
|
|
|
.DB PPIDE1BASE+3 ; PPI |
|
|
|
.DW PPIDE_DEV1S ; PARTNER |
|
|
|
; |
|
|
|
DEVECHO "PPIDE: IO=" |
|
|
|
DEVECHO "PPIDE: MODE=" |
|
|
|
#IF (PPIDE1MODE == PPIDEMODE_NONE) |
|
|
|
DEVECHO "NONE" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE1MODE == PPIDEMODE_STD) |
|
|
|
DEVECHO "STD" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE1MODE == PPIDEMODE_S100A) |
|
|
|
DEVECHO "S100A" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE1MODE == PPIDEMODE_S100B) |
|
|
|
DEVECHO "S100B" |
|
|
|
#ENDIF |
|
|
|
DEVECHO ", IO=" |
|
|
|
DEVECHO PPIDE1BASE |
|
|
|
DEVECHO ", MASTER" |
|
|
|
DEVECHO "\n" |
|
|
|
; |
|
|
|
PPIDE_DEV1S: ; DEVICE 1, SLAVE |
|
|
|
.DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) |
|
|
|
.DB PPIDE1MODE ; DRIVER DEVICE MODE |
|
|
|
.DB 0 ; DEVICE STATUS |
|
|
|
.DB 0 ; DEVICE TYPE |
|
|
|
.DB (PPIDE1B8BIT & PPIDE_ACC_8BIT) ; UNIT ACCESS FLAGS |
|
|
|
@ -288,7 +332,20 @@ PPIDE_DEV1S: ; DEVICE 1, SLAVE |
|
|
|
.DB PPIDE1BASE+3 ; PPI |
|
|
|
.DW PPIDE_DEV1M ; PARTNER |
|
|
|
; |
|
|
|
DEVECHO "PPIDE: IO=" |
|
|
|
DEVECHO "PPIDE: MODE=" |
|
|
|
#IF (PPIDE1MODE == PPIDEMODE_NONE) |
|
|
|
DEVECHO "NONE" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE1MODE == PPIDEMODE_STD) |
|
|
|
DEVECHO "STD" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE1MODE == PPIDEMODE_S100A) |
|
|
|
DEVECHO "S100A" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE1MODE == PPIDEMODE_S100B) |
|
|
|
DEVECHO "S100B" |
|
|
|
#ENDIF |
|
|
|
DEVECHO ", IO=" |
|
|
|
DEVECHO PPIDE1BASE |
|
|
|
DEVECHO ", SLAVE" |
|
|
|
DEVECHO "\n" |
|
|
|
@ -299,6 +356,7 @@ PPIDE_DEV1S: ; DEVICE 1, SLAVE |
|
|
|
; |
|
|
|
PPIDE_DEV2M: ; DEVICE 2, MASTER |
|
|
|
.DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) |
|
|
|
.DB PPIDE2MODE ; DRIVER DEVICE MODE |
|
|
|
.DB 0 ; DEVICE STATUS |
|
|
|
.DB 0 ; DEVICE TYPE |
|
|
|
.DB PPIDE_ACC_MAS | (PPIDE2A8BIT & PPIDE_ACC_8BIT) ; UNIT ACCESS FLAGS |
|
|
|
@ -310,13 +368,27 @@ PPIDE_DEV2M: ; DEVICE 2, MASTER |
|
|
|
.DB PPIDE2BASE+3 ; PPI |
|
|
|
.DW PPIDE_DEV2S ; PARTNER |
|
|
|
; |
|
|
|
DEVECHO "PPIDE: IO=" |
|
|
|
DEVECHO "PPIDE: MODE=" |
|
|
|
#IF (PPIDE2MODE == PPIDEMODE_NONE) |
|
|
|
DEVECHO "NONE" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE2MODE == PPIDEMODE_STD) |
|
|
|
DEVECHO "STD" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE2MODE == PPIDEMODE_S100A) |
|
|
|
DEVECHO "S100A" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE2MODE == PPIDEMODE_S100B) |
|
|
|
DEVECHO "S100B" |
|
|
|
#ENDIF |
|
|
|
DEVECHO ", IO=" |
|
|
|
DEVECHO PPIDE2BASE |
|
|
|
DEVECHO ", MASTER" |
|
|
|
DEVECHO "\n" |
|
|
|
; |
|
|
|
PPIDE_DEV2S: ; DEVICE 2, SLAVE |
|
|
|
.DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) |
|
|
|
.DB PPIDE2MODE ; DRIVER DEVICE MODE |
|
|
|
.DB 0 ; DEVICE STATUS |
|
|
|
.DB 0 ; DEVICE TYPE |
|
|
|
.DB (PPIDE2B8BIT & PPIDE_ACC_8BIT) ; UNIT ACCESS FLAGS |
|
|
|
@ -328,7 +400,20 @@ PPIDE_DEV2S: ; DEVICE 2, SLAVE |
|
|
|
.DB PPIDE2BASE+3 ; PPI |
|
|
|
.DW PPIDE_DEV2M ; PARTNER |
|
|
|
; |
|
|
|
DEVECHO "PPIDE: IO=" |
|
|
|
DEVECHO "PPIDE: MODE=" |
|
|
|
#IF (PPIDE2MODE == PPIDEMODE_NONE) |
|
|
|
DEVECHO "NONE" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE2MODE == PPIDEMODE_STD) |
|
|
|
DEVECHO "STD" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE2MODE == PPIDEMODE_S100A) |
|
|
|
DEVECHO "S100A" |
|
|
|
#ENDIF |
|
|
|
#IF (PPIDE2MODE == PPIDEMODE_S100B) |
|
|
|
DEVECHO "S100B" |
|
|
|
#ENDIF |
|
|
|
DEVECHO ", IO=" |
|
|
|
DEVECHO PPIDE2BASE |
|
|
|
DEVECHO ", SLAVE" |
|
|
|
DEVECHO "\n" |
|
|
|
@ -1482,6 +1567,20 @@ PPIDE_SELUNIT: |
|
|
|
CALL PPIDE_PRTPREFIX |
|
|
|
PRTS(" SELUNIT$") |
|
|
|
#ENDIF |
|
|
|
LD A,(IY+PPIDE_MODE) |
|
|
|
CP PPIDEMODE_S100A |
|
|
|
JR Z,PPIDE_SELS100 |
|
|
|
CP PPIDEMODE_S100B |
|
|
|
JR Z,PPIDE_SELS100 |
|
|
|
JR PPIDE_SELUNIT0 |
|
|
|
; |
|
|
|
PPIDE_SELS100: |
|
|
|
LD C,(IY+PPIDE_PPI) |
|
|
|
INC C |
|
|
|
SUB PPIDEMODE_S100A |
|
|
|
OUT (C),A |
|
|
|
; |
|
|
|
PPIDE_SELUNIT0: |
|
|
|
BIT 0,(IY+PPIDE_ACC) ; MASTER? |
|
|
|
JR Z,PPIDE_SELUNIT1 ; HANDLE SLAVE |
|
|
|
LD A,PPIDE_DRVMASTER ; MASTER |
|
|
|
|