home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / rtl / rtl701 / rtl.dif < prev   
Encoding:
Text File  |  1993-08-28  |  22.2 KB  |  840 lines

  1. *** C:\OLD\RTL\COMMON\OBJECTS.PAS   Wed Oct 28 07:00:00 1992
  2. --- C:\NEW\RTL\COMMON\OBJECTS.PAS   Thu Mar 04 07:01:00 1993
  3. *** 1579-1585 ****
  4.           PUSH    DI
  5.           CALL    ChangeListSize
  6.           LES     DI,Self
  7. !         OR      AX,AX
  8.           JNZ     @@2
  9.           MOV     DX,stInitError
  10.           CALL    DoStreamError
  11. --- 1579-1585 ----
  12.           PUSH    DI
  13.           CALL    ChangeListSize
  14.           LES     DI,Self
  15. !         OR      AL,AL
  16.           JNZ     @@2
  17.           MOV     DX,stInitError
  18.           CALL    DoStreamError
  19.  
  20. *** 1611-1616 ****
  21. --- 1611-1617 ----
  22.       begin
  23.         AItems := MemAlloc(ALimit * SizeOf(Word));
  24.         if AItems = nil then Exit;
  25. +       FillChar(AItems^, ALimit * SizeOf(Word), 0);
  26.         if (SegCount <> 0) and (SegList <> nil) then
  27.           if SegCount > ALimit then
  28.             Move(SegList^, AItems^, ALimit * SizeOf(Word))
  29.  
  30. *** 1623-1629 ****
  31.         Term := SegCount - 1;
  32.         while Dif <= Term do
  33.         begin
  34. !         FreeMem(Ptr(SegList^[Dif], 0), BlockSize);
  35.           Inc(Dif);
  36.         end;
  37.       end
  38. --- 1624-1631 ----
  39.         Term := SegCount - 1;
  40.         while Dif <= Term do
  41.         begin
  42. !         if SegList^[Dif] <> 0 then
  43. !           FreeMem(Ptr(SegList^[Dif], 0), BlockSize);
  44.           Inc(Dif);
  45.         end;
  46.       end
  47.  
  48. *** 1634-1649 ****
  49.         while Dif <= Term do
  50.         begin
  51.           NewBlock := MemAllocSeg(BlockSize);
  52. !         if NewBlock = nil then Exit
  53.           else AItems^[Dif] := PtrRec(NewBlock).Seg;
  54.           Inc(Dif);
  55.         end;
  56.       end;
  57.       if SegCount <> 0 then FreeMem(SegList, SegCount * SizeOf(Word));
  58.       SegList := AItems;
  59.       SegCount := ALimit;
  60. !   end;
  61. !   ChangeListSize := True;
  62.   end;
  63.  
  64.   function TMemoryStream.GetPos: Longint; assembler;
  65. --- 1636-1652 ----
  66.         while Dif <= Term do
  67.         begin
  68.           NewBlock := MemAllocSeg(BlockSize);
  69. !         if NewBlock = nil then Break
  70.           else AItems^[Dif] := PtrRec(NewBlock).Seg;
  71.           Inc(Dif);
  72.         end;
  73. +       if Dif = ALimit then
  74. +         ChangeListSize := True;
  75.       end;
  76.       if SegCount <> 0 then FreeMem(SegList, SegCount * SizeOf(Word));
  77.       SegList := AItems;
  78.       SegCount := ALimit;
  79. !   end else ChangeListSize := True;
  80.   end;
  81.  
  82.   function TMemoryStream.GetPos: Longint; assembler;
  83.  
  84. *** 1752-1758 ****
  85.           PUSH    ES
  86.           PUSH    DI
  87.           CALL    ChangeListSize
  88. !         OR      AX,AX
  89.           JNZ     @@1
  90.           MOV     DX,stError
  91.           CALL    DoStreamError
  92. --- 1755-1761 ----
  93.           PUSH    ES
  94.           PUSH    DI
  95.           CALL    ChangeListSize
  96. !         OR      AL,AL
  97.           JNZ     @@1
  98.           MOV     DX,stError
  99.           CALL    DoStreamError
  100.  
  101. *** 1790-1796 ****
  102.           POP     DI
  103.           POP     ES
  104.           POP     BX
  105. !         OR      AX,AX
  106.           JNZ     @@4
  107.   @@1:    MOV     DX,stWriteError
  108.           CALL    DoStreamError
  109. --- 1793-1799 ----
  110.           POP     DI
  111.           POP     ES
  112.           POP     BX
  113. !         OR      AL,AL
  114.           JNZ     @@4
  115.   @@1:    MOV     DX,stWriteError
  116.           CALL    DoStreamError
  117.  
  118. *** C:\OLD\RTL\OWL\ODIALOGS.PAS   Wed Oct 28 07:00:00 1992
  119. --- C:\NEW\RTL\OWL\ODIALOGS.PAS   Thu Mar 04 07:01:00 1993
  120. *** 1361-1367 ****
  121.  
  122.     if (Validator <> nil) and (GetNumLines <= 1) then
  123.     begin
  124. !     GetText(Sz, TextLen);
  125.       S := StrPas(Sz);
  126.  
  127.       if ReportError then
  128. --- 1361-1371 ----
  129.  
  130.     if (Validator <> nil) and (GetNumLines <= 1) then
  131.     begin
  132. !     if TextLen > High(Sz) then
  133. !       GetText(Sz, High(Sz))
  134. !     else
  135. !       GetText(Sz, TextLen);
  136. !
  137.       S := StrPas(Sz);
  138.  
  139.       if ReportError then
  140.  
  141. *** 1635-1653 ****
  142.   var
  143.     S         : string;
  144.     Sz, OldSz : array [0..255] of Char;
  145.     StartPos, EndPos: Integer;
  146.     WasAppending: Boolean;
  147.   begin
  148.     if (Validator <> nil) and (GetNumLines <= 1) and
  149.       (Msg.wParam <> vk_Back) then
  150.     begin
  151. !     GetText(OldSz, TextLen);
  152.       GetSelection(StartPos, EndPos);
  153.       WasAppending := EndPos = StrLen(OldSz);
  154.  
  155.       DefWndProc(Msg);      { Process the new char ... }
  156.  
  157. !     GetText(Sz, TextLen);
  158.       S := StrPas(Sz);      { Validator expects a Pascal string }
  159.  
  160.       { Run the result of the edit through the validator.  If incorrect,
  161. --- 1639-1660 ----
  162.   var
  163.     S         : string;
  164.     Sz, OldSz : array [0..255] of Char;
  165. +   Len       : Integer;
  166.     StartPos, EndPos: Integer;
  167.     WasAppending: Boolean;
  168.   begin
  169.     if (Validator <> nil) and (GetNumLines <= 1) and
  170.       (Msg.wParam <> vk_Back) then
  171.     begin
  172. !     Len := TextLen;
  173. !     if Len > High(OldSz) then Len := High(OldSz);
  174. !     GetText(OldSz, Len);
  175.       GetSelection(StartPos, EndPos);
  176.       WasAppending := EndPos = StrLen(OldSz);
  177.  
  178.       DefWndProc(Msg);      { Process the new char ... }
  179.  
  180. !     GetText(Sz, Len);
  181.       S := StrPas(Sz);      { Validator expects a Pascal string }
  182.  
  183.       { Run the result of the edit through the validator.  If incorrect,
  184.  
  185. *** C:\OLD\RTL\SYS\DAPP.ASM   Wed Oct 28 07:00:00 1992
  186. --- C:\NEW\RTL\SYS\DAPP.ASM   Thu Mar 04 07:01:00 1993
  187. *** 23-28 ****
  188. --- 23-32 ----
  189.         EXTRN   ExitCode:WORD,ErrorAddr:DWORD,Test8086:BYTE
  190.         EXTRN   SaveInt21:DWORD
  191.  
  192. + ; Local workspace
  193. +
  194. + SaveInt10     DD      ?
  195. +
  196.   DATA  ENDS
  197.  
  198.   ; Run-time manager externals
  199.  
  200. *** 41-47 ****
  201.  
  202.   ; Publics
  203.  
  204. !       PUBLIC  InitTurbo
  205.  
  206.   ; CS-based variables for Ctrl-Break handling
  207.  
  208. --- 45-51 ----
  209.  
  210.   ; Publics
  211.  
  212. !       PUBLIC  InitTurbo,ExceptHalt
  213.  
  214.   ; CS-based variables for Ctrl-Break handling
  215.  
  216.  
  217. *** 86-91 ****
  218. --- 90-100 ----
  219.         ADD     DI,4
  220.         POP     CX
  221.         LOOP    @@1
  222. +       MOV     AX,dpmiGetExcept        ;Save exception 10H vector
  223. +       MOV     BL,10H
  224. +       INT     DPMI
  225. +       MOV     SaveInt10.ofs,DX
  226. +       MOV     SaveInt10.seg,CX
  227.         MOV     AX,CS                   ;Get code segment alias
  228.         ADD     AX,__AHIncr
  229.         MOV     ES,AX
  230.  
  231. *** 186-191 ****
  232. --- 195-205 ----
  233.         PUSH    AX
  234.         PUSH    CS
  235.         CALL    CloseText
  236. +       MOV     AX,dpmiSetExcept        ;Restore exception 10H vector
  237. +       MOV     BL,10H
  238. +       MOV     DX,SaveInt10.ofs
  239. +       MOV     CX,SaveInt10.seg
  240. +       INT     DPMI
  241.         MOV     DI,OFFSET SaveInt00     ;Restore interrupt vectors
  242.         MOV     SI,OFFSET SaveIntTab
  243.         MOV     CX,SaveIntCnt
  244.  
  245. *** C:\OLD\RTL\SYS\F87H.ASM   Wed Oct 28 07:00:00 1992
  246. --- C:\NEW\RTL\SYS\F87H.ASM   Thu Mar 04 07:01:00 1993
  247. *** 34-39 ****
  248. --- 34-40 ----
  249.   ; Externals
  250.  
  251.         EXTRN   PrefixSeg:WORD,Test8087:BYTE,SaveInt02:DWORD
  252. +       EXTRN   ExitCode:WORD,ErrorAddr:DWORD
  253.  
  254.   ; Local workspace
  255.  
  256.  
  257. *** 56-61 ****
  258. --- 57-65 ----
  259.   ; Externals
  260.  
  261.         EXTRN   HaltTurbo:NEAR,HaltError:NEAR,Terminate:NEAR
  262. +     IF DPMIVersion
  263. +       EXTRN   ExceptHalt:NEAR
  264. +     ENDIF
  265.  
  266.   ; Publics
  267.  
  268.  
  269. *** 72-78 ****
  270.  
  271.   ; Turn off emulation for 8087 presence test
  272.  
  273. !       NOEMUL
  274.  
  275.   ; Check if 8087 is present
  276.   ; Out AL = 8087 flag (0/1/2/3)
  277. --- 76-82 ----
  278.  
  279.   ; Turn off emulation for 8087 presence test
  280.  
  281. !     NOEMUL
  282.  
  283.   ; Check if 8087 is present
  284.   ; Out AL = 8087 flag (0/1/2/3)
  285.  
  286. *** 106-114 ****
  287.   ; presence, instruct the processor to store its control word in
  288.   ; memory, and then check if it actually did it.
  289.  
  290. ! @@3:  XOR     AX,AX                   ;Clear 80287 BUSY latch
  291. !       OUT     0F0H,AL
  292. !       FNINIT                          ;Initialize 80x87
  293.         MOV     [BX],AX                 ;Clear status word
  294.         FNSTCW  [BX]                    ;Store status word
  295.         MOV     CX,20                   ;Wait for a while
  296. --- 110-122 ----
  297.   ; presence, instruct the processor to store its control word in
  298.   ; memory, and then check if it actually did it.
  299.  
  300. ! @@3:  XOR     AX,AX
  301. !       PUSH    SP                      ;Check 8088/8086
  302. !       POP     DX
  303. !       CMP     DX,SP                   ;Not equal on 8088/8086
  304. !       JNE     @@3a
  305. !       OUT     0F0H,AL                 ;Clear 80287 BUSY latch
  306. ! @@3a: FNINIT                          ;Initialize 80x87
  307.         MOV     [BX],AX                 ;Clear status word
  308.         FNSTCW  [BX]                    ;Store status word
  309.         MOV     CX,20                   ;Wait for a while
  310.  
  311. *** 150-156 ****
  312.  
  313.   ; Turn emulation back on
  314.  
  315. !       EMUL
  316.  
  317.   ; Initialize 8087 emulator
  318.   ; In  SI = Emulator entry offset
  319. --- 158-164 ----
  320.  
  321.   ; Turn emulation back on
  322.  
  323. !     EMUL
  324.  
  325.   ; Initialize 8087 emulator
  326.   ; In  SI = Emulator entry offset
  327.  
  328. *** 177-182 ****
  329. --- 185-195 ----
  330.         INT     DOS
  331.         POP     DS
  332.       IF DPMIVersion
  333. +       MOV     AX,dpmiSetExcept        ;Install FP exception handler
  334. +       MOV     BL,10H
  335. +       MOV     DX,OFFSET Int10Handler
  336. +       MOV     CX,CS
  337. +       INT     DPMI
  338.         MOV     AX,CS                   ;Get code segment alias
  339.         ADD     AX,__AHIncr
  340.         MOV     ES,AX
  341.  
  342. *** 218-248 ****
  343.         JNE     @@1                     ;Yes, @@1
  344.         FSTENV  EnvBuffer               ;Store environment
  345.         JMP     SHORT @@2
  346. !       NOEMUL                          ;Can't emulate no-wait opcode
  347.   @@1:  FNSTENV EnvBuffer               ;No wait, store environment
  348.         FWAIT                           ;Wait for it
  349. !       EMUL                            ;Turn emulation back on
  350.   @@2:  MOV     AL,CtrlWord.b0          ;Unmasked exceptions to AL
  351.         NOT     AL
  352.         AND     AL,StatWord.b0
  353. !       JS      Exception               ;IR=1 if 8087 caused interrupt
  354. !       POP     DS                      ;Restore registers
  355.         POP     AX
  356. !
  357. ! ; Jump to saved INT 2 handler
  358. !
  359. !               DB      0EAH            ;JMP FAR
  360. ! JumpInt02     DD      ?
  361.  
  362. ! ; 8087 exception handler
  363.  
  364. ! Exception:
  365.  
  366. -       STI                             ;Enable interrupts
  367. -       TEST    AL,3FH-mDE              ;Anything but denormal exception
  368. -       JE      FixDenormal             ;is an error
  369.         FINIT                           ;Initialize 8087
  370.         FLDCW   CWDefault
  371.         POP     CX                      ;Remove saved registers
  372.         POP     CX
  373.         POP     CX                      ;Get interrupt return address
  374. --- 231-259 ----
  375.         JNE     @@1                     ;Yes, @@1
  376.         FSTENV  EnvBuffer               ;Store environment
  377.         JMP     SHORT @@2
  378. !     NOEMUL                            ;Can't emulate no-wait opcode
  379.   @@1:  FNSTENV EnvBuffer               ;No wait, store environment
  380.         FWAIT                           ;Wait for it
  381. !     EMUL                              ;Turn emulation back on
  382.   @@2:  MOV     AL,CtrlWord.b0          ;Unmasked exceptions to AL
  383.         NOT     AL
  384.         AND     AL,StatWord.b0
  385. !       JNS     Int02Chain              ;IR=1 if 8087 caused interrupt
  386. !       STI                             ;Enable interrupts
  387. !       TEST    AL,3FH-mDE              ;Anything but denormal exception
  388. !       JNE     Int02Error              ;is an error
  389. !       CALL    FixDenormal
  390. !       POP     DS
  391.         POP     AX
  392. !       IRET
  393.  
  394. ! ; Terminate application
  395.  
  396. ! Int02Error:
  397.  
  398.         FINIT                           ;Initialize 8087
  399.         FLDCW   CWDefault
  400. +       CALL    GetErrorCode
  401.         POP     CX                      ;Remove saved registers
  402.         POP     CX
  403.         POP     CX                      ;Get interrupt return address
  404.  
  405. *** 262-285 ****
  406.         MOV     CX,Instruction.ofs
  407.         AND     CX,0FH
  408.       ENDIF
  409. ! @@1:  TEST    AL,mIE                  ;Convert exception mask to
  410. !       JNE     @@2                     ;run-time error number
  411. !       MOV     DX,200
  412.         TEST    AL,mZE
  413.         JNE     @@3
  414. !       MOV     DX,205
  415.         TEST    AL,mOE
  416.         JNE     @@3
  417. !       MOV     DX,206
  418.         TEST    AL,mUE
  419.         JNE     @@3
  420. ! @@2:  MOV     DX,207
  421. ! @@3:  XCHG    AX,DX                   ;Error code to AX
  422. !       JMP     Terminate               ;Run-time error
  423.  
  424.   ; Denormal exceptions never occur with the emulator
  425.  
  426. !       NOEMUL
  427.  
  428.   ; Retry subroutine
  429.  
  430. --- 273-357 ----
  431.         MOV     CX,Instruction.ofs
  432.         AND     CX,0FH
  433.       ENDIF
  434. ! @@1:  JMP     Terminate
  435. !
  436. ! ; Chain to old INT 02H handler
  437. !
  438. ! Int02Chain:
  439. !
  440. !       POP     DS                      ;Restore registers
  441. !       POP     AX
  442. !
  443. ! ; Jump to saved INT 2 handler
  444. !
  445. !               DB      0EAH            ;JMP FAR
  446. ! JumpInt02     DD      ?
  447. !
  448. !     IF DPMIVersion
  449. !
  450. !     NOEMUL
  451. !
  452. ! ; Exception 10H handler (Borland DPMI server)
  453. !
  454. ! Int10Handler:
  455. !
  456. !       PUSH    BP
  457. !       MOV     BP,SP
  458. !       PUSH    AX
  459. !       PUSH    DS
  460. !       MOV     AX,SEG DATA
  461. !       MOV     DS,AX
  462. !       FNSTENV EnvBuffer
  463. !       FWAIT
  464. !       MOV     AL,CtrlWord.b0          ;Unmasked exceptions to AL
  465. !       NOT     AL
  466. !       AND     AL,StatWord.b0
  467. !       TEST    AL,3FH-mDE              ;Anything but denormal exception
  468. !       JE      @@1                     ;is an error
  469. !       FINIT                           ;Initialize 8087
  470. !       FLDCW   CWDefault
  471. !       CALL    GetErrorCode
  472. !       MOV     ExitCode,AX
  473. !       MOV     AX,Instruction.ofs
  474. !       MOV     ErrorAddr.ofs,AX
  475. !       MOV     AX,Instruction.seg
  476. !       MOV     ErrorAddr.seg,AX
  477. !       MOV     [BP+8].ofs,OFFSET ExceptHalt
  478. !       MOV     [BP+8].seg,CS
  479. !       JMP     SHORT @@2
  480. ! @@1:  CALL    FixDenormal
  481. ! @@2:  POP     DS
  482. !       POP     AX
  483. !       POP     BP
  484. !       RETF
  485. !
  486. !     EMUL
  487. !
  488. !     ENDIF
  489. !
  490. ! ; Convert exception mask to error code
  491. !
  492. ! GetErrorCode:
  493. !
  494. !       TEST    AL,mIE
  495. !       JNE     @@2
  496. !       MOV     AH,200
  497.         TEST    AL,mZE
  498.         JNE     @@3
  499. !       MOV     AH,205
  500.         TEST    AL,mOE
  501.         JNE     @@3
  502. !       MOV     AH,206
  503.         TEST    AL,mUE
  504.         JNE     @@3
  505. ! @@2:  MOV     AH,207
  506. ! @@3:  MOV     AL,AH
  507. !       XOR     AH,AH
  508. !       RET
  509.  
  510.   ; Denormal exceptions never occur with the emulator
  511.  
  512. !     NOEMUL
  513.  
  514.   ; Retry subroutine
  515.  
  516.  
  517. *** 370-378 ****
  518.         POP     ES
  519.       ENDIF
  520.         POP     BX                      ;Restore and return
  521. !       POP     DS
  522. !       POP     AX
  523. !       IRET
  524.  
  525.   ; Examine ST and normalize if required
  526.  
  527. --- 442-448 ----
  528.         POP     ES
  529.       ENDIF
  530.         POP     BX                      ;Restore and return
  531. !       RET
  532.  
  533.   ; Examine ST and normalize if required
  534.  
  535.  
  536. *** 399-405 ****
  537.  
  538.   ; Turn emulation back on
  539.  
  540. !       EMUL
  541.  
  542.   ; Convert Real to Extended
  543.  
  544. --- 469-475 ----
  545.  
  546.   ; Turn emulation back on
  547.  
  548. !     EMUL
  549.  
  550.   ; Convert Real to Extended
  551.  
  552.  
  553. *** C:\OLD\RTL\SYS\LONG.ASM   Wed Oct 28 07:00:00 1992
  554. --- C:\NEW\RTL\SYS\LONG.ASM   Thu Mar 04 07:01:00 1993
  555. *** 166-173 ****
  556.         CMP     Test8086,2
  557.         JB      @@1
  558.       .386
  559. !       SHRD    AX,DX,CL
  560. !       SHR     DX,CL
  561.         RETF
  562.       .8086
  563.   @@1:  AND     CX,1FH
  564. --- 166-176 ----
  565.         CMP     Test8086,2
  566.         JB      @@1
  567.       .386
  568. !       SHL     EDX,16
  569. !       MOV     DX,AX
  570. !       SHR     EDX,CL
  571. !       MOV     AX,DX
  572. !       SHR     EDX,16
  573.         RETF
  574.       .8086
  575.   @@1:  AND     CX,1FH
  576.  
  577. *** 187-194 ****
  578.         CMP     Test8086,2
  579.         JB      @@1
  580.       .386
  581. !       SHLD    DX,AX,CL
  582. !       SHL     AX,CL
  583.         RETF
  584.       .8086
  585.   @@1:  AND     CX,1FH
  586. --- 190-200 ----
  587.         CMP     Test8086,2
  588.         JB      @@1
  589.       .386
  590. !       SHL     EDX,16
  591. !       MOV     DX,AX
  592. !       SHL     EDX,CL
  593. !       MOV     AX,DX
  594. !       SHR     EDX,16
  595.         RETF
  596.       .8086
  597.   @@1:  AND     CX,1FH
  598.  
  599. *** C:\OLD\RTL\SYS\LOVF.ASM   Wed Oct 28 07:00:00 1992
  600. --- C:\NEW\RTL\SYS\LOVF.ASM   Thu Mar 04 07:01:00 1993
  601. *** 76-81 ****
  602. --- 76-84 ----
  603.         MUL     CX
  604.         ADD     DX,DI
  605.         JC      @@5
  606. +       MOV     CX,AX
  607. +       OR      CX,DX
  608. +       JE      @@6
  609.         OR      SI,SI
  610.         JNS     @@4
  611.         NEG     AX
  612.  
  613. *** 83-89 ****
  614.         NEG     DX
  615.   @@4:  XOR     SI,DX
  616.         JS      @@5
  617. !       RETF
  618.   @@5:  JMP     Overflow
  619.  
  620.   CODE  ENDS
  621. --- 86-92 ----
  622.         NEG     DX
  623.   @@4:  XOR     SI,DX
  624.         JS      @@5
  625. ! @@6:  RETF
  626.   @@5:  JMP     Overflow
  627.  
  628.   CODE  ENDS
  629.  
  630. *** C:\OLD\RTL\SYS\WLIB.ASM   Wed Oct 28 07:00:00 1992
  631. --- C:\NEW\RTL\SYS\WLIB.ASM   Thu Mar 04 07:01:00 1993
  632. *** 68-74 ****
  633.         MOV     SelectorInc,__AHIncr
  634.         MOV     ExitCode,1              ;Default exit code is 1
  635.         EXIT
  636. ! @@3:  MOV     BP,SP                   ;Remove stack frame
  637.         POP     BP
  638.         DEC     BP
  639.         POP     CX                      ;Remove return address
  640. --- 68-74 ----
  641.         MOV     SelectorInc,__AHIncr
  642.         MOV     ExitCode,1              ;Default exit code is 1
  643.         EXIT
  644. ! @@3:  MOV     SP,BP                   ;Remove stack frame
  645.         POP     BP
  646.         DEC     BP
  647.         POP     CX                      ;Remove return address
  648.  
  649. *** C:\OLD\RTL\TV\DIALOGS.PAS   Wed Oct 28 07:00:00 1992
  650. --- C:\NEW\RTL\TV\DIALOGS.PAS   Thu Mar 04 07:01:00 1993
  651. *** 1036-1048 ****
  652.   end;
  653.  
  654.   function TInputLine.Valid(Command: Word): Boolean;
  655.   begin
  656.     Valid := inherited Valid(Command);
  657.     if (Validator <> nil) and (State and sfDisabled = 0) then
  658.       if Command = cmValid then
  659.         Valid := Validator^.Status = vsOk
  660.       else if Command <> cmCancel then
  661. !       if not Validator^.Valid(Data^) then
  662.         begin
  663.           Select;
  664.           Valid := False;
  665. --- 1036-1061 ----
  666.   end;
  667.  
  668.   function TInputLine.Valid(Command: Word): Boolean;
  669. +
  670. +   function AppendError(Validator: PValidator): Boolean;
  671. +   begin
  672. +     AppendError := False;
  673. +     with Validator^ do
  674. +       if (Options and voOnAppend <> 0) and (CurPos <> Length(Data^))
  675. +           and not IsValidInput(Data^, True) then
  676. +       begin
  677. +         Error;
  678. +         AppendError := True;
  679. +       end;
  680. +   end;
  681. +
  682.   begin
  683.     Valid := inherited Valid(Command);
  684.     if (Validator <> nil) and (State and sfDisabled = 0) then
  685.       if Command = cmValid then
  686.         Valid := Validator^.Status = vsOk
  687.       else if Command <> cmCancel then
  688. !       if AppendError(Validator) or not Validator^.Valid(Data^) then
  689.         begin
  690.           Select;
  691.           Valid := False;
  692.  
  693. *** C:\OLD\RTL\TV\HISTLIST.PAS   Wed Oct 28 07:00:00 1992
  694. --- C:\NEW\RTL\TV\HISTLIST.PAS   Thu Mar 04 07:01:00 1993
  695. *** 113-122 ****
  696.           MOV   DI,HistoryUsed
  697.         LDS     SI,Str
  698.         MOV     BL,[SI]
  699. -         INC   BL
  700. -         INC   BL
  701. -         INC     BL
  702.           XOR   BH,BH
  703.           POP     DS
  704.           PUSH    DS
  705.   @@1:    MOV     AX,DI
  706. --- 113-122 ----
  707.           MOV   DI,HistoryUsed
  708.         LDS     SI,Str
  709.         MOV     BL,[SI]
  710.           XOR   BH,BH
  711. +         INC   BX
  712. +         INC   BX
  713. +         INC     BX
  714.           POP     DS
  715.           PUSH    DS
  716.   @@1:    MOV     AX,DI
  717.  
  718. *** C:\OLD\RTL\TV\OUTLINE.PAS   Wed Oct 28 07:00:00 1992
  719. --- C:\NEW\RTL\TV\OUTLINE.PAS   Thu Mar 04 07:01:00 1993
  720. *** 900-909 ****
  721.     if Node <> nil then
  722.       with Node^ do
  723.       begin
  724. !       if ChildList <> nil then DisposeNode(ChildList);
  725. !       if Next <> nil then DisposeNode(Next);
  726.       end;
  727. -   Dispose(Node);
  728.   end;
  729.  
  730.   procedure RegisterOutline;
  731. --- 900-910 ----
  732.     if Node <> nil then
  733.       with Node^ do
  734.       begin
  735. !       DisposeNode(ChildList);
  736. !       DisposeNode(Next);
  737. !       DisposeStr(Text);
  738. !       Dispose(Node);
  739.       end;
  740.   end;
  741.  
  742.   procedure RegisterOutline;
  743.  
  744. *** C:\OLD\RTL\TV\STDDLG.PAS   Wed Oct 28 07:00:00 1992
  745. --- C:\NEW\RTL\TV\STDDLG.PAS   Thu Mar 04 07:01:00 1993
  746. *** 944-950 ****
  747.   function RelativePath(var S: PathStr): Boolean;
  748.   begin
  749.     S := LTrim(RTrim(S));
  750. !   RelativePath := not (S <> '') and ((S[1] = '\') or (S[2] = ':'));
  751.   end;
  752.  
  753.   function NoWildChars(S: String): String; near; assembler;
  754. --- 944-950 ----
  755.   function RelativePath(var S: PathStr): Boolean;
  756.   begin
  757.     S := LTrim(RTrim(S));
  758. !   RelativePath := not ((S <> '') and ((S[1] = '\') or (S[2] = ':')));
  759.   end;
  760.  
  761.   function NoWildChars(S: String): String; near; assembler;
  762.  
  763. *** C:\OLD\RTL\TV\SYSINT.ASM   Wed Oct 28 07:00:00 1992
  764. --- C:\NEW\RTL\TV\SYSINT.ASM   Thu Mar 04 07:01:00 1993
  765. *** 59-64 ****
  766. --- 59-65 ----
  767.   dpmiAllocDesc EQU     0000H           ;Allocate descriptor
  768.   dpmiFreeDesc  EQU     0001H           ;Free descriptor
  769.   dpmiSetSegBase        EQU     0007H           ;Set segment base address
  770. + dpmiSetSegSize        EQU     0008H           ;Set segment size
  771.   dpmiGetRealInt        EQU     0200H           ;Get real mode interrupt vector
  772.   dpmiSetRealInt        EQU     0201H           ;Set real mode interrupt vector
  773.   dpmiGetProtInt        EQU     0204H           ;Get protected mode interrupt vector
  774.  
  775. *** 216-221 ****
  776. --- 217-227 ----
  777.         MOV     CX,1
  778.         INT     DPMI
  779.         MOV     TempSelector,AX
  780. +       MOV     BX,AX
  781. +       XOR     CX,CX
  782. +       MOV     DX,0FFFFH
  783. +       MOV     AX,dpmiSetSegSize
  784. +       INT     DPMI
  785.         MOV     AX,CS
  786.         ADD     AX,SelectorInc
  787.         MOV     ES,AX
  788.  
  789. *** C:\OLD\RTL\TV\VIEWS.PAS   Wed Oct 28 07:00:00 1992
  790. --- C:\NEW\RTL\TV\VIEWS.PAS   Thu Mar 04 07:01:00 1993
  791. *** 3769-3775 ****
  792.       (State and sfSelected <> 0)) then
  793.     begin
  794.       WindowCommands := [cmNext, cmPrev];
  795. !     if Flags and wfGrow + wfMove <> 0 then
  796.         WindowCommands := WindowCommands + [cmResize];
  797.       if Flags and wfClose <> 0 then
  798.         WindowCommands := WindowCommands + [cmClose];
  799. --- 3769-3775 ----
  800.       (State and sfSelected <> 0)) then
  801.     begin
  802.       WindowCommands := [cmNext, cmPrev];
  803. !     if Flags and (wfGrow + wfMove) <> 0 then
  804.         WindowCommands := WindowCommands + [cmResize];
  805.       if Flags and wfClose <> 0 then
  806.         WindowCommands := WindowCommands + [cmClose];
  807.  
  808. *** C:\OLD\RTL\WIN\WINDOS.PAS   Wed Oct 28 07:00:00 1992
  809. --- C:\NEW\RTL\WIN\WINDOS.PAS   Thu Mar 04 07:01:00 1993
  810. *** 500-509 ****
  811.         PUSH    BP
  812.         MOV     BP,SP
  813.   {$IFDEF ProtectedMode}
  814. !       LES     DI,Regs+14
  815.   {$ELSE}
  816. !       LES     DI,Regs+12
  817.   {$ENDIF}
  818.         CLD
  819.         STOSW
  820.         XCHG    AX,BX
  821. --- 500-510 ----
  822.         PUSH    BP
  823.         MOV     BP,SP
  824.   {$IFDEF ProtectedMode}
  825. !       ADD     BP,14
  826.   {$ELSE}
  827. !       ADD     BP,12
  828.   {$ENDIF}
  829. +       LES     DI,Regs
  830.         CLD
  831.         STOSW
  832.         XCHG    AX,BX
  833.  
  834. *** C:\OLD\RTL\WIN\WINPROCS.PAS   Wed Oct 28 07:00:00 1992
  835. --- C:\NEW\RTL\WIN\WINPROCS.PAS   Thu Mar 04 07:01:00 1993
  836. *** 205-211 ****
  837. ! function ExitWindows(Reserved: LongInt; ReturnCode: Word): Bool;
  838. --- 205-211 ----
  839. ! function ExitWindows(ReturnCode: LongInt; Reserved: Word): Bool;
  840.