Thông báo

Collapse
No announcement yet.

C DOS làm sao để dịch được nó dùng trong windows

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • C DOS làm sao để dịch được nó dùng trong windows

    Tôi có một số chương trình trò chơi C / C++ viết trong lúc còn đi học.
    Nó chạy trên môi trường DOS .
    Nhưng ngày nay - Có ai dùng DOS , win 95 , win98 nữa đâu .
    Toàn dùng XP .
    Vậy có cách nào , hay bộ dịch nào có thể hồi sinh các chương trình C trong DOS sang windows 32 bits.

    ( tôi thấy Pascal có Free pascal 32 bit ) - nhưng C thì chưa thấy ( hoặc chưa tìm ra ).

    - Chẳng lẽ dùng C/ C++ builder for windows , visual C.

    Có cách nào các bác có thể chỉ dẫn chút được không ???

    -------- tôi thường bị lỗi tại thư viện Graphic ( graph.h) ở DOS thì ra màu nay chuyển sang windows không biết sử lý cái thư viện này kiểu gì , bỏ thư viện đi tất cả màu mè thành đen thui hết , cho thư viện vào thì báo lỗi không có File ----------- HIC HIC
    ( HIC HIC ... Cải tử hoàn sinh thật khó vô cùng )
    --- Sao nó chỉ có mỗi Free PASCAL mà không có Free C chứ nhẩy
    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

  • #2
    Chẳng đi đâu xa bác dùng Visual Studio bản 4-5 gì đấy hoặc dùng gcc (cần sửa một số lệnh) gcc thì tool nhiều và xịn lắm.
    Vẫn biết mỗi lần xa là một lần về lại...

    Comment


    • #3
      Nguyên văn bởi qmk
      Chẳng đi đâu xa bác dùng Visual Studio bản 4-5 gì đấy hoặc dùng gcc (cần sửa một số lệnh) gcc thì tool nhiều và xịn lắm.
      Thanks QMK , để tôi tìm thử mấy công cụ rồi test xem có được không .
      Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

      Comment


      • #4
        Nguyên văn bởi qmk
        Chẳng đi đâu xa bác dùng Visual Studio bản 4-5 gì đấy hoặc dùng gcc (cần sửa một số lệnh) gcc thì tool nhiều và xịn lắm.
        Các chương trình dịch trên nền DOS vẫn chạy tốt trên nền WinNT/XP vì Windows sẽ tạo ra một môi trường DOS ảo coi như 1 process riêng để chạy trừ các chương trình có truy cập trực tiếp vào I/O space. Ngày trước tôi có viết chương trình nạp 8051 trên DOS và cho chạy trên WinNT vẫn bình thường. Còn chương trình DOS có sử dụng đồ họa thì chưa thử. QD thử tạo shortcut cho file EXE, trong properties của file shortcut có phần Compatibility ...

        Comment


        • #5
          Nguyên văn bởi Cuong Quay
          Các chương trình dịch trên nền DOS vẫn chạy tốt trên nền WinNT/XP vì Windows sẽ tạo ra một môi trường DOS ảo coi như 1 process riêng để chạy trừ các chương trình có truy cập trực tiếp vào I/O space. Ngày trước tôi có viết chương trình nạp 8051 trên DOS và cho chạy trên WinNT vẫn bình thường. Còn chương trình DOS có sử dụng đồ họa thì chưa thử. QD thử tạo shortcut cho file EXE, trong properties của file shortcut có phần Compatibility ...
          Dĩ nhiên là mấy cái chương trình đó khi dịch ra exe hoặc "tương thích " với
          windows nhưng khổ nỗi :

          - Khi chạy chương trình nó hiện ra một của sổ DOS " DOS trong win " thực chất không chuẩn là DOS " truyền thống ".
          Vấn đề đồ họa tôi đã " làm cho nó ra màu được rồi .
          Tuy nhiên một số chương trình có kết nối I /O port ( cho tay điều khiển - game pad ) ( sử dụng cổng LPT chứ không phải là cổng Game ).

          --- Không biết là khi sử dụng các hàm I/0 , dịch nó chạy tốt trong DOS rồi , win 98 nó cũng chạy ọ ọe được .

          Nhưng tôi thấy thằng Win XP là rất nghiêm khắc trong việc truy cập mấy cái Port .
          Sử dụng inp outp trong C/C++ có thể truy cập port của winXP không ???

          Có bạn nào rành cái này giúp tôi một chút.
          Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

          Comment


          • #6
            Nguyên văn bởi queduong Xem bài viết
            Nhưng tôi thấy thằng Win XP là rất nghiêm khắc trong việc truy cập mấy cái Port .
            Sử dụng inp outp trong C/C++ có thể truy cập port của winXP không ???

            Có bạn nào rành cái này giúp tôi một chút.
            Trong WinXP không dùng được inp, outp đâu bác ơi, bác đưa địa chỉ email đây tớ gởi cho bản .dll dùng được in/out trong WinXP
            Chào thân ái.
            Tư vấn, thiết kế hệ thống SCADA dùng WinCC, Citect...
            Nhận giả lập khóa cứng (dongle), cung cấp license Citect, Rockwell, Siemens...
            Liên hệ: servocontrol(at)gmail

            Comment


            • #7
              Nguyên văn bởi tuannam Xem bài viết
              Trong WinXP không dùng được inp, outp đâu bác ơi, bác đưa địa chỉ email đây tớ gởi cho bản .dll dùng được in/out trong WinXP
              Chào thân ái.
              bác ơi nếu có thể được thì gửi cho em được không đang rất cần.. hihi xkens@yahoo.co.uk
              tks bác trước

              Comment


              • #8
                trên windows XP các bác không truy cập trực tiếp IO port được bởi vì nó chạy ở chế độ virtual memory (protected mode) chứ không phải là (real mode như dos). trên windows, nó chia làm 4 ring từ ring 0 -> ring 3. Tùy vào chương trình chạy ở ring nào mà sẽ được quyền truy cập phần cứng đến đâu. Kernel của hệ điều hành sẽ chạy ở chế dộ real mode và ring thấp nhất. chương trình của người dùng thường chạy ở chế độ protected mode (bộ nhớ ảo) và sẽ chỉ có thể truy cập tài nguyên hệ thống qua kernel hệ điều hành.

                Như vậy muốn truy cập tài nguyên (các I/O port) thì phải dùng các system call để nhờ hệ điều hành làm giúp. Trong Visual C hình như có sẵn mấy hàm để dùng cổng com các cổng khác thì ko rõ.

                Đây là một thư viện dùng các hàm inportb và outportb như trong dos.h của tubo C trong dos ( các bác thử dùng xem có được ko nhé).
                http://www.codeproject.com/KB/system/kport.aspx

                Ngoài ra có một cái thư viện viết sẵn để truy cập I/O trên windows XP (sử dụng system call ) có tên là winio các bác thử lấy về dùng xem có chạy được ko.

                Link down winio lib:
                http://www.internals.com/

                một cách khác là viết device driver để nó chạy cùng kernel hệ điều hành ở ring 0 (trên linux thì em viết thử rồi nhưng mà windows thì chưa)
                http://www.beyondlogic.org/porttalk/porttalk.htm

                chúc vui.
                Last edited by cation_h; 20-12-2008, 23:05.

                Comment


                • #9
                  Nguyên văn bởi cation_h Xem bài viết
                  trên windows XP các bác không truy cập trực tiếp IO port được bởi vì nó chạy ở chế độ virtual memory (protected mode) chứ không phải là (real mode như dos). trên windows, nó chia làm 4 ring từ ring 0 -> ring 3. Tùy vào chương trình chạy ở ring nào mà sẽ được quyền truy cập phần cứng đến đâu. Kernel của hệ điều hành sẽ chạy ở chế dộ real mode và ring thấp nhất. chương trình của người dùng thường chạy ở chế độ protected mode (bộ nhớ ảo) và sẽ chỉ có thể truy cập tài nguyên hệ thống qua kernel hệ điều hành.

                  Như vậy muốn truy cập tài nguyên (các I/O port) thì phải dùng các system call để nhờ hệ điều hành làm giúp. Trong Visual C hình như có sẵn mấy hàm để dùng cổng com các cổng khác thì ko rõ.

                  Đây là một thư viện dùng các hàm inportb và outportb như trong dos.h của tubo C trong dos ( các bác thử dùng xem có được ko nhé).
                  http://www.codeproject.com/KB/system/kport.aspx

                  Ngoài ra có một cái thư viện viết sẵn để truy cập I/O trên windows XP (sử dụng system call ) có tên là winio các bác thử lấy về dùng xem có chạy được ko.

                  Link down winio lib:
                  http://www.internals.com/

                  một cách khác là viết device driver để nó chạy cùng kernel hệ điều hành ở ring 0 (trên linux thì em viết thử rồi nhưng mà windows thì chưa)
                  http://www.beyondlogic.org/porttalk/porttalk.htm

                  chúc vui.
                  chán quá bác ơi, thử mãi không cách nào được cả..hix hix

                  Comment

                  Về tác giả

                  Collapse

                  queduong Tìm hiểu thêm về queduong

                  Bài viết mới nhất

                  Collapse

                  Đang tải...
                  X