Changeset 567 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages
- Timestamp:
- May 26, 2014, 1:25:15 PM (11 years ago)
- google:author:
- krille_n_@hotmail.com
- Location:
- trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/BootMenuSettingsMenu.asm
r526 r567 235 235 ALIGN JUMP_ALIGN 236 236 .EnableMenuitemFromCSBX: 237 or BYTE [cs:bx+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE 238 ret 237 jmp EnableMenuitemFromCSBX 239 238 240 239 ALIGN JUMP_ALIGN 241 240 .DisableMenuitemFromCSBX: 242 and BYTE [cs:bx+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE 243 ret 241 jmp DisableMenuitemFromCSBX 244 242 245 243 -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/ConfigurationMenu.asm
r526 r567 217 217 .DisableAllIdeControllerMenuitems: 218 218 mov cx, MAX_ALLOWED_IDE_CONTROLLERS-1 219 mov bx, g_MenuitemConfigurationSecondaryIdeController 220 ALIGN JUMP_ALIGN 221 .DisableNextIdeControllerMenuitem: 222 call .DisableMenuitemFromCSBX 223 add bx, BYTE MENUITEM_size 224 loop .DisableNextIdeControllerMenuitem 225 ret 219 mov ax, DisableMenuitemFromCSBX 220 jmp SHORT .Go 226 221 227 222 ALIGN JUMP_ALIGN … … 230 225 dec cx ; Primary always enabled 231 226 jz SHORT .PrimaryControllerAlreadyEnabled 227 mov ax, EnableMenuitemFromCSBX 228 .Go: 232 229 mov bx, g_MenuitemConfigurationSecondaryIdeController 233 230 ALIGN JUMP_ALIGN 234 .Enable NextIdeControllerMenuitem:235 call .EnableMenuitemFromCSBX231 .EnableOrDisableNextIdeControllerMenuitem: 232 call ax 236 233 add bx, BYTE MENUITEM_size 237 loop .Enable NextIdeControllerMenuitem234 loop .EnableOrDisableNextIdeControllerMenuitem 238 235 .PrimaryControllerAlreadyEnabled: 239 236 ret … … 288 285 call Buffers_GetRomvarsFlagsToAX 289 286 mov bx, g_MenuitemConfigurationIdleTimeout 290 test ax, FLG_ROMVARS_MODULE_ FEATURE_SETS287 test ax, FLG_ROMVARS_MODULE_POWER_MANAGEMENT 291 288 jz SHORT .DisableMenuitemFromCSBX 292 289 ; Fall to .EnableMenuitemFromCSBX … … 305 302 ALIGN JUMP_ALIGN 306 303 .EnableMenuitemFromCSBX: 307 or BYTE [cs:bx+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE 308 ret 304 jmp EnableMenuitemFromCSBX 309 305 310 306 ALIGN JUMP_ALIGN 311 307 .DisableMenuitemFromCSBX: 312 and BYTE [cs:bx+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE 313 ret 314 308 jmp DisableMenuitemFromCSBX 315 309 316 310 … … 419 413 jnz .next 420 414 mov si, di 421 jmp .next415 SKIP2B f 422 416 423 417 .notSerial: -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/IdeControllerMenu.asm
r546 r567 242 242 dw NULL 243 243 244 SERIAL_DEFAULT_CUSTOM_PORT EQU 300h ; can't be any of the pre-defined COM values 245 246 PackedCOMPortAddresses: ; COM1 - COMC (or COM12) 247 db SERIAL_COM1_IOADDRESS >> 2 244 SERIAL_DEFAULT_CUSTOM_PORT EQU 300h ; can't be any of the pre-defined COM values 245 SERIAL_DEFAULT_COM EQU '1' 246 SERIAL_DEFAULT_BAUD EQU ((115200 / 9600) & 0xff) 247 248 PackedCOMPortAddresses: ; COM1 - COMC (or COM12) 249 db SERIAL_COM1_IOADDRESS >> 2 248 250 db SERIAL_COM2_IOADDRESS >> 2 249 251 db SERIAL_COM3_IOADDRESS >> 2 … … 258 260 db SERIAL_COMC_IOADDRESS >> 2 259 261 db SERIAL_DEFAULT_CUSTOM_PORT >> 2 ; must be last entry (see reader/writer routines) 260 SERIAL_DEFAULT_COM EQU '1'261 262 262 263 g_rgbChoiceToValueLookupForBaud: … … 279 280 dw g_szValueCfgBaud2400 280 281 dw NULL 281 SERIAL_DEFAULT_BAUD EQU ((115200 / 9600) & 0xff)282 282 283 283 ; Section containing code … … 339 339 push cs 340 340 pop ds 341 call .EnableOrDisableCommandBlockPort 341 342 call .EnableOrDisableControlBlockPort 342 343 call .DisableIRQchannelSelection … … 345 346 mov si, g_MenupageForIdeControllerMenu 346 347 jmp Menupage_ChangeToNewMenupageInDSSI 348 349 350 ;-------------------------------------------------------------------- 351 ; .EnableOrDisableCommandBlockPort 352 ; Parameters: 353 ; SS:BP: Menu handle 354 ; Returns: 355 ; Nothing 356 ; Corrupts registers: 357 ; AX, BX 358 ;-------------------------------------------------------------------- 359 ALIGN JUMP_ALIGN 360 .EnableOrDisableCommandBlockPort: 361 mov bx, [cs:g_MenuitemIdeControllerDevice+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset] 362 call Buffers_GetRomvarsValueToAXfromOffsetInBX 363 mov bx, g_MenuitemIdeControllerCommandBlockAddress 364 cmp al, DEVICE_SERIAL_PORT 365 je SHORT .DisableMenuitemFromCSBX 366 jmp SHORT .EnableMenuitemFromCSBX 347 367 348 368 … … 385 405 call Buffers_GetRomvarsValueToAXfromOffsetInBX 386 406 mov bx, g_MenuitemIdeControllerEnableInterrupt 387 cmp al, DEVICE_8BIT_XT IDE_REV2407 cmp al, DEVICE_8BIT_XTCF_PIO8 388 408 jae SHORT .DisableMenuitemFromCSBX 389 409 390 call .EnableMenuitemFromCSBX410 call EnableMenuitemFromCSBX 391 411 ; Fall to .EnableOrDisableIRQchannelSelection 392 412 … … 424 444 ALIGN JUMP_ALIGN 425 445 .DisableMenuitemFromCSBX: 426 and BYTE [cs:bx+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE 427 ret 446 jmp DisableMenuitemFromCSBX 428 447 429 448 ALIGN JUMP_ALIGN 430 449 .EnableMenuitemFromCSBX: 431 or BYTE [cs:bx+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE 432 ret 450 jmp EnableMenuitemFromCSBX 433 451 434 452 435 453 .EnableOrDisableSerial: 436 454 mov bx, g_MenuitemIdeControllerSerialBaud 437 call .DisableMenuitemFromCSBX455 call DisableMenuitemFromCSBX 438 456 439 457 mov bx, g_MenuitemIdeControllerSerialCOM 440 call .DisableMenuitemFromCSBX458 call DisableMenuitemFromCSBX 441 459 442 460 mov bx, g_MenuitemIdeControllerSerialPort 443 call .DisableMenuitemFromCSBX461 call DisableMenuitemFromCSBX 444 462 445 463 mov bx, [cs:g_MenuitemIdeControllerDevice+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset] 446 464 call Buffers_GetRomvarsValueToAXfromOffsetInBX 447 465 cmp al, DEVICE_SERIAL_PORT 448 jn z.DisableAllSerial466 jne .DisableAllSerial 449 467 450 468 mov bx, g_MenuitemIdeControllerSerialCOM 451 call .EnableMenuitemFromCSBX469 call EnableMenuitemFromCSBX 452 470 453 471 mov bx, g_MenuitemIdeControllerSerialBaud 454 call .EnableMenuitemFromCSBX472 call EnableMenuitemFromCSBX 455 473 456 474 mov bx, [cs:g_MenuitemIdeControllerSerialCOM+MENUITEM.itemValue+ITEM_VALUE.wRomvarsValueOffset] 457 475 call Buffers_GetRomvarsValueToAXfromOffsetInBX 458 476 mov bx, g_MenuitemIdeControllerSerialPort 459 cmp al, 'x'460 j z.EnableMenuitemFromCSBX461 jmp .DisableMenuitemFromCSBX477 cmp al, 'x' 478 je SHORT .EnableMenuitemFromCSBX 479 jmp SHORT .DisableMenuitemFromCSBX 462 480 .DisableAllSerial: 463 481 ret … … 485 503 DisplayMasterSlaveMenu: 486 504 ; 487 ; block mode is not supported on serial drives, disable/enable the optionas appropriate505 ; "Block Mode Transfers" and "Internal Write Cache" are not supported on serial drives, disable/enable the options as appropriate 488 506 ; 489 507 push bx … … 491 509 call Buffers_GetRomvarsValueToAXfromOffsetInBX 492 510 mov bx, g_MenuitemMasterSlaveBlockModeTransfers 493 cmp al,DEVICE_SERIAL_PORT 494 jz .isSerial 495 or BYTE [cs:bx+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE 511 512 cmp al, DEVICE_SERIAL_PORT 513 je .isSerial 514 515 call EnableMenuitemFromCSBX 516 mov bx, g_MenuitemMasterSlaveWriteCache 517 call EnableMenuitemFromCSBX 496 518 jmp .isDone 519 497 520 .isSerial: 498 and BYTE [cs:bx+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE 521 call DisableMenuitemFromCSBX 522 mov bx, g_MenuitemMasterSlaveWriteCache 523 call DisableMenuitemFromCSBX 524 499 525 .isDone: 500 526 pop bx … … 515 541 ; Writers: 516 542 ; Parameters: 517 ; AX:Value that the MENUITEM system was interacting with518 ; ES:DI: 519 ; DS:SI:MENUITEM pointer543 ; AX: Value that the MENUITEM system was interacting with 544 ; ES:DI: ROMVARS location where the value is to be stored 545 ; DS:SI: MENUITEM pointer 520 546 ; Returns: 521 547 ; AX: Value to actually write to ROMVARS … … 525 551 ; Readers: 526 552 ; Parameters: 527 ; AX:Value read from the ROMVARS location528 ; ES:DI: 529 ; DS:SI:MENUITEM pointer553 ; AX: Value read from the ROMVARS location 554 ; ES:DI: ROMVARS location where the value was just read from 555 ; DS:SI: MENUITEM pointer 530 556 ; Returns: 531 557 ; AX: Value that the MENUITEM system will interact with and display … … 535 561 ALIGN JUMP_ALIGN 536 562 WriterForXTCFwindow: 537 mov al, ah 563 xor al, al 564 SKIP2B f 565 ReaderForXTCFwindow: 538 566 xor ah, ah 539 ret 540 541 ALIGN JUMP_ALIGN 542 ReaderForXTCFwindow: 543 mov ah, al 544 xor al, al 567 xchg al, ah 545 568 ret 546 569 … … 552 575 ALIGN JUMP_ALIGN 553 576 IdeControllerMenu_WriteDevice: 554 push bx 555 push di 556 push di 557 push ax 558 559 ; Note! AL is the choice index, not device code 560 shl ax, 1 ; Selection to device code 561 mov bl, [es:di] ; what is the current Device we are changing from? 562 sub di, BYTE IDEVARS.bDevice - IDEVARS.wBasePort ; Get ready to set the Port addresses 563 cmp al, DEVICE_SERIAL_PORT 564 je SHORT .changingToSerial 565 cmp al, DEVICE_8BIT_JRIDE_ISA 566 je SHORT .ChangingToJrIdeIsa 567 cmp al, DEVICE_8BIT_ADP50L 568 je SHORT .ChangingToADP50L 569 570 ; Restore ports to default values 571 cmp al, DEVICE_8BIT_ATA ; Standard ATA controllers, including 8-bit mode 572 mov ax, DEVICE_ATA_PRIMARY_PORT ; Defaults for 16-bit and better ATA devices 573 mov bx, DEVICE_ATA_PRIMARY_PORTCTRL 574 jbe SHORT .writeNonSerial 575 576 mov ax, DEVICE_XTIDE_DEFAULT_PORT ; Defaults for 8-bit XTIDE and XT-CF devices 577 mov bx, DEVICE_XTIDE_DEFAULT_PORTCTRL 578 579 .writeNonSerial: 580 stosw ; Store defaults in IDEVARS.wBasePort and IDEVARS.wBasePortCtrl 581 xchg bx, ax 582 stosw 583 jmp SHORT .done 577 push bx 578 push di 579 push ax 580 581 ; Note! AL is the choice index, not device code 582 shl ax, 1 ; Selection to device code 583 mov bl, [es:di] ; what is the current Device we are changing from? 584 sub di, BYTE IDEVARS.bDevice - IDEVARS.wBasePort ; Get ready to set the Port addresses 585 cmp al, DEVICE_SERIAL_PORT 586 je SHORT .ChangingToSerial 587 cmp al, DEVICE_8BIT_JRIDE_ISA 588 je SHORT .ChangingToJrIdeIsa 589 cmp al, DEVICE_8BIT_ADP50L 590 je SHORT .ChangingToADP50L 591 592 ; Restore ports to default values 593 cmp al, DEVICE_8BIT_ATA ; Standard ATA controllers, including 8-bit mode 594 mov ax, DEVICE_ATA_PRIMARY_PORT ; Defaults for 16-bit and better ATA devices 595 mov bx, DEVICE_ATA_PRIMARY_PORTCTRL 596 jbe SHORT .WriteNonSerial 597 598 mov ax, DEVICE_XTIDE_DEFAULT_PORT ; Defaults for 8-bit XTIDE and XT-CF devices 599 mov bx, DEVICE_XTIDE_DEFAULT_PORTCTRL 600 601 .WriteNonSerial: 602 stosw ; Store defaults in IDEVARS.wBasePort and IDEVARS.wBasePortCtrl 603 xchg bx, ax 604 stosw 605 jmp SHORT .Done 584 606 585 607 .ChangingToJrIdeIsa: 586 587 608 mov ah, JRIDE_DEFAULT_SEGMENT_ADDRESS >> 8 609 SKIP2B bx 588 610 589 611 .ChangingToADP50L: 590 mov ah, ADP50L_DEFAULT_BIOS_SEGMENT_ADDRESS >> 8 591 xor al, al 592 xor bx, bx 593 jmp SHORT .writeNonSerial 594 595 .changingToSerial: 596 cmp bl, DEVICE_SERIAL_PORT 597 je SHORT .done ; if we were already serial, nothing to do 598 599 mov BYTE [es:di+IDEVARS.bSerialBaud-IDEVARS.wBasePort], SERIAL_DEFAULT_BAUD 600 601 mov al, SERIAL_DEFAULT_COM 602 sub di, IDEVARS.wBasePort - IDEVARS.bSerialCOMPortChar 603 call IdeControllerMenu_SerialWriteCOM 604 stosb 605 606 .done: 607 pop ax 608 pop di ; IDEVARS.bDevice 609 pop di 610 pop bx 611 ret 612 mov ah, ADP50L_DEFAULT_BIOS_SEGMENT_ADDRESS >> 8 613 xor al, al 614 xor bx, bx 615 jmp SHORT .WriteNonSerial 616 617 .ChangingToSerial: 618 cmp bl, DEVICE_SERIAL_PORT 619 je SHORT .Done ; if we were already serial, nothing to do 620 621 mov BYTE [es:di+IDEVARS.bSerialBaud-IDEVARS.wBasePort], SERIAL_DEFAULT_BAUD 622 623 mov al, SERIAL_DEFAULT_COM 624 sub di, IDEVARS.wBasePort - IDEVARS.bSerialCOMPortChar 625 call IdeControllerMenu_SerialWriteCOM 626 stosb 627 628 .Done: 629 pop ax 630 pop di ; IDEVARS.bDevice 631 pop bx 632 ret 612 633 613 634 ; … … 617 638 ALIGN JUMP_ALIGN 618 639 IdeControllerMenu_SerialWriteCOM: 619 620 621 622 623 mov si,g_rgbChoiceToValueLookupForCOM624 mov bx,PackedCOMPortAddresses640 push ax 641 push bx 642 push si 643 644 mov si, g_rgbChoiceToValueLookupForCOM 645 mov bx, PackedCOMPortAddresses 625 646 626 647 .loop: 627 mov ah,[bx]628 629 cmp ah,(SERIAL_DEFAULT_CUSTOM_PORT >> 2)630 jz.notFound631 632 cmp al,[si]633 jz.found634 635 636 637 638 639 648 mov ah, [bx] 649 650 cmp ah, (SERIAL_DEFAULT_CUSTOM_PORT >> 2) 651 je .notFound 652 653 cmp al, [si] 654 je .found 655 656 inc si 657 inc si 658 inc bx 659 660 jmp .loop 640 661 641 662 .notFound: 642 663 mov al, 'x' 643 664 644 665 .found: 645 646 647 648 649 650 651 666 mov [es:di+IDEVARS.bSerialPort-IDEVARS.bSerialCOMPortChar], ah 667 668 pop si 669 pop bx 670 pop ax 671 672 ret 652 673 653 674 … … 657 678 ALIGN JUMP_ALIGN 658 679 IdeControllerMenu_SerialReadPort: 659 xor ah,ah660 661 680 xor ah, ah 681 eSHL_IM ax, 2 682 ret 662 683 663 684 ; … … 667 688 ALIGN JUMP_ALIGN 668 689 IdeControllerMenu_SerialWritePort: 669 670 671 672 673 and al,0feh ; force 8-byte boundary674 675 mov si,g_rgbChoiceToValueLookupForCOM676 mov bx,PackedCOMPortAddresses ; loop, looking for port address in known COM address list690 push bx 691 push si 692 693 eSHR_IM ax, 2 694 and al, 0feh ; force 8-byte boundary 695 696 mov si, g_rgbChoiceToValueLookupForCOM 697 mov bx, PackedCOMPortAddresses ; loop, looking for port address in known COM address list 677 698 678 699 .loop: 679 mov ah,[si]680 cmp ah,'x'681 jz.found682 683 cmp al,[bx]684 jz.found685 686 687 688 689 690 700 mov ah, [si] 701 cmp ah, 'x' 702 je .found 703 704 cmp al, [bx] 705 je .found 706 707 inc si 708 inc si 709 inc bx 710 711 jmp .loop 691 712 692 713 .found: 693 694 695 696 697 698 699 714 mov [es:di+IDEVARS.bSerialCOMPortChar-IDEVARS.bSerialPort], ah 715 716 pop si 717 pop bx 718 719 ret 720 -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/MasterSlaveMenu.asm
r548 r567 290 290 ; Enable both 291 291 mov bx, g_MenuitemMasterSlaveUserCHS 292 call .EnableMenuitemFromCSBX292 call EnableMenuitemFromCSBX 293 293 mov bx, g_MenuitemMasterSlaveUserLBA 294 jmp .EnableMenuitemFromCSBX294 jmp SHORT .EnableMenuitemFromCSBX 295 295 296 296 ALIGN JUMP_ALIGN 297 297 .EnableCHSandDisableLBA: 298 298 mov bx, g_MenuitemMasterSlaveUserCHS 299 call .EnableMenuitemFromCSBX299 call EnableMenuitemFromCSBX 300 300 mov bx, g_MenuitemMasterSlaveUserLBA 301 jmp .DisableMenuitemFromCSBX301 jmp SHORT .DisableMenuitemFromCSBX 302 302 303 303 ALIGN JUMP_ALIGN 304 304 .DisableCHSandEnableLBA: 305 305 mov bx, g_MenuitemMasterSlaveUserLBA 306 call .EnableMenuitemFromCSBX306 call EnableMenuitemFromCSBX 307 307 mov bx, g_MenuitemMasterSlaveUserCHS 308 jmp .DisableMenuitemFromCSBX308 jmp SHORT .DisableMenuitemFromCSBX 309 309 310 310 … … 328 328 329 329 mov bx, g_MenuitemMasterSlaveCylinders 330 call .EnableMenuitemFromCSBX330 call EnableMenuitemFromCSBX 331 331 mov bx, g_MenuitemMasterSlaveHeads 332 call .EnableMenuitemFromCSBX332 call EnableMenuitemFromCSBX 333 333 mov bx, g_MenuitemMasterSlaveSectors 334 334 jmp SHORT .EnableMenuitemFromCSBX … … 337 337 .DisableCHandS: 338 338 mov bx, g_MenuitemMasterSlaveCylinders 339 call .DisableMenuitemFromCSBX339 call DisableMenuitemFromCSBX 340 340 mov bx, g_MenuitemMasterSlaveHeads 341 call .DisableMenuitemFromCSBX341 call DisableMenuitemFromCSBX 342 342 mov bx, g_MenuitemMasterSlaveSectors 343 343 jmp SHORT .DisableMenuitemFromCSBX … … 377 377 ALIGN JUMP_ALIGN 378 378 .EnableMenuitemFromCSBX: 379 or BYTE [cs:bx+MENUITEM.bFlags], FLG_MENUITEM_VISIBLE 380 ret 379 jmp EnableMenuitemFromCSBX 381 380 382 381 ALIGN JUMP_ALIGN 383 382 .DisableMenuitemFromCSBX: 384 and BYTE [cs:bx+MENUITEM.bFlags], ~FLG_MENUITEM_VISIBLE 385 ret 383 jmp DisableMenuitemFromCSBX 386 384 387 385 … … 407 405 408 406 xchg ax, dx ; SHR 16 409 eSH IFT_IM ax, 4, shr; SHR 4 => AX = DX:AX / (1024*1024)407 eSHR_IM ax, 4 ; SHR 4 => AX = DX:AX / (1024*1024) 410 408 411 409 pop dx … … 429 427 430 428 xor dx, dx 431 eSH IFT_IM ax, 4, shl429 eSHL_IM ax, 4 432 430 xchg dx, ax ; DX:AX now holds AX * 1024 * 1024 433 431 … … 445 443 ALIGN JUMP_ALIGN 446 444 MasterSlaveMenu_WriteCHSFlag: 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 445 test word [es:di], FLG_DRVPARAMS_USERCHS 446 jnz .alreadySet 447 448 push ax 449 push di 450 push si 451 452 mov ax, MASTERSLAVE_CYLINDERS_DEFAULT 453 mov si, g_MenuitemMasterSlaveCylinders 454 call Menuitem_StoreValueFromAXtoMenuitemInDSSI 455 456 mov ax, MASTERSLAVE_HEADS_DEFAULT 457 mov si, g_MenuitemMasterSlaveHeads 458 call Menuitem_StoreValueFromAXtoMenuitemInDSSI 459 460 mov ax, MASTERSLAVE_SECTORS_DEFAULT 461 mov si, g_MenuitemMasterSlaveSectors 462 call Menuitem_StoreValueFromAXtoMenuitemInDSSI 463 464 pop si 465 pop di 466 pop ax 469 467 470 468 .alreadySet: 471 469 ret 472 470 473 471 ; … … 477 475 ALIGN JUMP_ALIGN 478 476 MasterSlaveMenu_WriteLBAFlag: 479 480 481 482 483 484 485 486 487 488 489 490 491 492 477 test word [es:di], FLG_DRVPARAMS_USERLBA 478 jnz .alreadySet 479 480 push ax 481 push di 482 push si 483 484 mov ax, MASTERSLAVE_USERLBA_DEFAULT 485 mov si, g_MenuitemMasterSlaveUserLbaValue 486 call Menuitem_StoreValueFromAXtoMenuitemInDSSI 487 488 pop si 489 pop di 490 pop ax 493 491 494 492 .alreadySet: 495 493 ret
Note:
See TracChangeset
for help on using the changeset viewer.