$save nolist
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; idevcf.inc
;    I/O System Device-Driver Configuration Include file.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Define environment.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

data        segment    rw   public 
data        ends

code        segment    er   public 

            extrn      nucerror: near
            
code        ends


bios_code        segment  er  public 
bios_code        ends


bios_data        segment    rw   public 
bios_data        ends


true        equ    0FFH
false        equ    000H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;    Device Unit Information Block Definition Structure.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

define_duib    struc
        db    '              '    ; Name(14)
        dw    0            ; file$drivers
        db    0            ; functs
        db    0            ; flags
        dw    0            ; dev$gran
        dw    0            ; low(dev$size)
        dw    0            ; high(dev$size)
        db    0            ; Device
        db    0            ; Unit
        dw    0            ; dev$unit
        dd    0            ; init$io
        dd    0            ; finish$io
        dd    0            ; queue$io
        dd    0            ; cancel$io
        dp    0            ; device$info
        dp    0            ; unit$info
        dw    0FFFFH       ; update$timeout
        dw    0            ; num$buffers
        db    130          ; priority
        db    false        ; fixed update boolean
        db    0            ; max$buffers
        db    0            ; filler byte
define_duib    ends
;
; Define Common Device Information Block.
;
common_dev_info    struc
        dw    0        ; Interrupt level
        db    0        ; Interrupt Task Priority
        dd    0        ; Interrupt Procedure Stack Size
        dd    0        ; Device Local Data Size
        dw    0        ; Number of Device-Units
        dd    0        ; Initialization Procedure
        dd    0        ; Finish Procedure
        dd    0        ; Start I/O Procedure
        dd    0        ; Stop I/O Procedure
        dd    0        ; Interrupt Procedure
        dw    0        ; Interrupt Time Limit
		dw	  0		   ; Filler A
		dw	  0		   ; Filler B
common_dev_info    ends
;
; Define Random-Access Device Information Block.
;
radev_dev_info    struc
        dw    0        ; Interrupt level
        db    0        ; Interrupt Task Priority
        dd    0        ; Interrupt Procedure Stack Size
        dd    0        ; Device Local Data Size
        dw    0        ; Number of Device-Units
        dd    0        ; Initialization Procedure
        dd    0        ; Finish Procedure
        dd    0        ; Start I/O Procedure
        dd    0        ; Stop I/O Procedure
        dd    0        ; Interrupt Procedure
        dw    0        ; Interrupt Time Limit
		dw	  0		   ; Filler A
		dw	  0		   ; Filler B
radev_dev_info    ends
;
; Define Random-Access Device Unit Information
;
radev_unit_info    struc
        dw    0        ; Track Size (bytes)
        dw    0        ; Max Number of Re-tries on Errors
        dw    0        ; Reserved
radev_unit_info    ends
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;    Define macro which gen's various publics needed by the I/O system.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

%*define(device_tables(num_duib,num_dev_unit,num_devices,timeout)) (%'
bios_code        segment

numduib            dw    %num_duib
            public    numduib

numdevunit        dw    %num_dev_unit
            public    numdevunit

numdevices        dw    %num_devices
            public    numdevices

fixed_update_timeout    dw    %timeout
            public    fixed_update_timeout

bios_code        ends

bios_data        segment

devunittable    db    %num_dev_unit dup (?)
        public    devunittable

devicetable    db    %num_devices dup (?,?,?)
        public    devicetable

bios_data        ends
)

$restore
$genonly
