kernel/floppy.c

  1. Treiber für Floppy-Disk-Controller
  2. NEC PD765-Chip

IO-Ports:
DOR
FDC_STATUS
FDC_DATA
FDC_RATE
DMA_ADDR

Statusregister:
ST0
ST1
ST2
ST_CYL
ST_HEAD
ST_SEC
ST_PCN


Kommandobytes:
FDC_SEEK
FDC_READ
FDC_WRITE
FDC_RECALLIBRATE

Parameter
SECTOR_SIZE 512
HC_SIZE
NR_HEADS

Zum Beispiel

  1. Bits fuer Motorsteuerung:
    DOR
    
    ,
    0x3f2
    
  2. Status register des Floppy-Disk-Controllers,
    FDC_STATUS
    
    ,
    0x3f4
    
  3. Datenregister des Floppy Disk Controllers:
    FDC_DATA
    
    ,
    0x3f5
    
  4. Register fuer Transferrate:
    FDC_RATE
    
  5. Ports fuer die unteren 16 Bit der DMA-Addresse
    DMA_ADDR
    
  6. Status Register 0 :
    ST0
    
  7. Status Register 1 :
    ST1
    
  8. Status Register 2 :
    ST2
    
  9. Status Register 3 :
    ST3
    
  10. Hier meldet der Controller Zylinder:
    ST_CYL
    
  11. Hier meldet der Controller Koepfe:
    ST_HEAD
    
  12. Hier meldet der Controller Sektoren:
    ST_SEC
    
  13. Hier meldet der Controller aktuellen Zylinder:
    ST_PCN
    

  1. I/O-Ports
  2. Statusregsiter
  3. Felder in I/O-Ports
  4. Kommandobytes
  5. Parameter, wie Sektorgroesse, ...
  6. Fehlernummern: Positionierung
    ERR_SEEK
    

    floppy_task // Hauptprogramm des Treibers
    do_rdwt // Anforderung auf Platte zu lesen oder schreiben
    dma_setup
    start_motor
    stop_motor
    seek
    transfer
    fdc_results
    fdc_out
    recalibrate
    reset
    clock_mess
    send_mess