PDA

View Full Version : [Q] Cách tạo chương trình thường trú trong DOS



Xì Tin
27-01-2003, 13:37
Các huynh chỉ giùm mình làm cách nào để tạo chương trình thường trú bằng Pascal trong DOS dùng để kiềm tra bàn phím. Ví dụ như khi đánh đúng một chuỗi mặc định nào đó thì hiện lên một câu thông báo. Mình đã dùng thử lệnh keep nhưng bị mất tác dụng khi chạy NC và Pascal.

Xì Tin
31-01-2003, 11:09
Sao hổng có ai quan tâm tới vậy. Bộ nó khó lắm hả !
Các sư huynh muội tỷ đệ, mình đã ghi sai gì chăng ?!!!~.~

LuXuBu
06-02-2003, 08:47
Tôi nghĩ chương trình của bạn bị sao đó chứ, đã thường trú rồi thì sao mất được, Nếu bạn không cố tình "đá" nó ra thì nó không thể nào mất được, vì vậy tôi nghĩ trong chương trình của bạn dùng hàm Readkey để đọc bàn phím. Nếu đúng là vậy thì bạn nên dùng Port[$60] (nó vừa là lệnh vừa là hàm luôn đó) để đọc các phím nhấn.
Bạn thử xem lại nghen.

btkiet
11-02-2003, 12:13
bạn có thể tham khảo trong cuốn Mẹo và thủ thuật lập trình Pascal . Trong đó có nguyên một chương về lập trình thường trú.

lee_huynh306
18-07-2004, 09:09
Bạn upload source code lên cho bà con xem sai chỗ nào đi chứ

jiSh@n
18-07-2004, 13:57
Khi viết chương trình thường trú thì bạn ko thể chạy trong Pascal mà bạn phải dịch sang EXE và chạy từ DOS.

neverstop
24-07-2004, 11:46
Cuốn sách ấy bạn có không? Mình hiện không ở VN nên không thể ra hiệu sách mua được. Liệu trên mạng có nó không nhỉ? Nếu bạn biết thì chỉ mình với, cảm ơn nhiều nha.

lee_huynh306
25-07-2004, 00:16
Cũng có thể là bạn ấy quên chặn ngắt nên không chạy được

diepthanhtoan84
16-08-2004, 07:28
alo! có ai post bài lên không? post cho mình xem đi.

lee_huynh306
07-09-2004, 07:48
Thân chào Xì Tin,
Bạn sẽ không thể nào thường trú một chương trình khi bạn đang ở trong môi trường của TP/BP/NC... đâu bởi vì thế này : các chương trình đó luôn luôn lưu trữ một bảng vector ngắt trước khi cho chương trình của bạn chạy.
Trong TP/BP, điều đó được miêu tả như sau :
swapvectors; { kô nhớ là có hay ko có chữ s phía sau nữa}
exec(pro{string- tên của ct của bạn},paramstr{string });
swapvectors;
Như bạn thấy đấy, chương trình của bạn khi thực hiện lệnh keep, DOS sẽ sửa lại sơ đồ bộ nhớ và bắt đầu quay lại chương trỉnh cha đã chạy nó, lúc này chương trình cha phục hồi lại bảng vector ngắt trước khi chạy chương trình con, như vậy bảng vector ngắt mà chương trình con thay đổi coi như không tồn tại, cho nên ngắt mà chương trình con (hay ở đây là chương trình của bạn) không hề có một ngắt nào trỏ đến thủ tục xử lý ngắt của CT. Đó là lý do tại sao bạn có thể chạy ct một cách độc lập mà không thể chạy trên một số chương trình như TP/BP/NC.