Changeset 199 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src


Ignore:
Timestamp:
Nov 21, 2011, 11:01:08 AM (12 years ago)
Author:
gregli@…
google:author:
gregli@hotmail.com
Message:

Adding proper serial port support to the Configurator, which required some minor changes elsewhere. Also added an option, off by default, to automatically scan for serial drives at the end of normal drive detection (no ALT key required, although that is still available if the option is off).

Location:
trunk/XTIDE_Universal_BIOS/Src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/Device/Serial/SerialCommand.asm

    r196 r199  
    119119        mov     cl, dl
    120120
    121         and     cl, SerialCommand_PackedPortAndBaud_BaudMask
     121        and     cl, DEVICE_SERIAL_PACKEDPORTANDBAUD_BAUDMASK
    122122        shl     cl, 1
    123123        mov     ch, SerialCommand_UART_divisorLow_startingBaud
     
    125125        adc     ch, 0
    126126
    127         and     dl, SerialCommand_PackedPortAndBaud_PortMask
     127        and     dl, DEVICE_SERIAL_PACKEDPORTANDBAUD_PORTMASK
    128128        mov     dh, 0
    129129        shl     dx, 1           ; port offset already x4, needs one more shift to be x8
    130         add     dx, SerialCommand_PackedPortAndBaud_StartingPort
     130        add     dx, DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT
    131131
    132132;
     
    501501SerialCommand_IdentifyDeviceToBufferInESSIwithDriveSelectByteInBH:
    502502
    503         mov     dl,[cs:bp+IDEVARS.bSerialPackedPortAndBaud]
     503        mov     dx,[cs:bp+IDEVARS.bSerialCOMDigit]
    504504        test    dl,dl
    505505        jz      SerialCommand_AutoSerial
    506506
     507        xchg    dh,dl           ; dh (the COM character to print) will be transmitted to the server,
     508                                ; so we know this is not an auto detect
     509       
    507510; fall-through
    508511SerialCommand_IdentifyDeviceInDL_DriveInBH:
     
    543546;
    544547
    545 SerialCommand_ScanPortAddresses:     db  0b8h, 0f8h, 0bch, 0bah, 0fah, 0beh, 0feh, 0
    546 ; Corresponds to I/O port:                3f8,  2f8,  3e8,  2e8,  2f0,  3e0,  2e0,  260,  368,  268,  360,  270
    547 ; COM Assignments:                          1,    2,    3,    4,    5,    6,    7,    8,    9,   10,   11,   12
    548 ; Corresponds to Packed I/O port (hex):    37,   17,   35,   15,   16,   34,   14,    4,   25,    5,   24,    6     
     548SerialCommand_ScanPortAddresses:    db  DEVICE_SERIAL_COM7 >> 2
     549                                    db  DEVICE_SERIAL_COM6 >> 2
     550                                    db  DEVICE_SERIAL_COM5 >> 2
     551                                    db  DEVICE_SERIAL_COM4 >> 2
     552                                    db  DEVICE_SERIAL_COM3 >> 2
     553                                    db  DEVICE_SERIAL_COM2 >> 2
     554                                    db  DEVICE_SERIAL_COM1 >> 2
     555                                    db  0
    549556
    550557ALIGN JUMP_ALIGN
     
    581588; Pack into dl, baud rate starts at 0
    582589;
    583         add     dx,-(SerialCommand_PackedPortAndBaud_StartingPort)
    584         shr     dx,1
     590        add     dx,-(DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT)
     591        shr     dx,1            ; dh is zero at this point, and will be sent to the server,
     592                                ; so we know this is an auto detect
    585593
    586594        jmp     .testFirstBaud
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectDrives.asm

    r196 r199  
    3131    add     bp, BYTE IDEVARS_size           ; Point to next IDEVARS
    3232    loop    .DriveDetectLoop
    33 
    3433%ifdef MODULE_SERIAL
    35     test    BYTE [es:BDA.bKBFlgs1], 8       ; alt key depressed
    36     jz      .done
     34    mov     al,[cs:ROMVARS.wFlags]
     35    or      al,[es:BDA.bKBFlgs1]
     36    and     al,8        ; 8 = alt key depressed, same as FLG_ROMVARS_SERIAL_ALWAYSDETECT
     37    jz      .done
    3738    mov     bp, ROMVARS.ideVarsSerialAuto
    3839    mov     si, g_szDetectCOMAuto
    39 ;;; fall-through       
     40;;; fall-through                   
    4041%else
    4142    ret
     43%endif
     44
     45%if FLG_ROMVARS_SERIAL_SCANDETECT != 8
     46%error "DetectDrives is currently coded to assume that FLG_ROMVARS_SERIAL_ALWAYSDETECT is the same bit as the ALT key code in the BDA.  Changes in the code will be needed if these values are no longer the same."
    4247%endif
    4348
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectPrint.asm

    r196 r199  
    5353%ifdef MODULE_SERIAL
    5454;
    55 ; Baud rate is packed into one word:
    56 ;    High order 6 bits: number to add to '0' to get postfix character ('0' or 'K')
    57 ;    Low order 10 bits: binary number to display (960, 240, 38, or 115)
    58 ;          To get 9600: '0'<<10 + 960
    59 ;          To get 2400: '0'<<10 + 240
    60 ;          To get 38K:  ('K'-'0')<<10 + 38
    61 ;          To get 115K: ('K'-'0')<<10 + 115
    62 ;
     55; Print baud rate from .wSerialPackedPrintBaud, in two parts - %u and then %c
     56;
    6357    mov     ax,cx                       ; Unpack baud rate number
    64     and     ax,03ffh
     58    and     ax,DEVICE_SERIAL_PRINTBAUD_NUMBERMASK
    6559    push    ax
    6660
    6761    mov     al,ch                       ; Unpack baud rate postfix ('0' or 'K')
    68     eSHR_IM al,2
    69     add     al,'0'
     62    eSHR_IM al,2                        ; also effectively masks off the postfix
     63    add     al,DEVICE_SERIAL_PRINTBAUD_POSTCHARADD
    7064    push    ax
    7165%endif
  • trunk/XTIDE_Universal_BIOS/Src/Main.asm

    r192 r199  
    8282    at  ROMVARS.bStealSize,     db  1                       ; Steal 1kB from base memory
    8383
    84     at  ROMVARS.ideVars0+IDEVARS.wPort,         dw  1F0h            ; Controller Command Block base port
    85     at  ROMVARS.ideVars0+IDEVARS.wPortCtrl,     dw  3F0h            ; Controller Control Block base port
     84    at  ROMVARS.ideVars0+IDEVARS.wPort,         dw  DEVICE_ATA_DEFAULT_PORT         ; Controller Command Block base port
     85    at  ROMVARS.ideVars0+IDEVARS.wPortCtrl,     dw  DEVICE_ATA_DEFAULT_PORTCTRL     ; Controller Control Block base port
    8686    at  ROMVARS.ideVars0+IDEVARS.bDevice,       db  DEVICE_16BIT_ATA
    8787    at  ROMVARS.ideVars0+IDEVARS.bIRQ,          db  0
     
    9696    at  ROMVARS.ideVars1+IDEVARS.drvParamsSlave+DRVPARAMS.wFlags,   db  FLG_DRVPARAMS_BLOCKMODE
    9797
    98     at  ROMVARS.ideVars2+IDEVARS.wPort,         dw  300h            ; Controller Command Block base port
    99     at  ROMVARS.ideVars2+IDEVARS.wPortCtrl,     dw  308h            ; Controller Control Block base port
     98    at  ROMVARS.ideVars2+IDEVARS.wPort,         dw  DEVICE_XTIDE_DEFAULT_PORT           ; Controller Command Block base port
     99    at  ROMVARS.ideVars2+IDEVARS.wPortCtrl,     dw  DEVICE_XTIDE_DEFAULT_PORTCTRL       ; Controller Control Block base port
    100100    at  ROMVARS.ideVars2+IDEVARS.bDevice,       db  DEVICE_8BIT_DUAL_PORT_XTIDE
    101101    at  ROMVARS.ideVars2+IDEVARS.bIRQ,          db  0
     
    127127    at  ROMVARS.bStealSize,     db  1                       ; Steal 1kB from base memory in full mode
    128128
    129     at  ROMVARS.ideVars0+IDEVARS.wPort,         dw  300h            ; Controller Command Block base port
    130     at  ROMVARS.ideVars0+IDEVARS.wPortCtrl,     dw  308h            ; Controller Control Block base port
     129    at  ROMVARS.ideVars0+IDEVARS.wPort,         dw  DEVICE_XTIDE_DEFAULT_PORT           ; Controller Command Block base port
     130    at  ROMVARS.ideVars0+IDEVARS.wPortCtrl,     dw  DEVICE_XTIDE_DEFAULT_PORTCTRL       ; Controller Control Block base port
    131131    at  ROMVARS.ideVars0+IDEVARS.bDevice,       db  DEVICE_8BIT_DUAL_PORT_XTIDE
    132132    at  ROMVARS.ideVars0+IDEVARS.bIRQ,          db  0               ; IRQ
Note: See TracChangeset for help on using the changeset viewer.