Announcement

Collapse
No announcement yet.

Wishlist Item

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wishlist Item

    Yes, I know this duplicates the 32-bit cousins, so it probably
    will "automatically" be included in the next release, BUT, I want
    to make sure that it's on the list.

    Could you please add the OPEN HANDLE functionality? But, instead of a Windows
    handle, it would apply to a DOS handle.

    I ask this because I have a number of OBJ file I/O procedures that
    I have written. The whole reason I have written them instead of simply
    using the builtin PB commands is so I can have LFN support in my
    DOS programs (DOS INT 21h services 71xxh). But, the only way I can
    use the handles returned by them is to also code the input/output
    routines. If OPEN HANDLE were available, I could then use the builtin
    PB file handling routines, which would make my coding MUCH less
    tedious, and it would also greatly reduce my programming overhead.

    Thank you for any consideration.


    ------------------


    [This message has been edited by Clay Clear (edited August 05, 2003).]

  • #2
    Mmmm... are you asking for OPEN HANDLE support? Or is what you really
    want LFN support? I'd guess they're both likely prospects...

    ------------------
    Tom Hanlin
    PowerBASIC Staff

    Comment


    • #3
      Either/or, Tom. If y'all only go the OPEN HANDLE route, then I can
      continue to use my existing LFN DOS OpenFile... routines. If y'all
      go wholehog and add native LFN support, then I won't need my own
      routines at all. So, either way is fine by me. (Personally, though,
      I'd recommend going the LFN support route. That way, programmers who lack
      the level of expertise to deal with ASM won't have to worry about
      OPENing the files in LFN mode - such things will be handled internally
      by the PB engine).


      ------------------

      Comment


      • #4
        Hi,

        nice to here from a wishlist for the next Dos-Compiler.

        And when would the next version arrive ? Date ? Year ?

        Or is it just a 'Ghostlist' because the Dos-Compiler is already
        'out of time'.

        Regards

        Matthias Kuhn




        ------------------

        Comment


        • #5
          Another version of PB/DOS is expected. "When" is not available.

          ------------------
          Tom Hanlin
          PowerBASIC Staff

          Comment


          • #6
            Lance,

            Will the new version be able to Read/Write to an NTFS?

            As far as I know PB 3.5 is only for FAT

            Thanks

            ------------------

            Comment


            • #7
              Originally posted by Tim Camarda:
              Lance,

              Will the new version be able to Read/Write to an NTFS?

              As far as I know PB 3.5 is only for FAT

              Thanks

              Well, PB3.5 is only for DOS, which is limited to FAT.

              You can read (or even write, though I wouldn't recommend trying
              it) NTFS volumes from a PB3.5 app, but of course you have to
              have functions to handle the NTFS metadata structures.

              You can find a free NTFS undeleter written in PB3.5 at http://download.filerecovery.biz. The NTFS specific library
              (NTFSUNIT.PBU) used in that program is commercially available.

              Bob Green


              ------------------




              [This message has been edited by RM Green (edited August 08, 2003).]

              Comment


              • #8
                Thanks Bob, I'll give that link a try. Right now it appears not to work.
                Anyhoo, I can run my PB3.5 aplication under Win2000, there the DOS Emulation(command com) works. I guess the same as if you were in a real DOS enviorment. However, I want to be able to Read/Write to the NTFS, and not have to boot with Win2000. So, I figured if MS DOS emulation can do it, there should be a way to do it with a DOS start-up disk.

                ------------------

                Comment


                • #9
                  Originally posted by Tim Camarda:
                  Thanks Bob, I'll give that link a try. Right now it appears
                  not to work. Anyhoo, I can run my PB3.5 aplication under Win2000, there the
                  DOS Emulation(command com) works. I guess the same as if you
                  were in a real DOS enviorment. However, I want to be able to
                  Read/Write to the NTFS, and not have to boot with Win2000. So,
                  I figured if MS DOS emulation can do it, there should be a way
                  to do it with a DOS start-up disk.
                  Right. There's always the free NTFSDOS, which mounts NTFS
                  volumes for read-only access from pure DOS and the rather
                  expensive NTFSDOS PRO which provides file level read/write
                  access.

                  I was assuming you wanted to work with NTFS volumes from your
                  disk editor. In which case you probably want to limit it to
                  read-only. Hex edits to a file might be OK, if the edits do
                  not change the file's length, but allowing low level write
                  access to metadata is just too dangerous. For one thing, the
                  publicly available documentation (from the Linux guys) is
                  incomplete and not entirely error free.

                  Don't know what's going on with that link. Its correct in the
                  message body. I'll try again:
                  http://download.filerecovery.biz

                  Bob Green



                  ------------------

                  Comment


                  • #10
                    Bob, That link is working now, must of been a problem with their server before.
                    -
                    Thanks again.
                    -
                    Tim

                    ------------------

                    Comment


                    • #11
                      Originally posted by Tom Hanlin:
                      Another version of PB/DOS is expected. "When" is not available.

                      I was a young man in my 50s when I first heard that news. Now I
                      draw social security and in my 60s. If you wait much longer, it's
                      going to be hard for me to use, since there is no computers
                      in the bone yard.

                      ------------------

                      Comment


                      • #12
                        I suggested this once before
                        - a long time ago it seems -
                        when PB/DOS 3.6 or 4.0 or whatever was first mooted...

                        I'd like " PB/WinDOS " (no, not a typo).

                        It would use something like the Windows VB6 IDE
                        to write & compile, but the EXE file
                        would be a DOS EXE file just like now...

                        This would give us the benefits of both platforms.

                        Oh, and built in TCP/IP sockets, please ;-)

                        ------------------

                        Comment


                        • #13
                          The Windows IDE idea has been kicked around a little, but the big problem would be trying to create an integrated debugger as a Windows app as such a scheme would need a fast and reliable way to communicate and control the DOS app on all Win32 platforms... and unfortunately using a memory mapped file is simply horrid for such a task.

                          If you have any ideas to solve that problem, we'd love to hear about them...

                          ------------------
                          Lance
                          PowerBASIC Support
                          mailto:[email protected][email protected]</A>
                          Lance
                          mailto:[email protected]

                          Comment


                          • #14
                            Don’t know if this has been addressed elsewhere, but it would be great if PB/DOS could accurately
                            report the SIZE of drives above 2 gigs -- (independently, or from within a Win / Dos Box….

                            T


                            ------------------

                            Comment


                            • #15
                              Tony,

                              Personally, I do not see how such a thing would be possible.
                              PB/DOS-created EXE's are *DOS* apps, and I am not aware of any
                              version of DOS that breaks the 2.1GB limit. Hopefully, if anybody
                              does know of such a thing, they will correct me.


                              ------------------

                              Comment


                              • #16
                                Don’t know if this has been addressed elsewhere, but it would be great if PB/DOS could accurately
                                report the SIZE of drives above 2 gigs
                                Same suggestion as for another post...
                                Code:
                                 SHELL "Windows program which writes disk size to file 'filename'.exe" 
                                 OPEN "filename" ....

                                MCM
                                Michael Mattias
                                Tal Systems Inc. (retired)
                                Racine WI USA
                                [email protected]
                                http://www.talsystems.com

                                Comment


                                • #17
                                  There was a similar question asked by Mel Bishop in march 2002, in
                                  this forum and the discussion led to some PB sources that I was
                                  able to tweek into some working code. You can probably find it in
                                  the archives somewhere. I don't have any idea how to find it but
                                  I'm sure someone here could help. If I find anything else I will
                                  post it here.
                                  Buck

                                  ------------------

                                  Comment


                                  • #18
                                    Sorry about last nights ramblings. It was just the beer talking.
                                    try this:
                                    Code:
                                       Type DiskBuffer
                                          Info AS STRING * 512
                                       End Type
                                    
                                       Type DriveParameters
                                          Size AS WORD
                                          InformationFlagTable AS WORD
                                          CylindersTotal AS DWORD
                                          HeadsTotal AS DWORD
                                          SectorsPerTrack AS DWORD
                                          SectorsTotal AS QUAD
                                          BytesPerSector AS WORD
                                       End Type
                                    
                                       TYPE XInt13BufferStructure
                                          PacketSize AS BYTE
                                          Reserved AS BYTE
                                          BlocksToTransfer AS WORD
                                          TransferBuffer AS BYTE PTR
                                          StartingBlock AS QUAD
                                       END TYPE
                                    
                                       %FALSE = 0
                                       %TRUE = NOT %FALSE
                                    
                                       $INCLUDE "REGNAMES.INC"
                                    
                                       DIM DI AS DriveParameters
                                       DIM GetBack AS DiskBuffer
                                    
                                       CLS
                                       Int13_Parameter &H0080, DI
                                       PRINT DI.Size;" Buffer Size"
                                       Temp% = LEN(BIN$(DI.InformationFlagTable))
                                       PRINT STRING$(8-Temp%, "0");BIN$(DI.InformationFlagTable);" Flag Table"
                                       PRINT DI.CylindersTotal;" Total Cylinders"
                                       PRINT DI.HeadsTotal;" Heads Total "
                                       PRINT DI.SectorsPerTrack;" SectorsPerTrack"
                                       PRINT DI.BytesPerSector;" BytesPerSector"
                                       PRINT CQUD(DriveInfo.SectorsTotal)
                                       X&& = DI.CylindersTotal * DI.HeadsTotal * DI.SectorsPerTrack * DI.BytesPerSector
                                       PRINT X&&; "Bytes Total"
                                       FOR I&& = 1024 TO 1025
                                          Int13_READ &H0080, GetBack, I&&
                                          PRINT GetBack.Info
                                       NEXT I&&
                                       END
                                    
                                    FUNCTION Int13_Check(DriveNum AS INTEGER)
                                       REG %AX, &H4100
                                       REG %BX, &H55AA
                                       REG %DX, DriveNum
                                       CALL INTERRUPT 13
                                       FLAGM?? = REG(%FLAGS)
                                       ACCUM?? = REG(%AX)
                                       BASEM?? = REG(%BX)
                                       COUNT?? = REG(%CX)
                                       DATAM?? = REG(%DX)
                                    
                                       IF BIT(FLAGM??, 0) = 1 THEN
                                          FUNCTION = %FALSE
                                          EXIT FUNCTION
                                       END IF
                                       SHIFT RIGHT ACCUM??, 8
                                       FUNCTION = %TRUE
                                    END FUNCTION
                                    
                                    SUB Int13_READ(DriveNum AS INTEGER, Sector AS DiskBuffer, SectorNumber AS QUAD)
                                       DIM XInt13Buffer AS XInt13BufferStructure
                                       XInt13Buffer.PacketSize = &H10
                                       XInt13Buffer.Reserved = &H00
                                       XInt13Buffer.BlocksToTransfer = 1
                                       XInt13Buffer.TransferBuffer = VARPTR32(Sector)
                                       XInt13Buffer.StartingBlock = SectorNumber
                                       REG %AX, &H4200
                                       REG %DX, DriveNum  '&H0080
                                       REG %DS, VARSEG(XInt13Buffer)
                                       REG %SI, VARPTR(XInt13Buffer)
                                       CALL INTERRUPT &H13
                                    END SUB
                                    
                                    SUB Int13_WRITE(DriveNum AS INTEGER, Sector AS DiskBuffer, SectorNumber AS QUAD)
                                       DIM XInt13Buffer AS XInt13BufferStructure
                                       'Initialize Buffer Information For Write
                                       XInt13Buffer.PacketSize? = &H10
                                       XInt13Buffer.Reserved? = &H00
                                       XInt13Buffer.BlocksToTransfer?? = 1
                                       XInt13Buffer.TransferBuffer = VARPTR32(Sector)
                                       XInt13Buffer.StartingBlock&& = SectorNumber&&
                                       REG %AX,&H4300
                                       REG %DX, DriveNum
                                    '   REG %DX,&H0080
                                       'Load Segment Pointer For Disk Address Packet Buffer Into DS Register
                                       REG %DS,VARSEG(XInt13Buffer)
                                       'Load Offset Pointer For Disk Address Packet Buffer Into SI Register
                                       REG %SI,VARPTR(XInt13Buffer)
                                       CALL INTERRUPT &H13
                                    END SUB
                                    
                                    SUB Int13_SEEK(DriveNum AS INTEGER, Sector AS DiskBuffer, SectorNumber AS QUAD)
                                       DIM XInt13Buffer AS XInt13BufferStructure
                                       'Initialize Buffer Information For Write
                                       XInt13Buffer.PacketSize? = &H10
                                       XInt13Buffer.Reserved? = &H00
                                       XInt13Buffer.BlocksToTransfer?? = 1
                                       XInt13Buffer.TransferBuffer = VARPTR32(Sector)
                                       XInt13Buffer.StartingBlock&& = SectorNumber&&
                                       REG %AX,&H4700
                                       REG %DX, DriveNum
                                    '   REG %DX,&H0080
                                       'Load Segment Pointer For Disk Address Packet Buffer Into DS Register
                                       REG %DS,VARSEG(XInt13Buffer)
                                       'Load Offset Pointer For Disk Address Packet Buffer Into SI Register
                                       REG %SI,VARPTR(XInt13Buffer)
                                       CALL INTERRUPT &H13
                                    END SUB
                                    
                                    SUB Int13_VERIFY(DriveNum AS INTEGER, Sector AS DiskBuffer, SectorNumber AS QUAD)
                                       DIM XInt13Buffer AS XInt13BufferStructure
                                       'Initialize Buffer Information For Write
                                       XInt13Buffer.PacketSize? = &H10
                                       XInt13Buffer.Reserved? = &H00
                                       XInt13Buffer.BlocksToTransfer?? = 1
                                       XInt13Buffer.TransferBuffer = VARPTR32(Sector)
                                       XInt13Buffer.StartingBlock&& = SectorNumber&&
                                       REG %AX,&H4400
                                       REG %DX, DriveNum
                                    '   REG %DX,&H0080
                                       'Load Segment Pointer For Disk Address Packet Buffer Into DS Register
                                       REG %DS,VARSEG(XInt13Buffer)
                                       'Load Offset Pointer For Disk Address Packet Buffer Into SI Register
                                       REG %SI,VARPTR(XInt13Buffer)
                                       CALL INTERRUPT &H13
                                    END SUB
                                    
                                    SUB Int13_PARAMETER(DriveNum AS INTEGER, DriveInfo AS DriveParameters)
                                       DriveInfo.size = SIZEOF(DriveInfo)
                                       REG %AX, &H4800
                                       REG %DX, DriveNum
                                       REG %DS, VARSEG(DriveInfo)
                                       REG %SI, VARPTR(DriveInfo)
                                       CALL INTERRUPT &H13
                                    END SUB
                                    IMPORTANT:
                                    Keep in mind that I have not tested this very well, so back up
                                    your hard drive before trying it (you do back up, don't you?).

                                    hope this helps.
                                    Buck


                                    ------------------


                                    [This message has been edited by Buck Huffman (edited August 31, 2003).]

                                    Comment

                                    Working...
                                    X