КР1818ВГ93 используется также и в КНГМД Э-85.
Возможно, что исходник драйвера DZ окажется неплохой отправной точкой.
Код:
.MCALL .MODULE
.MODULE DZ,VERSION=20,COMMENT=<RX50 Mini-Floppy Disk Handler>,AUDIT=YES
.SBTTL General Comments
;+
; This handler serves as the standard RT-PC RX50 device handler. It
; is both the system and non-system handler. It also provides two
; special function capabilities to support physical I/O on the floppy
; as a foreign volume. The special functions are:
;
; Code Action
;
; 377 Absolute sector read.
; WCNT=TRACK, BLK=SECTOR, BUFFER=256 word buffer
; 376 Absolute sector write. Arguments same as code 377.
;
; In standard RT-PC mode, a 2:1 interleave is used on a single track and
; a 2 sector skew is used across tracks.
;-
.SBTTL DEFINITIONS
.MCALL .DRDEF, .ASSUME, .BR, .ADDR
.DRDEF DZ,52,FILST$!SPFUN$,800.,0,0
.DRPTR FETCH=DZLOAD,LOAD=DZLOAD
.DREST CLASS=DVC.DK
.DRSPF <377> ; Read Absolute
.DRSPF <376> ; Write Absolute
.SBTTL Constants and defaults
.IIF NDF DZ.CMA, DZ.CMA = 173206 ;Interrupt A command register
.IIF NDF DZ.CMB, DZ.CMB = 173212 ;Interrupt B command register
.IIF NDF DZ.IEN, DZ.IEN = 1 ;Bit number of interrupt enable bit
DZ$CS0 = 4 ;Offset from RX5ID to RX5CS0
SPFUNC = 100000 ;Special functions flag in command word
SYSPTR = 54 ;Pointer to base of RMON
P1EXT = 432 ;Offset from $RMON to external routine
GETVEC = 436 ;Offset from $RMON to $GTVEC routine
; RX50 Controller defaults
PC$CSR = 174000 ;Base device address of PC option modules
PC$VEC = 300 ;Base interrupt vector address for PC options
PC$IC1 = 173206 ;PC interrupt controller 1 CSR address
PC$IC2 = 173212 ;PC interrupt controller 2 CSR address
MMUSR0 = 177572 ;Memory management unit SR0
MMUSR3 = 172516 ;Memory management unit SR3
.IRPC X <01234567>
KISAR'X = 172340+<2*X> ;Kernel Instruction PAR'X
KISDR'X = 172300+<2*X> ;Kernel Instruction PDR'X
.ENDR
AP$ACF= 077406 ;4KW page with no trap/abort
PROCFG = 37776 ;PAR1 biased address of start of PRO3xx CONFIG table
CTI = -10. ;Offset to number of option slots
SLOT0 = -14. ;Option slot 0 ID
DZ$ID = 2004 ;Hardware device id # for RX50 controller
; Control and status register bit definitions
DZ.ID = -4 ;Offset to RX5ID from RX5CS0
;+
;Offset and command mode bit definitions of RX5CS0.
;-
DZ.CS0 = 0 ;RX5CS0
C0.DSK = 002 ;Disk select
C0.DRV = 004 ;Drive select
C0.MTO = 010 ;Extended motor timeout
C0.FN0 = 020 ;Mask bit for FUNTION BIT 0
C0.FN1 = 040 ;Mask bit for FUNTION BIT 1
C0.FN2 = 100 ;Mask bit for FUNTION BIT 2
C0.STA = 000 ;Read status function
C0.RSD = 040 ;Restore drive function
C0.RSS = 060 ;Restore subsystem function (RX INIT)
C0.RED = 100 ;Read sector function
C0.RER = 120 ;Read sector with retries function (EXTENDED)
C0.RAD = 140 ;Read address function
C0.WRT = 160 ;Write sector
C0.DON = 10 ;Done bit
;+
;These offsets are relative to the RX5CS0 register (X04).
;-
DZ.CS1 = 2 ;Offset to RX5CS1 from RX5CS0
DZ.CS2 = 4 ;Offset to RX5CS2 from RX5CS0
DZ.CS3 = 6 ;Offset to RXCS3 from RXCS0
DZ.DB = 14 ;Offset to RX5DB from RX5CS0
DZ.CA = 16 ;Offset to RXCA from RXCS0
DZ.GO = 20 ;Offset to RX5GO from RX5CS0
DZMTRK = 79. ;Highest track
; Error and status register bit definitions
RETRY = 8. ;Max number of retries (write function only)
DZNREG = 7. ;Number of registers for error log
; Miscellaneous hardware definitions
KISAR1 = 172342 ;KT-11 PAR for mapping user buffer