Changeset 199 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages
- Timestamp:
- Nov 21, 2011, 11:01:08 AM (13 years ago)
- google:author:
- gregli@hotmail.com
- Location:
- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/BootMenuSettingsMenu.asm
r144 r199 10 10 at MENUPAGE.fnEnter, dw BootMenuSettingsMenu_EnterMenuOrModifyItemVisibility 11 11 at MENUPAGE.fnBack, dw ConfigurationMenu_EnterMenuOrModifyItemVisibility 12 at MENUPAGE.wMenuitems, dw 612 at MENUPAGE.wMenuitems, dw 7 13 13 iend 14 14 … … 66 66 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgBootFloppyDrvs 67 67 at MENUITEM.itemValue + ITEM_VALUE.szMultichoice, dw g_szMultichoiceBootFloppyDrvs 68 at MENUITEM.itemValue + ITEM_VALUE.rgwChoiceToValueLookup, dw g_rgwChoiceToValueLookupForFloppyDrives68 at MENUITEM.itemValue + ITEM_VALUE.rgwChoiceToValueLookup, dw NULL 69 69 at MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup, dw g_rgszValueToStringLookupForFloppyDrives 70 70 iend … … 101 101 iend 102 102 103 g_MenuitemBootMenuSerialScanDetect: 104 istruc MENUITEM 105 at MENUITEM.fnActivate, dw Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI 106 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteLookupValueStringToBufferInESDIfromShiftedItemInDSSI 107 at MENUITEM.szName, dw g_szItemSerialDetect 108 at MENUITEM.szQuickInfo, dw g_szNfoSerialDetect 109 at MENUITEM.szHelp, dw g_szHelpSerialDetect 110 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE | FLG_MENUITEM_FLAGVALUE 111 at MENUITEM.bType, db TYPE_MENUITEM_MULTICHOICE 112 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw ROMVARS.wFlags 113 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgSerialDetect 114 at MENUITEM.itemValue + ITEM_VALUE.szMultichoice, dw g_szMultichoiceBooleanFlag 115 at MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup, dw g_rgszValueToStringLookupForFlagBooleans 116 at MENUITEM.itemValue + ITEM_VALUE.wValueBitmask, dw FLG_ROMVARS_SERIAL_SCANDETECT 117 iend 118 103 119 g_rgwChoiceToValueLookupForDisplayModes: 104 120 dw DEFAULT_TEXT_MODE … … 118 134 dw g_szValueBootDispModeMono 119 135 120 g_rgwChoiceToValueLookupForFloppyDrives: ; (No translation)121 dw 0122 dw 1123 dw 2124 dw 3125 dw 4126 136 g_rgszValueToStringLookupForFloppyDrives: 127 137 dw g_szValueBootFloppyDrvsAuto -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/IdeControllerMenu.asm
r153 r199 10 10 at MENUPAGE.fnEnter, dw IdeControllerMenu_EnterMenuOrModifyItemVisibility 11 11 at MENUPAGE.fnBack, dw ConfigurationMenu_EnterMenuOrModifyItemVisibility 12 at MENUPAGE.wMenuitems, dw 812 at MENUPAGE.wMenuitems, dw 11 13 13 iend 14 14 … … 50 50 at MENUITEM.szQuickInfo, dw g_szNfoIdeDevice 51 51 at MENUITEM.szHelp, dw g_szNfoIdeDevice 52 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE | FLG_MENUITEM_BYTEVALUE 52 at MENUITEM.bFlags, db FLG_MENUITEM_VISIBLE | FLG_MENUITEM_BYTEVALUE | FLG_MENUITEM_MODIFY_MENU 53 53 at MENUITEM.bType, db TYPE_MENUITEM_MULTICHOICE 54 54 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw NULL … … 57 57 at MENUITEM.itemValue + ITEM_VALUE.rgwChoiceToValueLookup, dw g_rgwChoiceToValueLookupForDevice 58 58 at MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup, dw g_rgszValueToStringLookupForDevice 59 at MENUITEM.itemValue + ITEM_VALUE.fnValueWriter, dw IdeControllerMenu_WriteDevice 59 60 iend 60 61 … … 89 90 iend 90 91 92 g_MenuitemIdeControllerSerialCOM: 93 istruc MENUITEM 94 at MENUITEM.fnActivate, dw Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI 95 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteLookupValueStringToBufferInESDIfromUnshiftedItemInDSSI 96 at MENUITEM.szName, dw g_szItemSerialCOM 97 at MENUITEM.szQuickInfo, dw g_szNfoIdeSerialCOM 98 at MENUITEM.szHelp, dw g_szHelpIdeSerialCOM 99 at MENUITEM.bFlags, db FLG_MENUITEM_MODIFY_MENU 100 at MENUITEM.bType, db TYPE_MENUITEM_MULTICHOICE 101 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw NULL 102 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgDevice 103 at MENUITEM.itemValue + ITEM_VALUE.szMultichoice, dw g_szSerialCOMChoice 104 at MENUITEM.itemValue + ITEM_VALUE.rgwChoiceToValueLookup, dw NULL 105 at MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup, dw g_rgszValueToStringLookupForCOM 106 at MENUITEM.itemValue + ITEM_VALUE.fnValueReader, dw IdeControllerMenu_SerialReadCOM 107 at MENUITEM.itemValue + ITEM_VALUE.fnValueWriter, dw IdeControllerMenu_SerialWriteCOM 108 iend 109 110 g_MenuitemIdeControllerSerialPort: 111 istruc MENUITEM 112 at MENUITEM.fnActivate, dw Menuitem_ActivateHexInputForMenuitemInDSSI 113 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteHexValueStringToBufferInESDIfromItemInDSSI 114 at MENUITEM.szName, dw g_szItemSerialPort 115 at MENUITEM.szQuickInfo, dw g_szNfoIdeSerialPort 116 at MENUITEM.szHelp, dw g_szHelpIdeSerialPort 117 at MENUITEM.bFlags, db FLG_MENUITEM_MODIFY_MENU 118 at MENUITEM.bType, db TYPE_MENUITEM_HEX 119 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw NULL 120 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgIdeCmdPort 121 at MENUITEM.itemValue + ITEM_VALUE.wMinValue, dw 240h 122 at MENUITEM.itemValue + ITEM_VALUE.wMaxValue, dw 438h 123 at MENUITEM.itemValue + ITEM_VALUE.fnValueReader, dw IdeControllerMenu_SerialReadPort 124 at MENUITEM.itemValue + ITEM_VALUE.fnValueWriter, dw IdeControllerMenu_SerialWritePort 125 iend 126 127 g_MenuitemIdeControllerSerialBaud: 128 istruc MENUITEM 129 at MENUITEM.fnActivate, dw Menuitem_ActivateMultichoiceSelectionForMenuitemInDSSI 130 at MENUITEM.fnFormatValue, dw MenuitemPrint_WriteLookupValueStringToBufferInESDIfromUnshiftedItemInDSSI 131 at MENUITEM.szName, dw g_szItemSerialBaud 132 at MENUITEM.szQuickInfo, dw g_szNfoIdeSerialBaud 133 at MENUITEM.szHelp, dw g_szHelpIdeSerialBaud 134 at MENUITEM.bType, db TYPE_MENUITEM_MULTICHOICE 135 at MENUITEM.itemValue + ITEM_VALUE.wRomvarsValueOffset, dw NULL 136 at MENUITEM.itemValue + ITEM_VALUE.szDialogTitle, dw g_szDlgDevice 137 at MENUITEM.itemValue + ITEM_VALUE.szMultichoice, dw g_szSerialBaudChoice 138 at MENUITEM.itemValue + ITEM_VALUE.rgwChoiceToValueLookup, dw NULL 139 at MENUITEM.itemValue + ITEM_VALUE.rgszValueToStringLookup, dw g_rgszValueToStringLookupForBaud 140 at MENUITEM.itemValue + ITEM_VALUE.fnValueReader, dw IdeControllerMenu_SerialReadBaud 141 at MENUITEM.itemValue + ITEM_VALUE.fnValueWriter, dw IdeControllerMenu_SerialWriteBaud 142 iend 143 91 144 g_MenuitemIdeControllerEnableInterrupt: 92 145 istruc MENUITEM … … 135 188 dw g_szValueCfgDeviceSerial 136 189 190 g_rgszValueToStringLookupForCOM: 191 dw g_szValueCfgCOM1 192 dw g_szValueCfgCOM2 193 dw g_szValueCfgCOM3 194 dw g_szValueCfgCOM4 195 dw g_szValueCfgCOM5 196 dw g_szValueCfgCOM6 197 dw g_szValueCfgCOM7 198 dw g_szValueCfgCOM8 199 dw g_szValueCfgCOM9 200 dw g_szValueCfgCOMA 201 dw g_szValueCfgCOMB 202 dw g_szValueCfgCOMC 203 dw g_szValueCfgCOMx 204 205 g_rgszValueToStringLookupForBaud: 206 dw g_szValueCfgBaud2400 207 dw g_szValueCfgBaud9600 208 dw g_szValueCfgBaud38_4 209 dw g_szValueCfgBaud115_2 210 211 g_wPrintBaud: 212 dw DEVICE_SERIAL_PRINTBAUD_2400 213 dw DEVICE_SERIAL_PRINTBAUD_9600 214 dw DEVICE_SERIAL_PRINTBAUD_38_4 215 dw DEVICE_SERIAL_PRINTBAUD_115_2 137 216 138 217 ; Section containing code … … 161 240 lea ax, [bx+IDEVARS.wPort] 162 241 mov [cs:g_MenuitemIdeControllerCommandBlockAddress+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax 163 242 mov [cs:g_MenuitemIdeControllerSerialPort+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax 243 mov [cs:g_MenuitemIdeControllerSerialCOM+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax 244 mov [cs:g_MenuitemIdeControllerSerialBaud+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax 245 ;; baud also modifies the next two bytes (print chars in wPortCtrl), but it never reads them 246 164 247 lea ax, [bx+IDEVARS.wPortCtrl] 165 248 mov [cs:g_MenuitemIdeControllerControlBlockAddress+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax … … 168 251 mov [cs:g_MenuitemIdeControllerEnableInterrupt+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax 169 252 mov [cs:g_MenuitemIdeControllerIdeIRQ+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset], ax 253 170 254 ret 171 255 … … 185 269 pop ds 186 270 call .EnableOrDisableIRQ 271 call .EnableOrDisableSerial 187 272 mov si, g_MenupageForIdeControllerMenu 188 273 jmp Menupage_ChangeToNewMenupageInDSSI … … 226 311 ret 227 312 228 313 .EnableOrDisableSerial: 314 mov bx, g_MenuitemIdeControllerCommandBlockAddress 315 call .DisableMenuitemFromCSBX 316 317 mov bx, g_MenuitemIdeControllerControlBlockAddress 318 call .DisableMenuitemFromCSBX 319 320 mov bx, g_MenuitemIdeControllerEnableInterrupt 321 call .DisableMenuitemFromCSBX 322 323 mov bx, g_MenuitemIdeControllerSerialBaud 324 call .DisableMenuitemFromCSBX 325 326 mov bx, g_MenuitemIdeControllerSerialCOM 327 call .DisableMenuitemFromCSBX 328 329 mov bx, g_MenuitemIdeControllerSerialPort 330 call .DisableMenuitemFromCSBX 331 332 mov bx, [cs:g_MenuitemIdeControllerDevice+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset] 333 call Buffers_GetRomvarsValueToAXfromOffsetInBX 334 cmp al,DEVICE_SERIAL_PORT 335 jnz .DisableAllSerial 336 337 mov bx, g_MenuitemIdeControllerSerialCOM 338 call .EnableMenuitemFromCSBX 339 340 mov bx, g_MenuitemIdeControllerSerialBaud 341 call .EnableMenuitemFromCSBX 342 343 mov bx, [cs:g_MenuitemIdeControllerSerialCOM+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset] 344 call Buffers_GetRomvarsValueToAXfromOffsetInBX 345 mov bx, g_MenuitemIdeControllerSerialPort 346 cmp al,'x' 347 jz .EnableMenuitemFromCSBX 348 jmp .DisableMenuitemFromCSBX 349 350 .DisableAllSerial: 351 352 mov bx, g_MenuitemIdeControllerCommandBlockAddress 353 call .EnableMenuitemFromCSBX 354 355 mov bx, g_MenuitemIdeControllerControlBlockAddress 356 call .EnableMenuitemFromCSBX 357 358 mov bx, g_MenuitemIdeControllerEnableInterrupt 359 call .EnableMenuitemFromCSBX 360 361 ret 362 229 363 ;-------------------------------------------------------------------- 230 364 ; MENUITEM activation functions (.fnActivate) … … 250 384 call MasterSlaveMenu_InitializeToDrvparamsOffsetInBX 251 385 jmp MasterSlaveMenu_EnterMenuOrModifyItemVisibility 386 387 PackedCOMPortAddresses: ; COM1 - COMC (or COM12) 388 db (DEVICE_SERIAL_COM1 - DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT) >> 1 389 db (DEVICE_SERIAL_COM2 - DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT) >> 1 390 db (DEVICE_SERIAL_COM3 - DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT) >> 1 391 db (DEVICE_SERIAL_COM4 - DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT) >> 1 392 db (DEVICE_SERIAL_COM5 - DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT) >> 1 393 db (DEVICE_SERIAL_COM6 - DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT) >> 1 394 db (DEVICE_SERIAL_COM7 - DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT) >> 1 395 db (DEVICE_SERIAL_COM8 - DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT) >> 1 396 db (DEVICE_SERIAL_COM9 - DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT) >> 1 397 db (DEVICE_SERIAL_COMA - DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT) >> 1 398 db (DEVICE_SERIAL_COMB - DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT) >> 1 399 db (DEVICE_SERIAL_COMC - DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT) >> 1 400 db 0 ; null terminated 401 402 ;------------------------------------------------------------------------------------------ 403 ; 404 ; Reader/Writer Routines 405 ; 406 ; For serial drives, we pack the port number and baud rate into a single byte, and thus 407 ; we need to take care to properly read/write just the bits we need. In addition, since 408 ; we use the Port/PortCtrl bytes in a special way for serial drives, we need to properly 409 ; default the values stored in both these words when switching in and out of the Serial 410 ; device choice. 411 ; 412 ; Writers: 413 ; Parameters: 414 ; AX: Value that the MENUITEM system was interacting with 415 ; ES:DI: ROMVARS location where the value is to be stored 416 ; DS:SI: MENUITEM pointer 417 ; Returns: 418 ; AX: Value to actually write to ROMVARS 419 ; Corrupts registers: 420 ; AX 421 ; 422 ; Readers: 423 ; Parameters: 424 ; AX: Value read from the ROMVARS location 425 ; ES:DI: ROMVARS location where the value was just read from 426 ; DS:SI: MENUITEM pointer 427 ; Returns: 428 ; AX: Value that the MENUITEM system will interact with and display 429 ; Corrupts registers: 430 ; AX 431 ; 432 433 ; 434 ; No change to Device byte, but use this opportunity to change defaults stored in wPort and wPortCtrl if we are 435 ; changing in/out of a Serial device (since we use these bytes in radically different ways). Also clear the 436 ; interrupt informtion is we are moving into Serial (since the serial device does not use interrupts). 437 ; 438 ALIGN JUMP_ALIGN 439 IdeControllerMenu_WriteDevice: 440 push ax 441 push bx 442 push di 443 444 mov bl,[es:di] ; what is the current Device? 445 446 add di,IDEVARS.wPort - IDEVARS.bDevice ; Get ready to set the Port addresses 447 448 cmp al,DEVICE_SERIAL_PORT 449 jz .changingToSerial 450 451 cmp bl,DEVICE_SERIAL_PORT 452 jnz .done ; if we weren't Serial before, nothing to do 453 454 .changingFromSerial: 455 cmp al,DEVICE_16BIT_ATA 456 jl .xtide 457 458 mov ax,DEVICE_ATA_DEFAULT_PORT ; Defaults for 16-bit and better ATA devices 459 mov bx,DEVICE_ATA_DEFAULT_PORTCTRL 460 jmp .writeNonSerial 461 462 .xtide: 463 mov ax,DEVICE_XTIDE_DEFAULT_PORT ; Defaults for 8-bit XTIDE devices 464 mov bx,DEVICE_XTIDE_DEFAULT_PORTCTRL 465 466 .writeNonSerial: 467 mov [es:di],ax ; Store defaults in IDEVARS.wPort and IDEVARS.wPortCtrl 468 mov [es:di+2],bx 469 470 jmp .done 471 472 .changingToSerial: 473 cmp bl,DEVICE_SERIAL_PORT 474 jz .done ; if we were already serial, nothing to do 475 476 mov ax,DEVICE_SERIAL_DEFAULT_COM 477 call IdeControllerMenu_SerialWriteCOM 478 mov [es:di],ax 479 480 mov ax,DEVICE_SERIAL_DEFAULT_BAUD 481 call IdeControllerMenu_SerialWriteBaud 482 mov [es:di],ax 483 484 add di,IDEVARS.bIRQ - IDEVARS.wPort ; clear out the interrupt information, we don't use interrupts 485 mov al,0 486 mov [es:di],al 487 488 .done: 489 pop di 490 pop bx 491 pop ax 492 493 ret 494 495 ; 496 ; "COMn" ASCII characer -> Numeric COM number 497 ; 498 ALIGN JUMP_ALIGN 499 IdeControllerMenu_SerialReadCOM: 500 xor ah,ah ; clear out packedportbaud value 501 502 cmp al,'x' ; base this on the ASCII character used to print 503 jz .custom 504 505 cmp al,'A' 506 jae .over10 507 508 sub al, '0'+1 ; convert ASCII value '0'-'9' to numeric 509 ret 510 511 .over10: 512 sub al, 'A'-10+1 ; convert ASCII value 'A'-'C' to numeric 513 ret 514 515 .custom: 516 mov al, 12 ; convert ASCII value 'x' (for custom) to numeric 517 ret 518 519 ; 520 ; Numeric COM number -> Packed port address, and update ASCII character for printing "COMn" 521 ; 522 ALIGN JUMP_ALIGN 523 IdeControllerMenu_SerialWriteCOM: 524 push bx 525 526 cmp al,12 ; custom? 527 jge .custom 528 529 mov bx,ax ; lookup packed port address based on COM address 530 mov ah,[cs:bx+PackedCOMPortAddresses] 531 532 cmp al,9 ; COMA or higher, but not custom 533 jge .atorabove10 534 535 add al, '0'+1 ; convert numeric to ASCII '1' to '9' 536 jmp IdeControllerMenu_SerialWriteCOM_PackAndRet 537 538 .custom: 539 mov al,'x' ; ASCII value 'x' for custom 540 mov ah,0 ; 240h is default custom value 541 jmp IdeControllerMenu_SerialWriteCOM_PackAndRet 542 543 .atorabove10: 544 add al, 'A'-10+1 ; convert numeric to ASCII 'A' to 'C' 545 546 IdeControllerMenu_SerialWriteCOM_PackAndRet: 547 mov bl,[es:di+1] ; read baud rate bits 548 and bl,DEVICE_SERIAL_PACKEDPORTANDBAUD_BAUDMASK 549 or ah,bl 550 551 pop bx 552 ret 553 554 ; 555 ; Packed Baud -> Numeric Baud 556 ; 557 ALIGN JUMP_ALIGN 558 IdeControllerMenu_SerialReadBaud: 559 xchg al,ah 560 and ax,DEVICE_SERIAL_PACKEDPORTANDBAUD_BAUDMASK ; also clears high order byte 561 ret 562 563 ; 564 ; Numeric Baud -> Packed Baud, also update ASCII printing characters for baud rate 565 ; 566 ALIGN JUMP_ALIGN 567 IdeControllerMenu_SerialWriteBaud: 568 and ax,DEVICE_SERIAL_PACKEDPORTANDBAUD_BAUDBITS ; ensure we only have the bits we want 569 570 push bx 571 572 mov bx,ax ; lookup printing word for wPortCtrl 573 shl bx,1 574 mov bx,[cs:bx+g_wPrintBaud] 575 mov [es:di+2],bx 576 577 xchg al,ah ; or in port bits 578 mov bx,[es:di] 579 and bh,DEVICE_SERIAL_PACKEDPORTANDBAUD_PORTMASK 580 or ax,bx 581 582 pop bx 583 ret 584 585 ; 586 ; Packed Port -> Numeric Port 587 ; 588 ALIGN JUMP_ALIGN 589 IdeControllerMenu_SerialReadPort: 590 mov al,ah 591 and ax,DEVICE_SERIAL_PACKEDPORTANDBAUD_PORTMASK ; note that this clears AH 592 shl ax,1 593 add ax,DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT 594 ret 595 596 ; 597 ; Numeric Port -> Packed Port, convert from Custom to a defined COM port if we match one 598 ; 599 ALIGN JUMP_ALIGN 600 IdeControllerMenu_SerialWritePort: 601 push bx 602 603 sub ax,DEVICE_SERIAL_PACKEDPORTANDBAUD_STARTINGPORT ; convert from numeric to packed port number 604 shr ax,1 605 and al,DEVICE_SERIAL_PACKEDPORTANDBAUD_PORTMASK 606 607 mov bx,PackedCOMPortAddresses ; loop, looking for port address in known COM address list 608 .next: 609 mov ah,[cs:bx] 610 inc bx 611 test ah,ah 612 jz .notfound 613 cmp al,ah 614 jnz .next 615 616 sub bx,PackedCOMPortAddresses + 1 ; FOUND!, +1 since we already incremented 617 mov ax,bx 618 pop bx 619 jmp IdeControllerMenu_SerialWriteCOM ; if found, use that logic to get ASCII character 620 621 .notfound: 622 xchg ah,al 623 mov al,'x' 624 jmp IdeControllerMenu_SerialWriteCOM_PackAndRet 625 626
Note:
See TracChangeset
for help on using the changeset viewer.