कर्नल: Difference between revisions
(Created page with "{{short description|Commodore operating system}} {{Distinguish|Kernel (disambiguation){{!}}Kernel}} करनाल<ref>''Commodore 64 Programmer's Reference Guide''. Commodo...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|Commodore operating system}} | {{short description|Commodore operating system}} | ||
{{Distinguish| | {{Distinguish|कर्नेल (बहुविकल्पी){{!}}कर्नेल}} | ||
करनाल<ref>''Commodore 64 Programmer's Reference Guide''. Commodore Business Machines, Inc., 1982, p. 268</ref> अपने [[8 बिट]] [[ गृह कम्प्यूटर ]]ों में [[ केवल पढ़ने के लिये मेमोरी ]]-रेजिडेंट [[ऑपरेटिंग सिस्टम]] कोर के लिए [[कमोडोर इंटरनेशनल]] का नाम है; 1977 के मूल [[कमोडोर पीईटी]] से, उसके बाद उसके उत्तराधिकारियों में उपयोग किए गए विस्तारित लेकिन संबंधित संस्करण: [[VIC-20]], [[कमोडोर 64]], कमोडोर प्लस/4|प्लस/4, [[कमोडोर 16]], और [[कमोडोर 128]]। | करनाल<ref>''Commodore 64 Programmer's Reference Guide''. Commodore Business Machines, Inc., 1982, p. 268</ref> अपने [[8 बिट]] [[ गृह कम्प्यूटर ]]ों में [[ केवल पढ़ने के लिये मेमोरी ]]-रेजिडेंट [[ऑपरेटिंग सिस्टम]] कोर के लिए [[कमोडोर इंटरनेशनल]] का नाम है; 1977 के मूल [[कमोडोर पीईटी]] से, उसके बाद उसके उत्तराधिकारियों में उपयोग किए गए विस्तारित लेकिन संबंधित संस्करण: [[VIC-20|वीआईसी-20]], [[कमोडोर 64]], कमोडोर प्लस/4|प्लस/4, [[कमोडोर 16]], और [[कमोडोर 128]]। | ||
== विवरण == | == विवरण == | ||
कमोडोर 8-बिट मशीन ' | कमोडोर 8-बिट मशीन 'करनाल में आईबीएम पीसी कॉम्पैटिबल्स ([[कमोडोर बेसिक]] रूटीन के विपरीत, रोम में भी स्थित) में [[BIOS|बीआईओएस]] के बराबर निम्न-स्तर, क्लोज-टू-द-हार्डवेयर ओएस रूटीन सम्मिलित हैं। उच्च-स्तर, डिवाइस-स्वतंत्र आई / ओ कार्यक्षमता, और रैम में [[शाखा तालिका]] के माध्यम से उपयोगकर्ता-कॉल करने योग्य है जिसका केंद्रीय (सबसे पुराना) भाग, पिछड़े संगतता के कारणों के लिए,<ref>The KERNAL jump table, used to access all the subroutines in the KERNAL, is an array of JMP (jump) instructions leading to the actual subroutines. This feature ensures compatibility with user-written software in the event that code within the KERNAL ROM needs to be relocated in a later revision.</ref> संपूर्ण 8-बिट श्रृंखला में काफी हद तक समान रहता है। करनाल रोम 8-बिट सीपीयू के 64 केबी एड्रेस स्पेस ($इ000–$एफएफएफएफ) के अंतिम 8 [[किलोबाइट]] पर कब्जा कर लेता है। | ||
उपयोगकर्ता द्वारा लिखे गए रूटीन को इंगित करने के लिए जंप टेबल को संशोधित किया जा सकता है, उदाहरण के लिए एनिमेटेड ग्राफिक्स प्रदर्शित करने के लिए स्क्रीन डिस्प्ले रूटीन को फिर से लिखना या रैम में कैरेक्टर सेट को कॉपी करना। जंप टेबल का यह प्रयोग उस समय छोटे कंप्यूटरों के लिए नया था।<ref>{{cite web|url=https://archive.org/stream/byte-magazine-1983-01-rescan/1983_01_BYTE_08-01_Looking_Ahead#page/n239/mode/2up|title=Exploring the VIC-20|date=January 1983}}</ref> | उपयोगकर्ता द्वारा लिखे गए रूटीन को इंगित करने के लिए जंप टेबल को संशोधित किया जा सकता है, उदाहरण के लिए एनिमेटेड ग्राफिक्स प्रदर्शित करने के लिए स्क्रीन डिस्प्ले रूटीन को फिर से लिखना या रैम में कैरेक्टर सेट को कॉपी करना। जंप टेबल का यह प्रयोग उस समय छोटे कंप्यूटरों के लिए नया था।<ref>{{cite web|url=https://archive.org/stream/byte-magazine-1983-01-rescan/1983_01_BYTE_08-01_Looking_Ahead#page/n239/mode/2up|title=Exploring the VIC-20|date=January 1983}}</ref> | ||
कार्ट्रिज पर | |||
कार्ट्रिज पर वीआईसी-20 के लिए प्रकाशित [[एडवेंचर इंटरनेशनल]] गेम्स सॉफ्टवेयर का एक उदाहरण है जो करनाल का उपयोग करता है। क्योंकि वे केवल जंप टेबल का उपयोग करते हैं, गेम को डिस्क में [[मेमोरी डंप]] किया जा सकता है, एक कमोडोर 64 में लोड किया जा सकता है, और बिना किसी संशोधन के चलाया जा सकता है।<ref name="kevelson198601">{{cite news | url=https://archive.org/stream/Ahoy_Issue_25_1986-01_Ion_International_US#page/n31/mode/2up |title=Speech Synthesizers for the Commodore Computers / Part II | work=Ahoy! | date=January 1986 |author=Kevelson, Morton |pages=32 |url-status=live |accessdate=17 July 2014}}</ref> | |||
करनाल को आरम्भ में [[जॉन फेगन्स]] द्वारा कमोडोर पीईटी के लिए लिखा गया था, जिन्होंने बेसिक रूटीन को ऑपरेटिंग सिस्टम से अलग करने का विचार पेश किया था। इसे कई लोगों द्वारा विकसित किया गया, विशेष रूप से [[रॉबर्ट रसेल (इंजीनियर)]], जिन्होंने वीआईसी-20 और सी64 के लिए कई सुविधाएँ जोड़ीं। | |||
== उदाहरण == | == उदाहरण == | ||
करनाल का उपयोग करने का एक सरल, फिर भी विशिष्ट उदाहरण निम्नलिखित [[MOS Technology 6502|एमओएस यांत्रिकी 6502]] [[ सभा की भाषा ]] सबरूटीन द्वारा दिया गया है<ref>Many of the KERNAL subroutines (e.g., OPEN and CLOSE) were vectored through page three in RAM, allowing a programmer to intercept the associated KERNAL calls and add to or replace the original functions.</ref> (सीसी65 असेंबलर प्रारूप/वाक्यविन्यास में लिखा गया है): | |||
CHROUT = $ffd2; CHROUT कैरेक्टर आउटपुट रूटीन का पता है | CHROUT = $ffd2; CHROUT कैरेक्टर आउटपुट रूटीन का पता है | ||
Line 18: | Line 20: | ||
; | ; | ||
नमस्ते: | नमस्ते: | ||
एलडीएक्स #0; एक्स इंडेक्स रजिस्टर में 0 लोड करके कैरेक्टर 0 से | एलडीएक्स #0; एक्स इंडेक्स रजिस्टर में 0 लोड करके कैरेक्टर 0 से आरम्भ करें | ||
अगला: | अगला: | ||
एलडीए संदेश, एक्स; संचायक में पता संदेश + x से बाइट लोड करें | एलडीए संदेश, एक्स; संचायक में पता संदेश + x से बाइट लोड करें | ||
Line 27: | Line 29: | ||
पूर्ण: | पूर्ण: | ||
आरटीएस; सबरूटीन से लौटें | आरटीएस; सबरूटीन से लौटें | ||
�; | |||
संदेश: | संदेश: | ||
.बाइट हैलो वर्ल्ड प्रोग्राम#एक्यूमुलेटर + इंडेक्स रजिस्टर मशीन: | .बाइट हैलो वर्ल्ड प्रोग्राम#एक्यूमुलेटर + इंडेक्स रजिस्टर मशीन: Mओएस टेक्नोलॉजी 6502, CBM करनाल, ca65 असेंबलर|हैलो, वर्ल्ड! | ||
.बाइट सीआर, 0; कैरिज रिटर्न और स्ट्रिंग का शून्य अंकन अंत | .बाइट सीआर, 0; कैरिज रिटर्न और स्ट्रिंग का शून्य अंकन अंत | ||
Line 35: | Line 37: | ||
== नाम == | == नाम == | ||
करनाल को कर्नेल के रूप में जाना जाता था<ref>The [[kernel (operating system)|kernel]] is the most fundamental part of a program, typically an operating system, that resides in memory at all times and provides the basic services. It is the part of the operating system that is closest to the machine and may activate the hardware directly or interface to another software layer that drives the hardware</ref> पीईटी दिनों से कमोडोर के अंदर, लेकिन 1980 में रॉबर्ट रसेल ने अपनी नोटबुक में इस शब्द को कर्नेल के रूप में गलत लिखा। जब कमोडोर यांत्रिकी लेखक नील हैरिस और एंडी फिंकेल ने रसेल के नोट्स एकत्र किए और उन्हें वीआईसी-20 प्रोग्रामर के मैनुअल के आधार के रूप में उपयोग किया, तो गलत वर्तनी उनके साथ चली गई और अटक गई।<ref>''On The Edge: The Spectacular Rise and Fall of Commodore'', page 202.</ref> | |||
प्रारंभिक कमोडोर मिथक के अनुसार, और दूसरों के बीच लेखक/प्रोग्रामर [[जिम बटरफील्ड]] द्वारा रिपोर्ट किया गया, | प्रारंभिक कमोडोर मिथक के अनुसार, और दूसरों के बीच लेखक/प्रोग्रामर [[जिम बटरफील्ड]] द्वारा रिपोर्ट किया गया, करनाल शब्द 'कीबोर्ड एंट्री रीड, नेटवर्क, और लिंक' के लिए खड़ा एक संक्षिप्त (या, अधिक संभावना है, एक [[संक्षिप्त नाम]]) है, जो वास्तव में इसकी भूमिका को देखते हुए अच्छी समझ में आता है। [[बर्कले सॉफ्टवर्क्स]] ने बाद में 8-बिट होम कंप्यूटरों के लिए अपने जीयूआई ओएस के मुख्य रूटीन का नामकरण करते समय इसका उपयोग किया: [[GEOS (8-बिट ऑपरेटिंग सिस्टम)|जीईओएस (8-बिट ऑपरेटिंग सिस्टम)]] करनाल। | ||
== डिवाइस-स्वतंत्र | == डिवाइस-स्वतंत्र आई / ओ == पर | ||
आश्चर्यजनक रूप से, | आश्चर्यजनक रूप से, करनाल ने एक उपकरण-स्वतंत्र आई /ओ API को लागू किया जो पूरी तरह से बेल लैब्स के [[यूनिक्स]] या प्लान 9 से भिन्न नहीं है। जबकि कोई यथोचित तर्क दे सकता है कि इन बाद वाली प्रणालियों में सब कुछ एक फाइल है, अन्य आसानी से दावा कर सकते हैं कि सब कुछ पूर्व में एक [[जीपीआईबी]]-डिवाइस है। | ||
उस समय 6502 आर्किटेक्चर की सीमाओं के कारण, | उस समय 6502 आर्किटेक्चर की सीमाओं के कारण, आई /ओ चैनल खोलने के लिए तीन सिस्टम कॉल की आवश्यकता होती है। पहला आमतौर पर तार्किक फ़ाइल नाम को इसके माध्यम से सेट करता है <code>SETNAM</code> सिस्टम कॉल। दूसरी कॉल, <code>SETLFS</code>, संचार करने के लिए GPIB/आईईईई-488 उपकरण पता स्थापित करता है। आखिरकार <code>OPEN</code> वास्तविक लेनदेन करने के लिए कहा जाता है। आवेदन तो उपयोग किया <code>CHKIN</code> और <code>CHKOUT</code> सिस्टम क्रमशः एप्लिकेशन के वर्तमान इनपुट और आउटपुट चैनल सेट करने के लिए कॉल करता है। अनुप्रयोगों में समवर्ती खुली फ़ाइलों की संख्या हो सकती है (कुछ सिस्टम-निर्भर सीमा तक; उदाहरण के लिए, C64 एक बार में दस फ़ाइलों को खोलने की अनुमति देता है)। उसके बाद, <code>CHRIN</code> और <code>CHROUT</code> वास्तव में क्रमशः इनपुट और आउटपुट के संचालन के लिए उपयोगी साबित होते हैं। <code>CLओएसE</code> फिर एक चैनल बंद कर देता है। | ||
निरीक्षण करें कि | निरीक्षण करें कि आई / ओ चैनल बनाने के लिए कोई सिस्टम कॉल मौजूद नहीं है, क्योंकि सामान्य परिस्थितियों में उपकरणों को गतिशील रूप से बनाया या नष्ट नहीं किया जा सकता है। इसी तरह, यूनिक्स में [[ioctl]]() जैसे आई / ओ नियंत्रण कार्यों को करने के लिए न तो खोज करने के लिए कोई साधन मौजूद है और न ही। वास्तव में, करनाल यहाँ योजना-9 दर्शन के बहुत करीब साबित होता है, जहाँ एक एप्लिकेशन इस तरह के मेटा या आउट-ऑफ-बैंड लेनदेन करने के लिए संकेतित डिवाइस के लिए एक विशेष कमांड चैनल खोलेगा। उदाहरण के लिए, डिस्क से फ़ाइल को हटाने (स्क्रैच) करने के लिए, उपयोगकर्ता आमतौर पर नामक संसाधन को खोलेगा <code>S0:THE-FILE-TO-RMV</code> डिवाइस 8 या 9 पर, चैनल 15। कमोडोर 8-बिट दुनिया में स्थापित सम्मेलन के अनुसार, चैनल 15 बाह्य उपकरणों के लिए कमांड चैनल का प्रतिनिधित्व करता है, असाधारण मामलों सहित कमांड और परिणाम दोनों को संप्रेषित करने के लिए संदेश-पासिंग तकनीकों पर निर्भर करता है। उदाहरण के लिए, कमोडोर बेसिक में, वे ऐसे सॉफ़्टवेयर पा सकते हैं जो निम्नलिखित के विपरीत नहीं हैं: | ||
<syntaxhighlight lang="cbmbas"> | <syntaxhighlight lang="cbmbas"> | ||
70 ... | 70 ... | ||
Line 61: | Line 63: | ||
220 ... | 220 ... | ||
</syntaxhighlight> | </syntaxhighlight> | ||
डिवाइस नंबर, प्रति स्थापित प्रलेखन, सीमा [0,16] तक सीमित हैं। हालाँकि, यह सीमा | डिवाइस नंबर, प्रति स्थापित प्रलेखन, सीमा [0,16] तक सीमित हैं। हालाँकि, यह सीमा आईईईई-488 प्रोटोकॉल के विशिष्ट अनुकूलन से आई है और वास्तव में, केवल बाहरी बाह्य उपकरणों पर लागू होती है। सभी प्रासंगिक करनाल सिस्टम कॉल्स के साथ, प्रोग्रामर [32,256] की सीमा में किसी भी पते के साथ वर्चुअल डिवाइस को लागू करने के लिए सिस्टम कॉल को इंटरसेप्ट कर सकते हैं। संकल्पनात्मक रूप से, कोई डिवाइस ड्राइवर बाइनरी को मेमोरी में लोड कर सकता है, करनाल आई /ओ वैक्टर को पैच कर सकता है, और उस क्षण से आगे, एक नया (वर्चुअल) डिवाइस संबोधित किया जा सकता है। अब तक, इस क्षमता को सार्वजनिक रूप से कभी भी उपयोग के रूप में नहीं जाना जाता है, संभवतः दो कारणों से: (1) करनाल गतिशील रूप से डिवाइस आईडी आवंटित करने के लिए कोई साधन प्रदान नहीं करता है, और (2) करनाल एक स्थानापन्न बाइनरी छवि लोड करने के लिए कोई साधन प्रदान नहीं करता है। इस प्रकार, आई /ओ स्पेस और मेमोरी स्पेस दोनों में टकराव का बोझ उपयोगकर्ता पर पड़ता है, जबकि मशीनों की एक विस्तृत श्रृंखला में प्लेटफ़ॉर्म संगतता सॉफ़्टवेयर लेखक पर पड़ती है। बहरहाल, यदि वांछित हो तो इन कार्यों के लिए समर्थन सॉफ्टवेयर आसानी से लागू किया जा सकता है। | ||
तार्किक फ़ाइल नाम प्रारूप संबोधित विशिष्ट डिवाइस पर निर्भर करता है। निस्संदेह, सबसे अधिक उपयोग किया जाने वाला उपकरण फ्लॉपी डिस्क सिस्टम है, जो एक समान प्रारूप का उपयोग करता है <code>MD:NAME,ATTRS</code>, जहाँ एम एक प्रकार का ध्वज है ($ निर्देशिका सूची के लिए, @ फ़ाइल को अधिलेखित करने की इच्छा को इंगित करने के लिए यदि यह पहले से मौजूद है, अन्यथा अप्रयुक्त है।), डी (वैकल्पिक) भौतिक डिस्क इकाई संख्या (0: या 1: के लिए) है। डुअल-ड्राइव सिस्टम, सिर्फ 0: 1541 जैसी सिंगल-डिस्क इकाइयों के लिए, एट अल।, जो 0 पर डिफॉल्ट करता है: यदि अनिर्दिष्ट छोड़ दिया जाता है), <code>NAME</code> लंबाई में 16 वर्णों तक का एक संसाधन नाम है (कुछ विशेष वर्णों को छोड़कर अधिकांश वर्णों की अनुमति है), और <code>ATTRS</code> विशेषताओं या झंडों की एक वैकल्पिक अल्पविराम से अलग की गई सूची है। उदाहरण के लिए, यदि उपयोगकर्ता एक प्रोग्राम फ़ाइल को अधिलेखित करना चाहता है जिसे कहा जाता है <code>PRGFILE</code>, वे एक फ़ाइल नाम जैसे देख सकते हैं <code>@0:PRGFILE,P</code> डिवाइस 8 या 9 के संयोजन के साथ प्रयोग किया जाता है। इस बीच, आर एस-232 ड्राइवर (डिवाइस 2) के लिए एक फ़ाइल नाम में केवल चार वर्ण होते हैं, जो बाइनरी प्रारूप में एन्कोडेड होते हैं।<ref>''Commodore 128 Programmers Reference Guide'', Commodore Business Machines, Inc., 1986, p. 382</ref> | |||
अन्य डिवाइस, जैसे कि कीबोर्ड (डिवाइस 0), कैसेट (डिवाइस 1), डिस्प्ले इंटरफ़ेस (डिवाइस 3), और प्रिंटर (डिवाइस 4 और 5), को कार्य करने के लिए किसी फ़ाइल नाम की आवश्यकता नहीं होती है, या तो उचित डिफ़ॉल्ट मानते हैं या बस उनकी आवश्यकता नहीं होती है बिलकुल। | अन्य डिवाइस, जैसे कि कीबोर्ड (डिवाइस 0), कैसेट (डिवाइस 1), डिस्प्ले इंटरफ़ेस (डिवाइस 3), और प्रिंटर (डिवाइस 4 और 5), को कार्य करने के लिए किसी फ़ाइल नाम की आवश्यकता नहीं होती है, या तो उचित डिफ़ॉल्ट मानते हैं या बस उनकी आवश्यकता नहीं होती है बिलकुल। | ||
Line 71: | Line 74: | ||
==बाहरी संबंध== | ==बाहरी संबंध== | ||
*[https://www.pagetable.com/?p=926 Commodore | *[https://www.pagetable.com/?p=926 Commodore करनाल History] | ||
*[https://github.com/davervw/c64-io_monitor Commodore 64 | *[https://github.com/davervw/c64-io_monitor Commodore 64 करनाल आई / ओ Monitor Utility] | ||
{{Operating system}} | {{Operating system}} |
Revision as of 15:11, 19 June 2023
करनाल[1] अपने 8 बिट गृह कम्प्यूटर ों में केवल पढ़ने के लिये मेमोरी -रेजिडेंट ऑपरेटिंग सिस्टम कोर के लिए कमोडोर इंटरनेशनल का नाम है; 1977 के मूल कमोडोर पीईटी से, उसके बाद उसके उत्तराधिकारियों में उपयोग किए गए विस्तारित लेकिन संबंधित संस्करण: वीआईसी-20, कमोडोर 64, कमोडोर प्लस/4|प्लस/4, कमोडोर 16, और कमोडोर 128।
विवरण
कमोडोर 8-बिट मशीन 'करनाल में आईबीएम पीसी कॉम्पैटिबल्स (कमोडोर बेसिक रूटीन के विपरीत, रोम में भी स्थित) में बीआईओएस के बराबर निम्न-स्तर, क्लोज-टू-द-हार्डवेयर ओएस रूटीन सम्मिलित हैं। उच्च-स्तर, डिवाइस-स्वतंत्र आई / ओ कार्यक्षमता, और रैम में शाखा तालिका के माध्यम से उपयोगकर्ता-कॉल करने योग्य है जिसका केंद्रीय (सबसे पुराना) भाग, पिछड़े संगतता के कारणों के लिए,[2] संपूर्ण 8-बिट श्रृंखला में काफी हद तक समान रहता है। करनाल रोम 8-बिट सीपीयू के 64 केबी एड्रेस स्पेस ($इ000–$एफएफएफएफ) के अंतिम 8 किलोबाइट पर कब्जा कर लेता है।
उपयोगकर्ता द्वारा लिखे गए रूटीन को इंगित करने के लिए जंप टेबल को संशोधित किया जा सकता है, उदाहरण के लिए एनिमेटेड ग्राफिक्स प्रदर्शित करने के लिए स्क्रीन डिस्प्ले रूटीन को फिर से लिखना या रैम में कैरेक्टर सेट को कॉपी करना। जंप टेबल का यह प्रयोग उस समय छोटे कंप्यूटरों के लिए नया था।[3]
कार्ट्रिज पर वीआईसी-20 के लिए प्रकाशित एडवेंचर इंटरनेशनल गेम्स सॉफ्टवेयर का एक उदाहरण है जो करनाल का उपयोग करता है। क्योंकि वे केवल जंप टेबल का उपयोग करते हैं, गेम को डिस्क में मेमोरी डंप किया जा सकता है, एक कमोडोर 64 में लोड किया जा सकता है, और बिना किसी संशोधन के चलाया जा सकता है।[4]
करनाल को आरम्भ में जॉन फेगन्स द्वारा कमोडोर पीईटी के लिए लिखा गया था, जिन्होंने बेसिक रूटीन को ऑपरेटिंग सिस्टम से अलग करने का विचार पेश किया था। इसे कई लोगों द्वारा विकसित किया गया, विशेष रूप से रॉबर्ट रसेल (इंजीनियर), जिन्होंने वीआईसी-20 और सी64 के लिए कई सुविधाएँ जोड़ीं।
उदाहरण
करनाल का उपयोग करने का एक सरल, फिर भी विशिष्ट उदाहरण निम्नलिखित एमओएस यांत्रिकी 6502 सभा की भाषा सबरूटीन द्वारा दिया गया है[5] (सीसी65 असेंबलर प्रारूप/वाक्यविन्यास में लिखा गया है):
CHROUT = $ffd2; CHROUT कैरेक्टर आउटपुट रूटीन का पता है सीआर = $0d; कैरिज रिटर्न के लिए PETSCII कोड ; नमस्ते: एलडीएक्स #0; एक्स इंडेक्स रजिस्टर में 0 लोड करके कैरेक्टर 0 से आरम्भ करें अगला: एलडीए संदेश, एक्स; संचायक में पता संदेश + x से बाइट लोड करें किया गया; यदि संचायक शून्य रखता है, तो हम कर चुके हैं और लूप से बाहर निकलना चाहते हैं जेएसआर क्रोट; आउटपुट चार को वर्तमान आउटपुट डिवाइस पर कॉल करें (डिफ़ॉल्ट स्क्रीन पर) आईएनएक्स; अगले वर्ण पर जाने के लिए x बढ़ाएँ अगला बनो; लूप बैक जबकि अंतिम वर्ण शून्य नहीं है (अधिकतम स्ट्रिंग लंबाई 255 बाइट्स) पूर्ण: आरटीएस; सबरूटीन से लौटें �; संदेश: .बाइट हैलो वर्ल्ड प्रोग्राम#एक्यूमुलेटर + इंडेक्स रजिस्टर मशीन: Mओएस टेक्नोलॉजी 6502, CBM करनाल, ca65 असेंबलर|हैलो, वर्ल्ड! .बाइट सीआर, 0; कैरिज रिटर्न और स्ट्रिंग का शून्य अंकन अंत
यह कोड स्टब नियोजित करता है CHROUT
दिनचर्या, जिसका पता पते पर मिलता है $FFD2
(65490), डिफ़ॉल्ट आउटपुट डिवाइस (जैसे, डिस्प्ले स्क्रीन) पर टेक्स्ट स्ट्रिंग भेजने के लिए।
नाम
करनाल को कर्नेल के रूप में जाना जाता था[6] पीईटी दिनों से कमोडोर के अंदर, लेकिन 1980 में रॉबर्ट रसेल ने अपनी नोटबुक में इस शब्द को कर्नेल के रूप में गलत लिखा। जब कमोडोर यांत्रिकी लेखक नील हैरिस और एंडी फिंकेल ने रसेल के नोट्स एकत्र किए और उन्हें वीआईसी-20 प्रोग्रामर के मैनुअल के आधार के रूप में उपयोग किया, तो गलत वर्तनी उनके साथ चली गई और अटक गई।[7] प्रारंभिक कमोडोर मिथक के अनुसार, और दूसरों के बीच लेखक/प्रोग्रामर जिम बटरफील्ड द्वारा रिपोर्ट किया गया, करनाल शब्द 'कीबोर्ड एंट्री रीड, नेटवर्क, और लिंक' के लिए खड़ा एक संक्षिप्त (या, अधिक संभावना है, एक संक्षिप्त नाम) है, जो वास्तव में इसकी भूमिका को देखते हुए अच्छी समझ में आता है। बर्कले सॉफ्टवर्क्स ने बाद में 8-बिट होम कंप्यूटरों के लिए अपने जीयूआई ओएस के मुख्य रूटीन का नामकरण करते समय इसका उपयोग किया: जीईओएस (8-बिट ऑपरेटिंग सिस्टम) करनाल।
== डिवाइस-स्वतंत्र आई / ओ == पर
आश्चर्यजनक रूप से, करनाल ने एक उपकरण-स्वतंत्र आई /ओ API को लागू किया जो पूरी तरह से बेल लैब्स के यूनिक्स या प्लान 9 से भिन्न नहीं है। जबकि कोई यथोचित तर्क दे सकता है कि इन बाद वाली प्रणालियों में सब कुछ एक फाइल है, अन्य आसानी से दावा कर सकते हैं कि सब कुछ पूर्व में एक जीपीआईबी-डिवाइस है।
उस समय 6502 आर्किटेक्चर की सीमाओं के कारण, आई /ओ चैनल खोलने के लिए तीन सिस्टम कॉल की आवश्यकता होती है। पहला आमतौर पर तार्किक फ़ाइल नाम को इसके माध्यम से सेट करता है SETNAM
सिस्टम कॉल। दूसरी कॉल, SETLFS
, संचार करने के लिए GPIB/आईईईई-488 उपकरण पता स्थापित करता है। आखिरकार OPEN
वास्तविक लेनदेन करने के लिए कहा जाता है। आवेदन तो उपयोग किया CHKIN
और CHKOUT
सिस्टम क्रमशः एप्लिकेशन के वर्तमान इनपुट और आउटपुट चैनल सेट करने के लिए कॉल करता है। अनुप्रयोगों में समवर्ती खुली फ़ाइलों की संख्या हो सकती है (कुछ सिस्टम-निर्भर सीमा तक; उदाहरण के लिए, C64 एक बार में दस फ़ाइलों को खोलने की अनुमति देता है)। उसके बाद, CHRIN
और CHROUT
वास्तव में क्रमशः इनपुट और आउटपुट के संचालन के लिए उपयोगी साबित होते हैं। CLओएसE
फिर एक चैनल बंद कर देता है।
निरीक्षण करें कि आई / ओ चैनल बनाने के लिए कोई सिस्टम कॉल मौजूद नहीं है, क्योंकि सामान्य परिस्थितियों में उपकरणों को गतिशील रूप से बनाया या नष्ट नहीं किया जा सकता है। इसी तरह, यूनिक्स में ioctl() जैसे आई / ओ नियंत्रण कार्यों को करने के लिए न तो खोज करने के लिए कोई साधन मौजूद है और न ही। वास्तव में, करनाल यहाँ योजना-9 दर्शन के बहुत करीब साबित होता है, जहाँ एक एप्लिकेशन इस तरह के मेटा या आउट-ऑफ-बैंड लेनदेन करने के लिए संकेतित डिवाइस के लिए एक विशेष कमांड चैनल खोलेगा। उदाहरण के लिए, डिस्क से फ़ाइल को हटाने (स्क्रैच) करने के लिए, उपयोगकर्ता आमतौर पर नामक संसाधन को खोलेगा S0:THE-FILE-TO-RMV
डिवाइस 8 या 9 पर, चैनल 15। कमोडोर 8-बिट दुनिया में स्थापित सम्मेलन के अनुसार, चैनल 15 बाह्य उपकरणों के लिए कमांड चैनल का प्रतिनिधित्व करता है, असाधारण मामलों सहित कमांड और परिणाम दोनों को संप्रेषित करने के लिए संदेश-पासिंग तकनीकों पर निर्भर करता है। उदाहरण के लिए, कमोडोर बेसिक में, वे ऐसे सॉफ़्टवेयर पा सकते हैं जो निम्नलिखित के विपरीत नहीं हैं:
70 ...
80 REM ROTATE LOGS CURRENTLY OPENED ON LOGICAL CHANNEL #1.
90 CLOSE 1
100 OPEN 15,8,15,"R0:ERROR.1=0:ERROR.0":REM RENAME FILE ERROR.0 TO ERROR.1
110 INPUT# 15,A,B$,C,D:REM READ ERROR CHANNEL
120 CLOSE 15
130 IF A=0 THEN GOTO 200
140 PRINT "ERROR RENAMING LOG FILE:"
150 PRINT " CODE: "+A
160 PRINT " MSG : "+B$
170 END
200 REM CONTINUE PROCESSING HERE, CREATING NEW LOG FILE AS WE GO...
210 OPEN 1,8,1,"0:ERROR.0,S,W"
220 ...
डिवाइस नंबर, प्रति स्थापित प्रलेखन, सीमा [0,16] तक सीमित हैं। हालाँकि, यह सीमा आईईईई-488 प्रोटोकॉल के विशिष्ट अनुकूलन से आई है और वास्तव में, केवल बाहरी बाह्य उपकरणों पर लागू होती है। सभी प्रासंगिक करनाल सिस्टम कॉल्स के साथ, प्रोग्रामर [32,256] की सीमा में किसी भी पते के साथ वर्चुअल डिवाइस को लागू करने के लिए सिस्टम कॉल को इंटरसेप्ट कर सकते हैं। संकल्पनात्मक रूप से, कोई डिवाइस ड्राइवर बाइनरी को मेमोरी में लोड कर सकता है, करनाल आई /ओ वैक्टर को पैच कर सकता है, और उस क्षण से आगे, एक नया (वर्चुअल) डिवाइस संबोधित किया जा सकता है। अब तक, इस क्षमता को सार्वजनिक रूप से कभी भी उपयोग के रूप में नहीं जाना जाता है, संभवतः दो कारणों से: (1) करनाल गतिशील रूप से डिवाइस आईडी आवंटित करने के लिए कोई साधन प्रदान नहीं करता है, और (2) करनाल एक स्थानापन्न बाइनरी छवि लोड करने के लिए कोई साधन प्रदान नहीं करता है। इस प्रकार, आई /ओ स्पेस और मेमोरी स्पेस दोनों में टकराव का बोझ उपयोगकर्ता पर पड़ता है, जबकि मशीनों की एक विस्तृत श्रृंखला में प्लेटफ़ॉर्म संगतता सॉफ़्टवेयर लेखक पर पड़ती है। बहरहाल, यदि वांछित हो तो इन कार्यों के लिए समर्थन सॉफ्टवेयर आसानी से लागू किया जा सकता है।
तार्किक फ़ाइल नाम प्रारूप संबोधित विशिष्ट डिवाइस पर निर्भर करता है। निस्संदेह, सबसे अधिक उपयोग किया जाने वाला उपकरण फ्लॉपी डिस्क सिस्टम है, जो एक समान प्रारूप का उपयोग करता है MD:NAME,ATTRS
, जहाँ एम एक प्रकार का ध्वज है ($ निर्देशिका सूची के लिए, @ फ़ाइल को अधिलेखित करने की इच्छा को इंगित करने के लिए यदि यह पहले से मौजूद है, अन्यथा अप्रयुक्त है।), डी (वैकल्पिक) भौतिक डिस्क इकाई संख्या (0: या 1: के लिए) है। डुअल-ड्राइव सिस्टम, सिर्फ 0: 1541 जैसी सिंगल-डिस्क इकाइयों के लिए, एट अल।, जो 0 पर डिफॉल्ट करता है: यदि अनिर्दिष्ट छोड़ दिया जाता है), NAME
लंबाई में 16 वर्णों तक का एक संसाधन नाम है (कुछ विशेष वर्णों को छोड़कर अधिकांश वर्णों की अनुमति है), और ATTRS
विशेषताओं या झंडों की एक वैकल्पिक अल्पविराम से अलग की गई सूची है। उदाहरण के लिए, यदि उपयोगकर्ता एक प्रोग्राम फ़ाइल को अधिलेखित करना चाहता है जिसे कहा जाता है PRGFILE
, वे एक फ़ाइल नाम जैसे देख सकते हैं @0:PRGFILE,P
डिवाइस 8 या 9 के संयोजन के साथ प्रयोग किया जाता है। इस बीच, आर एस-232 ड्राइवर (डिवाइस 2) के लिए एक फ़ाइल नाम में केवल चार वर्ण होते हैं, जो बाइनरी प्रारूप में एन्कोडेड होते हैं।[8]
अन्य डिवाइस, जैसे कि कीबोर्ड (डिवाइस 0), कैसेट (डिवाइस 1), डिस्प्ले इंटरफ़ेस (डिवाइस 3), और प्रिंटर (डिवाइस 4 और 5), को कार्य करने के लिए किसी फ़ाइल नाम की आवश्यकता नहीं होती है, या तो उचित डिफ़ॉल्ट मानते हैं या बस उनकी आवश्यकता नहीं होती है बिलकुल।
टिप्पणियाँ
- ↑ Commodore 64 Programmer's Reference Guide. Commodore Business Machines, Inc., 1982, p. 268
- ↑ The KERNAL jump table, used to access all the subroutines in the KERNAL, is an array of JMP (jump) instructions leading to the actual subroutines. This feature ensures compatibility with user-written software in the event that code within the KERNAL ROM needs to be relocated in a later revision.
- ↑ "Exploring the VIC-20". January 1983.
- ↑ Kevelson, Morton (January 1986). "Speech Synthesizers for the Commodore Computers / Part II". Ahoy!. p. 32. Retrieved 17 July 2014.
{{cite news}}
: CS1 maint: url-status (link) - ↑ Many of the KERNAL subroutines (e.g., OPEN and CLOSE) were vectored through page three in RAM, allowing a programmer to intercept the associated KERNAL calls and add to or replace the original functions.
- ↑ The kernel is the most fundamental part of a program, typically an operating system, that resides in memory at all times and provides the basic services. It is the part of the operating system that is closest to the machine and may activate the hardware directly or interface to another software layer that drives the hardware
- ↑ On The Edge: The Spectacular Rise and Fall of Commodore, page 202.
- ↑ Commodore 128 Programmers Reference Guide, Commodore Business Machines, Inc., 1986, p. 382