Уже довольно давно интересуюсь следующей проблемой – как организовать hardware interrupt (например, IRQ5) в QBasic в DOS (без каких-либо Windows)? Скажем, есть какая-то программа на QBasic, и тут приходит IRQ5 с LPT. Нужно отработать простенькую рутинку по прерыванию, желательно в самом же BASICе, и продолжить основную программу. Ну, короче, это нужно для real time processing, хотя и примитивного.
Можно ли это сделать, и как?
Уже довольно давно интересуюсь следующей проблемой – как организовать hardware interrupt (например, IRQ5) в QBasic в DOS (без каких-либо Windows)? Скажем, есть какая-то программа на QBasic, и тут приходит IRQ5 с LPT. Нужно отработать простенькую рутинку по прерыванию, желательно в самом же BASICе, и продолжить основную программу. Ну, короче, это нужно для real time processing, хотя и примитивного.
Хорошо, но как это делать? Имеется в виду, что-то вроде переопределение ISR для IRQ5, или что-нибудь другое? То есть, ассемблерная часть никак не связана с Basicом, внешняя по отношению к нему, да? Как тогда лучше осуществлять импорт данных в Basic-программу?
qbasic - слишком экстримальный вариант. используйте лучше для этих целей турбо-паскаль.
Ну, просто qbasic я знаю (знал), есть уже опробованные программы… Если ж на него не полагаться, тогда зачем TP, можно сразу на C…
Ну на си напишите… На qbasic вроде можно организовать ассемблерную вставку, но ассемблировать придется самому при помощи справочника команд. А на паскале можно написать что-нибудь типа:
при этом можно обойтись вообще без ассемблера, а написать обработчик непосредственно на паскале.
потом где-нибудь
SetIntVec($05, @OnInterrupt);
1.Только перед этим GetIntVec…
2.Сохраняем старый вектор
3.SetIntVec устанавливаем новый
4.Восстанавливаем старый перед выходом из проги
5.Выходим из проги
А если ,что-то грамотное ваять то и с контроллером прерываний надо обчацца.
Когда то с этим много возился.
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"3d4a30483df95500777977e0":{"_id":"3d4a30483df95500777977e0","hid":624,"name":"toxa","nick":"toxa","avatar_id":null,"css":""},"42b6e9e03df955007779064a":{"_id":"42b6e9e03df955007779064a","hid":7829,"name":"Volante24","nick":"Volante24","avatar_id":null,"css":""},"42f79b173df955007778fc69":{"_id":"42f79b173df955007778fc69","hid":8517,"name":"ds5","nick":"ds5","avatar_id":null,"css":""},"4798b0563df955007777e1a2":{"_id":"4798b0563df955007777e1a2","hid":31068,"name":"pvo","nick":"pvo","avatar_id":null,"css":""}},"settings":{"can_see_ip":false,"can_report_abuse":false,"can_see_hellbanned":false,"forum_can_view":true,"forum_can_reply":false,"forum_edit_max_time":30,"forum_can_close_topic":false,"forum_show_ignored":false,"forum_mod_can_delete_topics":false,"forum_mod_can_hard_delete_topics":false,"forum_mod_can_see_hard_deleted_topics":false,"forum_mod_can_edit_posts":false,"forum_mod_can_pin_topic":false,"forum_mod_can_edit_titles":false,"forum_mod_can_close_topic":false,"can_vote":false,"forum_mod_can_add_infractions":false,"forum_topic_title_min_length":10,"forum_reply_old_post_threshold":30,"votes_add_max_time":168,"forum_show_post_interval":7,"can_see_deleted_users":false},"section":{"_id":"61c9a54c3df9550077bb50ba","hid":8,"title":"Самодельная электроника, компьютерные программы","parent":"61c9a54c3df9550077bb50f3","description":"Софт для моделирования и черчения, самодельные электронные устройства.","is_category":false,"is_votable":true,"is_writable":true,"cache":{"topic_count":2666,"post_count":48273,"last_post":"65f92eb7c68e4ffcbcbdffa9","last_topic":"5a9828483df9550077cbbef3","last_topic_hid":517779,"last_topic_title":"Самодельный Futaba CIU-2","last_ts":"2024-03-19T06:20:39.517Z","last_user":"4f3e22e13df955007774805c"}},"topic":{"_id":"47ac889b3df9550077b3630a","hid":91177,"title":"Hardware прерывания в BASICе","views_count":1652,"last_post_counter":6,"cache":{"post_count":6,"first_post":"47ac889b3df9550077b38d0a","first_ts":"2008-02-08T16:51:39.000Z","first_user":"42b6e9e03df955007779064a","last_post":"47bc21133df9550077b38d14","last_post_hid":6,"last_ts":"2008-02-20T12:46:11.000Z","last_user":"4798b0563df955007777e1a2"},"st":1,"section":"61c9a54c3df9550077bb50ba"},"subscription":null,"pagination":{"total":6,"per_page":25,"chunk_offset":0},"posts_list_before_post":["paginator","datediff"]},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}