அத்தியாயம் 5: அசெம்பிளி மொழியில் கொமடோர்-64 இயக்க முறைமை

Attiyayam 5 Acempili Moliyil Komator 64 Iyakka Muraimai



5.1 அறிமுகம்

Commodore-64 கணினிக்கான இயக்க முறைமை கணினியுடன் படிக்க மட்டும் நினைவகத்தில் (ROM) வருகிறது. Commodore-64க்கான மெமரி பைட் இடங்களின் எண்ணிக்கை $0000 முதல் $FFFF வரை இருக்கும் (அதாவது 000016 முதல் FFFF16, அதாவது 010 முதல் 65,53510 வரை). இயக்க முறைமை $E000 முதல் $FFFF வரை உள்ளது (அதாவது 57,34410 முதல் 65,53610 வரை).

கொமடோர்-64 ஆப்பரேட்டிங் சிஸ்டத்தை ஏன் படிக்க வேண்டும்
1982 ஆம் ஆண்டு வெளிவந்த கணினியின் இயங்குதளமாக இருந்த கொமடோர்-64 இயக்க முறைமையை இன்று ஏன் படிக்க வேண்டும்? நன்றாக, Commodore-64 கணினி மத்திய செயலாக்க அலகு 6510 ஐப் பயன்படுத்துகிறது, இது 6502 µP இன் மேம்படுத்தல் (பெரிய மேம்படுத்தல் இல்லை என்றாலும்) ஆகும்.







6502 µP இன்றும் அதிக எண்ணிக்கையில் உற்பத்தி செய்யப்படுகிறது; இது இனி வீடு அல்லது அலுவலக கணினிகளுக்கு அல்ல, ஆனால் மின் மற்றும் மின்னணு சாதனங்களுக்கு (சாதனங்கள்). 6502 µP ஆனது அதன் நாட்களின் மற்ற நுண்செயலிகளுடன் ஒப்பிடும்போது புரிந்துகொள்வதற்கும் செயல்படுவதற்கும் எளிதானது. இவற்றின் விளைவாக, அசெம்பிளி மொழியைக் கற்பிக்கப் பயன்படும் மிகச் சிறந்த (சிறந்ததாக இல்லாவிட்டாலும்) நுண்செயலிகளில் இதுவும் ஒன்றாகும்.



65C02 µP, இன்னும் 6502 நுண்செயலி வகுப்பில், 66 அசெம்பிளி மொழி வழிமுறைகளைக் கொண்டுள்ளது, இவை அனைத்தையும் மனதாலும் கற்றுக்கொள்ளலாம். நவீன நுண்செயலிகள் பல அசெம்பிளி மொழி வழிமுறைகளைக் கொண்டுள்ளன, மேலும் அவை இதயத்தால் கற்றுக்கொள்ள முடியாது. ஒவ்வொரு µP க்கும் அதன் சொந்த அசெம்பிளி மொழி உள்ளது. எந்த இயக்க முறைமையும், அது புதியதாக இருந்தாலும் சரி அல்லது பழையதாக இருந்தாலும் சரி, அது அசெம்பிளி மொழியாகும். அதனுடன், 6502 அசெம்பிளி மொழி ஆரம்பநிலைக்கு இயக்க முறைமையைக் கற்பிக்கப் பயன்படுத்துவது நல்லது. Commodore-64 போன்ற ஒரு இயக்க முறைமையைக் கற்றுக்கொண்ட பிறகு, ஒரு நவீன இயக்க முறைமையை அடிப்படையாகப் பயன்படுத்தி எளிதாகக் கற்றுக்கொள்ளலாம்.



இது ஆசிரியரின் (நானே) கருத்து மட்டுமல்ல. இது உலகில் வளர்ந்து வரும் போக்கு. மேம்படுத்தப்பட்ட Commodore-64 இயங்குதளத்தை நவீன ஆப்பரேட்டிங் சிஸ்டம் போல் உருவாக்க இணையத்தில் அதிக கட்டுரைகள் எழுதப்படுகின்றன. நவீன இயக்க முறைமைகள் அடுத்த அத்தியாயத்தில் விளக்கப்பட்டுள்ளன.





குறிப்பு : Commodore-64 OS (Kernal) நவீன உள்ளீடு மற்றும் வெளியீட்டு சாதனங்களுடன் (அனைத்தும் இல்லை) இன்னும் நன்றாக வேலை செய்கிறது.

எட்டு பிட் கணினி
கொமடோர் 64 போன்ற எட்டு-பிட் மைக்ரோகம்ப்யூட்டரில், எட்டு பிட் பைனரி குறியீடுகளின் வடிவத்தில் தகவல் சேமிக்கப்படுகிறது, மாற்றப்படுகிறது மற்றும் கையாளப்படுகிறது.



நினைவக வரைபடம்
நினைவக வரைபடம் என்பது ஒரு அளவுகோலாகும், இது நினைவகத்தின் முழு வரம்பையும் வெவ்வேறு அளவுகளின் சிறிய வரம்புகளாகப் பிரிக்கிறது மற்றும் (சப்ரூடின் மற்றும்/அல்லது மாறி) எந்த வரம்பிற்கு சொந்தமானது என்பதைக் காட்டுகிறது. ஒரு மாறி என்பது ஒரு மதிப்பைக் கொண்ட ஒரு குறிப்பிட்ட நினைவக முகவரியுடன் தொடர்புடைய லேபிள் ஆகும். சப்ரூட்டின்களின் தொடக்கத்தை அடையாளம் காண லேபிள்களும் பயன்படுத்தப்படுகின்றன. ஆனால் இந்த வழக்கில், அவை சப்ரூடின்களின் பெயர்களாக அறியப்படுகின்றன. ஒரு சப்ரூட்டினை சாதாரணமாக ஒரு வழக்கம் என்று குறிப்பிடலாம்.

முந்தைய அத்தியாயத்தில் நினைவக வரைபடம் (தளவமைப்பு) போதுமான அளவு விரிவாக இல்லை. இது மிகவும் எளிமையானது. Commodore-64 கணினியின் நினைவக வரைபடம் மூன்று நிலை விவரங்களுடன் காட்டப்படலாம். இடைநிலை மட்டத்தில் காட்டப்படும் போது, ​​Commodore-64 கணினி வெவ்வேறு நினைவக வரைபடங்களைக் கொண்டுள்ளது. இடைநிலை மட்டத்தில் Commodore-64 கணினியின் இயல்புநிலை நினைவக வரைபடம்:


படம் 5.11 கொமடோர்-64 நினைவக வரைபடம்

அந்தக் காலத்தில், BASIC என்று ஒரு பிரபலமான கணினி மொழி இருந்தது. பல கணினி பயனர்கள் ஒரு நிரலை வட்டு (வட்டு) இலிருந்து நினைவகத்திற்கு ஏற்றுதல், நினைவகத்தில் ஒரு நிரலை இயக்க (செயல்படுத்த) மற்றும் ஒரு நிரலிலிருந்து வெளியேறுதல் (மூடுதல்) போன்ற சில குறைந்தபட்ச அடிப்படை மொழி கட்டளைகளை அறிந்திருக்க வேண்டும். BASIC நிரல் இயங்கும் போது, ​​பயனர் தரவுகளை வரிக்கு வரி செலுத்த வேண்டும். ஒரு பயன்பாடு (பல நிரல்கள் ஒரு பயன்பாட்டை உருவாக்குகிறது) சாளரங்களைக் கொண்ட உயர்-நிலை மொழியில் எழுதப்பட்டதைப் போல இன்று இல்லை, மேலும் பயனர் ஒரு சாளரத்தில் உள்ள சிறப்பு இடங்களில் வெவ்வேறு தரவுகளைப் பொருத்த வேண்டும். சில சந்தர்ப்பங்களில், முன்கூட்டிய ஆர்டர் செய்யப்பட்ட தரவைத் தேர்ந்தெடுக்க, நாங்கள் சுட்டியைப் பயன்படுத்துகிறோம். அந்த நேரத்தில் BASIC ஒரு உயர்நிலை மொழியாக இருந்தது, ஆனால் அது சட்டசபை மொழிக்கு மிகவும் நெருக்கமானது.

இயல்புநிலை நினைவக வரைபடத்தில் பெரும்பாலான நினைவகம் BASIC ஆல் எடுக்கப்படுகிறது என்பதைக் கவனியுங்கள். BASIC கட்டளைகளை (அறிவுறுத்தல்கள்) கொண்டுள்ளது, அவை BASIC மொழிபெயர்ப்பாளர் எனப்படும். உண்மையில், BASIC மொழிபெயர்ப்பாளர் ROM இல் $A000 இடத்திலிருந்து $BFFF (உள்ளடங்கியது) வரை ரேம் பகுதி எனக் கூறப்படுகிறது. இது 8 Kbytes அந்த நேரத்தில் மிகவும் பெரியது! இது உண்மையில் முழு நினைவகத்தின் அந்த இடத்தில் ரோமில் உள்ளது. இது $E000 முதல் $FFFF வரையிலான இயக்க முறைமையின் அதே அளவைக் கொண்டுள்ளது (உள்ளடக்கம்). BASIC இல் எழுதப்பட்ட நிரல்களும் $0200 முதல் $BFFF வரையில் வைக்கப்பட்டுள்ளன.

பயனர் சட்டசபை மொழி நிரலுக்கான ரேம் $C000 முதல் $CFFF வரை உள்ளது, 64 Kbytes இல் 4 Kbytes மட்டுமே. எனவே, நாம் ஏன் சட்டசபை மொழியைப் பயன்படுத்துகிறோம் அல்லது கற்றுக்கொள்கிறோம்? புதிய மற்றும் பழைய இயக்க முறைமைகள் அசெம்பிளி மொழிகளாகும். Commodore-64 இன் இயக்க முறைமை ROM இல் $E000 முதல் $FFFF வரை உள்ளது. இது 65C02 µP (6510 µP) சட்டசபை மொழியில் எழுதப்பட்டுள்ளது. இது சப்ரூட்டின்களைக் கொண்டுள்ளது. சாதனங்களுடன் (உள்ளீடு மற்றும் வெளியீட்டு சாதனங்கள்) தொடர்பு கொள்ள, சட்டசபை மொழியில் உள்ள பயனர் நிரல் இந்த துணை நிரல்களை அழைக்க வேண்டும். கொமடோர்-64 இயங்குதளத்தை அசெம்பிளி மொழியில் புரிந்துகொள்வது, மாணவர் இயக்க முறைமைகளை மிகக் குறைவான அலுப்பான முறையில் விரைவாகப் புரிந்துகொள்ள உதவுகிறது. மீண்டும், அந்த நாட்களில், Commodore-64 க்கான பல பயனர் நிரல்கள் பேசிக் மொழியில் எழுதப்பட்டன, சட்டசபை மொழியில் அல்ல. அந்த நாட்களில் அசெம்பிளி மொழிகள் தொழில்நுட்ப நோக்கங்களுக்காக புரோகிராமர்களால் அதிகம் பயன்படுத்தப்பட்டன.

K-e-r-n-a-l என உச்சரிக்கப்படும் Kernal, Commodore-64 இன் இயங்குதளமாகும். இது ROM இல் Commodore-64 கணினியுடன் வருகிறது மற்றும் வட்டில் (அல்லது வட்டில்) அல்ல. கெர்னல் சப்ரூட்டின்களைக் கொண்டுள்ளது. சாதனங்களை அணுக, சட்டசபை மொழியில் (இயந்திர மொழி) பயனர் நிரல் இந்த துணை நிரல்களைப் பயன்படுத்த வேண்டும். நவீன இயக்க முறைமைகளில் K-e-r-n-e-l என உச்சரிக்கப்படும் கர்னலுடன் கர்னல் குழப்பமடையக்கூடாது, இருப்பினும் அவை கிட்டத்தட்ட ஒரே மாதிரியானவை.

4 Kbytes10 நினைவகத்தில் $C000 (49,15210) முதல் $CFFF (6324810) வரையிலான நினைவகப் பகுதி RAM அல்லது ROM ஆகும். இது RAM ஆக இருக்கும் போது, ​​சாதனங்களை அணுக பயன்படுகிறது. இது ROM ஆக இருக்கும் போது, ​​திரையில் உள்ள எழுத்துக்களை அச்சிட பயன்படுகிறது (மானிட்டர்). இதன் பொருள் திரையில் எழுத்துக்கள் அச்சிடப்படுகின்றன அல்லது நினைவகத்தின் இந்தப் பகுதியைப் பயன்படுத்துவதன் மூலம் சாதனங்கள் அணுகப்படுகின்றன. சிஸ்டம் யூனிட்டில் (மதர்போர்டு) ரோம் பேங்க் (எழுத்து ரோம்) உள்ளது, அதை அடைவதற்கு முழு நினைவக இடத்திலும் மற்றும் வெளியே மாற்றப்படுகிறது. பயனர் மாறுவதை கவனிக்காமல் இருக்கலாம்.

$0100 இலிருந்து நினைவகத்தின் பகுதி (256 10 ) முதல் $01FF (511 10 ) ஸ்டாக் ஆகும். இது இயக்க முறைமை மற்றும் பயனர் நிரல்களால் பயன்படுத்தப்படுகிறது. இந்த ஆன்லைன் தொழில் படிப்பின் முந்தைய அத்தியாயத்தில் அடுக்கின் பங்கு விளக்கப்பட்டது. நினைவகத்தின் பரப்பளவு $0000 இலிருந்து (0 10 ) முதல் $00FF (255 10 ) இயக்க முறைமையால் பயன்படுத்தப்படுகிறது. பல குறிப்புகள் அங்கு ஒதுக்கப்பட்டுள்ளன.

கர்னல் ஜம்ப் டேபிள்
கெர்னல் பயனர் நிரலால் அழைக்கப்படும் நடைமுறைகளைக் கொண்டுள்ளது. OS இன் புதிய பதிப்புகள் வெளிவந்தவுடன், இந்த நடைமுறைகளின் முகவரிகள் மாறின. இதன் பொருள் பயனர் நிரல்கள் இனி புதிய OS பதிப்புகளுடன் வேலை செய்ய முடியாது. கொமடோர்-64 ஜம்ப் டேபிளை வழங்கியதால் இது நடக்கவில்லை. ஜம்ப் டேபிள் என்பது 39 உள்ளீடுகளின் பட்டியல். அட்டவணையில் உள்ள ஒவ்வொரு பதிவிலும் மூன்று முகவரிகள் உள்ளன (கடைசி 6 பைட்டுகள் தவிர) அவை இயக்க முறைமையின் பதிப்பு மாற்றத்துடன் கூட மாறாது.

ஒரு பதிவின் முதல் முகவரியில் JSR அறிவுறுத்தல் உள்ளது. அடுத்த இரண்டு முகவரிகள் இரண்டு பைட் சுட்டியைக் கொண்டிருக்கும். இந்த இரண்டு-பைட் சுட்டி என்பது OS ROM இல் இன்னும் இருக்கும் உண்மையான வழக்கமான முகவரி (அல்லது புதிய முகவரி) ஆகும். புதிய OS பதிப்புகளுடன் சுட்டிக்காட்டி உள்ளடக்கம் மாறலாம், ஆனால் ஒவ்வொரு ஜம்ப் டேபிள் நுழைவுக்கான மூன்று முகவரிகள் மாறாது. எடுத்துக்காட்டாக, $FF81, $FF82 மற்றும் $FF83 முகவரிகளைக் கவனியுங்கள். இந்த மூன்று முகவரிகளும் மதர்போர்டின் திரை மற்றும் விசைப்பலகை சுற்றுகளை (பதிவுகள்) தொடங்குவதற்கான வழக்கமானவை. $FF81 முகவரியில் எப்போதும் JSR இன் ஒப் குறியீடு (ஒரு பைட்) இருக்கும். $FF82 மற்றும் $FF83 முகவரிகள் சப்ரூட்டினின் பழைய அல்லது புதிய முகவரியைக் கொண்டுள்ளன (இன்னும் OS ROM இல் உள்ளது) துவக்கத்தை செய்ய. ஒரு காலத்தில், $FF82 மற்றும் $FF83 முகவரிகளில் $FF5B இன் உள்ளடக்கம் (முகவரி) இருந்தது, இது அடுத்த OS பதிப்பில் மாறலாம். இருப்பினும், ஜம்ப் டேபிளின் $FF81, $FF82 மற்றும் $FF83 முகவரிகள் மாறாது.

மூன்று முகவரிகளின் ஒவ்வொரு உள்ளீட்டிற்கும், JSR உடன் முதல் முகவரியில் ஒரு லேபிள் (பெயர்) உள்ளது. $FF81க்கான லேபிள் PCINT ஆகும். பிசிஐஎன்டி எப்போதும் மாறாது. எனவே, திரை மற்றும் விசைப்பலகை பதிவேடுகளை துவக்க, புரோகிராமர் 'JSR PCINT' என தட்டச்சு செய்யலாம், இது Commodore-64 OS இன் அனைத்து பதிப்புகளுக்கும் வேலை செய்கிறது. உண்மையான சப்ரூட்டினின் இருப்பிடம் (தொடக்க முகவரி), எ.கா., $FF5B, வெவ்வேறு இயக்க முறைமைகளுடன் காலப்போக்கில் மாறலாம். ஆம், ROM OS ஐப் பயன்படுத்தும் பயனர் நிரலில் குறைந்தது இரண்டு JSR வழிமுறைகள் உள்ளன. பயனர் நிரலில், ஜம்ப் டேபிளில் உள்ள ஒரு நுழைவுக்குச் செல்லும் JSR அறிவுறுத்தல் உள்ளது. ஜம்ப் டேபிளில் உள்ள கடைசி ஆறு முகவரிகளைத் தவிர, ஜம்ப் டேபிளில் உள்ள நுழைவின் முதல் முகவரி JSR அறிவுறுத்தலைக் கொண்டுள்ளது. கெர்னலில், சில சப்ரூட்டின்கள் மற்ற சப்ரூட்டின்களை அழைக்கலாம்.

$FFFA, $FFFC மற்றும் $FFFE ஆகிய குறைந்த பைட் முகவரிகளைக் கொண்ட மூன்று சுட்டிகளான கடைசி ஆறு பைட்டுகளைத் தவிர, மூன்று குழுக்களாக மேல்நோக்கிச் செல்லும் $FF81 (உள்ளடக்க) அட்டவணையில் இருந்து Kernal ஜம்ப் டேபிள் தொடங்குகிறது. அனைத்து ROM OS நடைமுறைகளும் மீண்டும் பயன்படுத்தக்கூடிய குறியீடுகள். எனவே, பயனர் அவற்றை மீண்டும் எழுத வேண்டியதில்லை.

கொமடோர்-64 சிஸ்டம் யூனிட்டின் தொகுதி வரைபடம்
பின்வரும் வரைபடம் முந்தைய அத்தியாயத்தில் உள்ளதை விட விரிவாக உள்ளது:


படம் 5.12 Commodore_64 சிஸ்டம் யூனிட்டின் தொகுதி வரைபடம்

ROM மற்றும் RAM ஆகியவை இங்கே ஒரு தொகுதியாகக் காட்டப்பட்டுள்ளன. முந்தைய அத்தியாயத்தில் காட்டப்படாத, திரையில் தகவலைக் கையாளும் வீடியோ இடைமுகச் சிப் (IC) இங்கே காட்டப்பட்டுள்ளது. முந்தைய அத்தியாயத்தில் காட்டப்பட்டுள்ள உள்ளீடு/வெளியீட்டு சாதனங்களுக்கான ஒற்றைத் தொகுதி இங்கு இரண்டு தொகுதிகளாகக் காட்டப்பட்டுள்ளது: CIA #1 மற்றும் CIA #2. சிஐஏ என்பது சிக்கலான இடைமுக அடாப்டரைக் குறிக்கிறது. ஒவ்வொன்றும் இரண்டு இணையான எட்டு-பிட் போர்ட்களை (கணினி அலகு செங்குத்து மேற்பரப்பில் வெளிப்புற போர்ட்களுடன் குழப்பக்கூடாது) போர்ட் A மற்றும் போர்ட் B என்று அழைக்கப்படுகின்றன. இந்த சூழ்நிலையில் CIA கள் ஐந்து வெளிப்புற சாதனங்களுடன் இணைக்கப்பட்டுள்ளன. சாதனங்கள் விசைப்பலகை, ஜாய்ஸ்டிக், வட்டு இயக்கி/அச்சுப்பொறி மற்றும் மோடம். அச்சுப்பொறி வட்டு இயக்ககத்தின் பின்புறத்தில் இணைக்கப்பட்டுள்ளது. ஒரு ஒலி இடைமுக சாதன சுற்று மற்றும் நிரல்படுத்தக்கூடிய லாஜிக் அரே சர்க்யூட் காட்டப்படவில்லை.

இருப்பினும், ஒரு எழுத்துக்குறி ROM உள்ளது, இது இரண்டு CIAக்களுடன் மாற்றப்படும், ஒரு எழுத்து திரைக்கு அனுப்பப்படும் போது அது தொகுதி வரைபடத்தில் காட்டப்படவில்லை.

RAM முகவரிகள் $D000 இலிருந்து $DFFF வரையிலான உள்ளீடு/வெளியீட்டு சுற்றுகளுக்கான ROM எழுத்துகள் இல்லாதபோது பின்வரும் விவரமான நினைவக வரைபடத்தைக் கொண்டுள்ளது:

அட்டவணை 5.11
$D000 முதல் $DFFF வரையிலான விரிவான நினைவக வரைபடம்
துணை முகவரி வரம்பு சுற்று அளவு (பைட்டுகள்)
D000 - D3FF விஐசி (வீடியோ இன்டர்ஃபேஸ் கன்ட்ரோலர் (சிப்)) 1K
D400 - D7FF SID (ஒலி சுற்று) 1K
D800 - DBFF கலர் ரேம் 1K நிபில்ஸ்
DC00 - DCFF சிஐஏ #1 (விசைப்பலகை, ஜாய்ஸ்டிக்) 256
DD00 - DDFF சிஐஏ #2 (சீரியல் பஸ், யூசர் போர்ட்/ஆர்எஸ்-232) 256
DE00 - DEF I/O ஸ்லாட்டைத் திறக்கவும் #1 256
DF00 - DFFF I/O ஸ்லாட்டைத் திறக்கவும் #2 256

5.2 இரண்டு சிக்கலான இடைமுக அடாப்டர்கள்

கொமடோர்-64 சிஸ்டம் யூனிட்டில் இரண்டு குறிப்பிட்ட ஒருங்கிணைந்த சுற்றுகள் (ஐசிக்கள்) உள்ளன, அவை ஒவ்வொன்றும் காம்ப்ளக்ஸ் இன்டர்ஃபேஸ் அடாப்டர் என்று அழைக்கப்படுகிறது. இந்த இரண்டு சில்லுகளும் விசைப்பலகை மற்றும் பிற சாதனங்களை நுண்செயலியுடன் இணைக்கப் பயன்படுகின்றன. விஐசி மற்றும் திரையைத் தவிர, நுண்செயலி மற்றும் சாதனங்களுக்கு இடையே உள்ள அனைத்து உள்ளீடு/வெளியீட்டு சமிக்ஞைகளும் இந்த இரண்டு ஐசிகள் வழியாகச் செல்கின்றன. கொமடோர்-64 உடன், நினைவகத்திற்கும் எந்த புறத்திற்கும் இடையே நேரடி தொடர்பு இல்லை. நினைவகம் மற்றும் எந்த புறநிலைக்கும் இடையேயான தொடர்பு நுண்செயலி திரட்டி வழியாக செல்கிறது, மேலும் இவற்றில் ஒன்று சிஐஏ அடாப்டர்கள் (ஐசிக்கள்) ஆகும். ICகள் CIA #1 மற்றும் CIA #2 என குறிப்பிடப்படுகின்றன. சிஐஏ என்பது சிக்கலான இடைமுக அடாப்டரைக் குறிக்கிறது.

ஒவ்வொரு CIAக்கும் 16 பதிவுகள் உள்ளன. CIA இல் உள்ள டைமர்/கவுண்டர் பதிவுகளைத் தவிர, ஒவ்வொரு பதிவேடும் 8-பிட் அகலம் மற்றும் நினைவக முகவரியைக் கொண்டுள்ளது. CIA #1க்கான நினைவகப் பதிவு முகவரிகள் $DC00 (56320 10 ) முதல் $DC0F (56335 10 ) CIA #2 க்கான நினைவகப் பதிவு முகவரிகள் $DD00 (56576 10 ) முதல் $DD0F (56591 10 ) இந்த பதிவேடுகள் ஐசி நினைவகத்தில் இல்லை என்றாலும், அவை நினைவகத்தின் ஒரு பகுதியாகும். இடைநிலை நினைவக வரைபடத்தில், $D000 முதல் $DFFF வரையிலான I/O பகுதியில் $DC00 முதல் $DC0F வரை மற்றும் $DD00 முதல் $DD0F வரையிலான CIA முகவரிகள் உள்ளன. $D000 முதல் $DFFF வரையிலான ரேம் I/O நினைவகப் பகுதியின் பெரும்பாலானவை திரை எழுத்துகளுக்கு ROM என்ற எழுத்தின் நினைவக வங்கியுடன் மாற்றிக்கொள்ளலாம். அதனால்தான் எழுத்துக்கள் திரைக்கு அனுப்பப்படும் போது, ​​சாதனங்கள் செயல்பட முடியாது; முன்னும் பின்னுமாக மாற்றுவது வேகமாக இருப்பதால் பயனர் இதை கவனிக்காமல் இருக்கலாம்.

சிஐஏ #1 இல் போர்ட் ஏ மற்றும் போர்ட் பி என இரண்டு பதிவுகள் உள்ளன. அவற்றின் முகவரிகள் முறையே $DC00 மற்றும் $DC01 ஆகும். சிஐஏ #2 இல் போர்ட் ஏ மற்றும் போர்ட் பி என்று இரண்டு பதிவேடுகள் உள்ளன. நிச்சயமாக, அவற்றின் முகவரிகள் வேறுபட்டவை; அவை முறையே $DD00 மற்றும் $DD01 ஆகும்.

சிஐஏவில் உள்ள போர்ட் ஏ அல்லது போர்ட் பி ஒரு இணையான துறைமுகமாகும். இதன் பொருள், இது ஒரே நேரத்தில் எட்டு பிட்களில் தரவை புறத்திற்கு அனுப்பலாம் அல்லது நுண்செயலியில் இருந்து ஒரே நேரத்தில் எட்டு பிட்களில் தரவைப் பெறலாம்.

போர்ட் A அல்லது போர்ட் B உடன் தொடர்புடையது தரவு திசைப் பதிவேடு (DDR). CIA #1 (DDRA1) இன் போர்ட் Aக்கான தரவு திசைப் பதிவு $DC02 இன் நினைவக பைட் இடத்தில் உள்ளது. CIA #1 (DDRB1) இன் போர்ட் Bக்கான தரவு திசைப் பதிவு $DC03 இன் நினைவக பைட் இடத்தில் உள்ளது. CIA #2 (DDRA2) இன் போர்ட் Aக்கான தரவு திசைப் பதிவு $DD02 இன் நினைவக பைட் இடத்தில் உள்ளது. CIA #2 (DDRB2) இன் போர்ட் Bக்கான தரவு திசைப் பதிவு $DD03 இன் நினைவக பைட் இடத்தில் உள்ளது.

இப்போது, ​​போர்ட் A அல்லது போர்ட் Bக்கான ஒவ்வொரு பிட்டையும் தொடர்புடைய தரவு திசைப் பதிவேட்டில் உள்ளீடு அல்லது வெளியீட்டாக அமைக்கலாம். உள்ளீடு என்பது சிஐஏ மூலம் புறத்திலிருந்து நுண்செயலிக்கு தகவல் செல்கிறது. வெளியீடு என்பது சிஐஏ மூலம் தகவல் நுண்செயலியில் இருந்து புறநிலைக்கு செல்கிறது.

ஒரு போர்ட்டின் (பதிவு) ஒரு கலத்தை உள்ளிட வேண்டும் என்றால், தரவுத் திசைப் பதிவேட்டில் உள்ள தொடர்புடைய பிட் 0. ஒரு போர்ட்டின் (பதிவு) ஒரு கலத்தை வெளியிட வேண்டும் என்றால், தரவுத் திசைப் பதிவேட்டில் தொடர்புடைய பிட் 1 ஆகும். பெரும்பாலான சந்தர்ப்பங்களில், ஒரு போர்ட்டின் அனைத்து 8-பிட்களும் உள்ளீடு அல்லது வெளியீட்டில் திட்டமிடப்பட்டுள்ளன. கணினி இயக்கப்பட்டால், போர்ட் A வெளியீட்டிற்காகவும், போர்ட் B உள்ளீட்டிற்காகவும் திட்டமிடப்படும். பின்வரும் குறியீடு CIA #1 போர்ட் A ஐ வெளியீட்டாகவும், CIA #1 போர்ட் B ஐ உள்ளீடாகவும் செய்கிறது:

LDA #$FF
STA DDRA1 ; $DC00 ஐ $DC02 இயக்கியுள்ளார்
LDA #$00
STA DDRB1 ; $DC01 ஐ $DC03 இயக்கியுள்ளார்

DDRA1 என்பது $DC02 இன் நினைவக பைட் இருப்பிடத்திற்கான லேபிள் (மாறி பெயர்), மற்றும் DDRB1 என்பது $DC03 இன் நினைவக பைட் இருப்பிடத்திற்கான லேபிள் (மாறி பெயர்). முதல் அறிவுறுத்தல் 11111111 ஐ µP இன் திரட்டிக்கு ஏற்றுகிறது. இரண்டாவது அறிவுறுத்தல், CIA எண் போர்ட் A இன் தரவு திசைப் பதிவேட்டில் இதை நகலெடுக்கிறது. 1. மூன்றாவது அறிவுறுத்தல் 00000000 ஐ µP இன் திரட்டிக்கு ஏற்றுகிறது. நான்காவது அறிவுறுத்தல் இதை CIA எண் போர்ட் B இன் தரவு திசைப் பதிவேட்டில் நகலெடுக்கிறது. 1. கணினி பவர்-அப்பில் இந்த துவக்கத்தை செய்யும் இயக்க முறைமையில் உள்ள துணை நிரல்களில் இந்த குறியீடு உள்ளது.

ஒவ்வொரு சிஐஏவும் நுண்செயலிக்கு குறுக்கீடு சேவை கோரிக்கை வரியைக் கொண்டுள்ளது. சிஐஏ #1 இல் இருந்து ஒருவர் செல்கின்றார் IRQ µP இன் முள். சிஐஏ #2 இல் இருந்து ஒருவர் செல்கிறார் என்எம்ஐ µP இன் முள். அதை நினைவில் கொள் என்எம்ஐ விட அதிக முன்னுரிமை உள்ளது IRQ .

5.3 விசைப்பலகை சட்டசபை மொழி நிரலாக்கம்

Commodore-64 க்கு மூன்று சாத்தியமான குறுக்கீடுகள் மட்டுமே உள்ளன: IRQ , BRK, மற்றும் என்எம்ஐ . ஜம்ப் டேபிள் பாயிண்டர் IRQ ROM இல் உள்ள $FFFE மற்றும் $FFFF முகவரிகளில் உள்ளது (இயக்க முறைமை) BRKக்கான ஜம்ப் டேபிள் பாயிண்டர், OS இல் உள்ள $FFFC மற்றும் $FFFD முகவரிகளில் உள்ளது, இது OS இல் (ROM) உள்ள சப்ரூட்டினுடன் தொடர்புடையது. ஜம்ப் டேபிள் பாயிண்டர் என்எம்ஐ OS இல் உள்ள $FFFA மற்றும் $FFFB முகவரிகளில் உள்ளது. அதற்காக IRQ , உண்மையில் இரண்டு subroutines உள்ளன. எனவே, BRK மென்பொருள் குறுக்கீடு (அறிவுறுத்தல்) அதன் சொந்த ஜம்ப் டேபிள் பாயிண்டரைக் கொண்டுள்ளது. ஜம்ப் டேபிள் பாயிண்டர் IRQ வன்பொருள் குறுக்கீடு அல்லது மென்பொருள் குறுக்கீடு ஈடுபட்டுள்ளதா என்பதை தீர்மானிக்கும் குறியீட்டிற்கு வழிவகுக்கிறது. வன்பொருள் குறுக்கீடு என்றால், வழக்கமானது IRQ அழைக்கப்படுகிறது. இது மென்பொருள் குறுக்கீடு (BRK) என்றால், BRK க்கான வழக்கமானது அழைக்கப்படுகிறது. OS பதிப்புகளில் ஒன்றில், சப்ரூட்டின் IRQ $EA31 இல் உள்ளது மற்றும் BRK க்கான சப்ரூட்டின் $FE66 இல் உள்ளது. இந்த முகவரிகள் $FF81க்குக் கீழே உள்ளன, எனவே அவை ஜம்ப் டேபிள் உள்ளீடுகள் அல்ல, மேலும் அவை OS பதிப்பில் மாறலாம். இந்தத் தலைப்பில் ஆர்வமுள்ள மூன்று நடைமுறைகள் உள்ளன: இது ஒரு விசை அழுத்தப்பட்டதா அல்லது BRKதா என்பதைச் சரிபார்க்கும் ஒன்று, $FE43 இல் உள்ள ஒன்று மற்றும் OS பதிப்பிலும் மாறக்கூடிய ஒன்று.

Commodore-64 கணினியானது அச்சிடும் பகுதி (தலை மற்றும் காகிதம்) இல்லாமல் தோற்றத்தில் ஒரு பெரிய தட்டச்சு-எழுத்தாளர் (மேல்நோக்கி) போன்றது. விசைப்பலகை CIA #1 உடன் இணைக்கப்பட்டுள்ளது. CIA #1 விசைப்பலகையை ஒவ்வொரு 1/60 வினாடிக்கும் எந்த நிரலாக்க குறுக்கீடும் இல்லாமல் தானாகவே ஸ்கேன் செய்கிறது. எனவே, ஒவ்வொரு 1/60 வினாடிக்கும், CIA #1 அனுப்புகிறது IRQ µPக்கு. அங்கே ஒன்று மட்டும் இருக்கிறது IRQ CIA #1 இலிருந்து மட்டும் வரும் µP இல் பின் செய்யவும். ஒரு உள்ளீட்டு முள் என்எம்ஐ µP இன், இது வேறுபட்டது IRQ , CIA #2 இலிருந்து மட்டுமே வருகிறது (பின்வரும் விளக்கப்படத்தைப் பார்க்கவும்). BRK என்பது ஒரு பயனர் நிரலில் குறியிடப்பட்ட ஒரு சட்டசபை மொழி அறிவுறுத்தலாகும்.

எனவே, ஒவ்வொரு 1/60 வினாடியும், தி IRQ $FFFE மற்றும் $FFFF மூலம் சுட்டிக்காட்டப்படும் வழக்கம் அழைக்கப்படுகிறது. ஒரு விசை அழுத்தப்பட்டதா அல்லது BRK அறிவுறுத்தல்கள் உள்ளதா என்பதை வழக்கமான சரிபார்க்கிறது. ஒரு விசையை அழுத்தினால், விசை அழுத்தத்தைக் கையாளும் வழக்கம் அழைக்கப்படுகிறது. இது BRK அறிவுறுத்தலாக இருந்தால், BRK ஐக் கையாளும் வழக்கம் அழைக்கப்படுகிறது. அதுவும் இல்லை என்றால் எதுவும் நடக்காது. எதுவும் நிகழாது, ஆனால் CIA #1 அனுப்புகிறது IRQ ஒவ்வொரு 1/60 வினாடிக்கும் µPக்கு.

விசைப்பலகை வரிசை, விசைப்பலகை இடையகம் என்றும் அழைக்கப்படுகிறது, இது $0277 முதல் $0280 வரையிலான ரேம் பைட் இடங்களின் வரம்பாகும். மொத்தம் 1010 பைட்டுகள். இது ஃபர்ஸ்ட்-இன்-ஃபர்ஸ்ட்-அவுட் பஃபர். அதாவது முதலில் வரும் கேரக்டர் தான் முதலில் கிளம்பும். ஒரு மேற்கத்திய ஐரோப்பிய எழுத்து ஒரு பைட் எடுக்கும்.

எனவே, ஒரு விசையை அழுத்தும் போது நிரல் எந்த எழுத்தையும் பயன்படுத்தவில்லை என்றாலும், முக்கிய குறியீடு இந்த இடையகத்திற்கு (வரிசை) செல்கிறது. பத்து எழுத்துகள் இருக்கும் வரை தாங்கல் நிரப்பப்பட்டுக்கொண்டே இருக்கும். பத்தாவது எழுத்துக்குப் பிறகு அழுத்தும் எந்த எழுத்தும் பதிவு செய்யப்படவில்லை. வரிசையில் இருந்து குறைந்தபட்சம் ஒரு எழுத்து (நுகர்வு) கிடைக்கும் வரை இது புறக்கணிக்கப்படும். ஜம்ப் டேபிளில் சப்ரூட்டினுக்கான நுழைவு உள்ளது, இது வரிசையிலிருந்து நுண்செயலிக்கு முதல் எழுத்தைப் பெறுகிறது. அதாவது வரிசையில் செல்லும் அந்த முதல் எழுத்தை எடுத்து µP இன் குவிப்பானில் வைக்கிறது. இதைச் செய்வதற்கான ஜம்ப் டேபிள் சப்ரூட்டின் GETIN (கெட்-இன்) என்று அழைக்கப்படுகிறது. ஜம்ப் டேபிளில் மூன்று பைட் உள்ளீட்டிற்கான முதல் பைட் GETIN (முகவரி $FFE4) என லேபிளிடப்பட்டுள்ளது. அடுத்த இரண்டு பைட்டுகள் சுட்டிக்காட்டி (முகவரி) ROM (OS) இல் உள்ள உண்மையான வழக்கத்தை சுட்டிக்காட்டுகிறது. இந்த வழக்கத்தை அழைப்பது புரோகிராமரின் பொறுப்பாகும். இல்லையெனில், விசைப்பலகை இடையகமானது நிரம்பியிருக்கும் மற்றும் சமீபத்தில் அழுத்தப்பட்ட அனைத்து விசைகளும் புறக்கணிக்கப்படும். திரட்டிக்குள் செல்லும் மதிப்பு, தொடர்புடைய விசை ASCII மதிப்பாகும்.

முக்கிய குறியீடுகள் எப்படி முதலில் வரிசையில் வரும்? SCNKEY (ஸ்கேன் விசைக்கு) எனப்படும் ஜம்ப் டேபிள் வழக்கம் உள்ளது. இந்த வழக்கத்தை மென்பொருள் மற்றும் வன்பொருள் இரண்டாலும் அழைக்கலாம். இந்த வழக்கில், இது மின் சமிக்ஞையின் போது நுண்செயலியில் மின்னணு (இயற்பியல்) சுற்று மூலம் அழைக்கப்படுகிறது. IRQ குறைவாக இருக்கிறது. அது எப்படிச் சரியாகச் செய்யப்படுகிறது என்பது இந்த ஆன்லைன் தொழில் படிப்பில் குறிப்பிடப்படவில்லை.

விசைப்பலகை இடையகத்திலிருந்து திரட்டி A இல் முதல் முக்கிய குறியீட்டைப் பெறுவதற்கான குறியீடு ஒரு வரி மட்டுமே:

உள்ளே வா

விசைப்பலகை தாங்கல் காலியாக இருந்தால், $00 குவிப்பானில் வைக்கப்படும். பூஜ்ஜியத்திற்கான ASCII குறியீடு $00 அல்ல என்பதை நினைவில் கொள்ளுங்கள்; அது $30 ஆகும். $00 என்றால் பூஜ்யம். ஒரு நிரலில், நிரல் ஒரு முக்கிய அழுத்தத்திற்காக காத்திருக்க வேண்டிய ஒரு புள்ளி இருக்கலாம். இதற்கான குறியீடு:

ஜே.எஸ்.ஆர் பெற காத்திருக்கவும்
CMP #$00
தவளை காத்திருக்கவும்

முதல் வரியில், 'WAIT' என்பது ரேம் முகவரியைக் குறிக்கும் ஒரு லேபிள் ஆகும், அதில் JSR அறிவுறுத்தல்கள் (டைப் செய்யப்பட்ட) உள்ளிடப்பட்டுள்ளன. GETIN என்பதும் ஒரு முகவரியாகும். இது ஜம்ப் டேபிளில் உள்ள தொடர்புடைய மூன்று பைட்டுகளில் முதல் முகவரி. GETIN நுழைவு, அத்துடன் ஜம்ப் டேபிளில் உள்ள அனைத்து உள்ளீடுகளும் (கடைசி மூன்று தவிர), மூன்று பைட்டுகளைக் கொண்டுள்ளது. நுழைவின் முதல் பைட் JSR அறிவுறுத்தலாகும். அடுத்த இரண்டு பைட்டுகள் உண்மையான GETIN சப்ரூட்டினின் உடலின் முகவரியாகும், இது இன்னும் ROM (OS) இல் உள்ளது, ஆனால் ஜம்ப் டேபிளுக்கு கீழே உள்ளது. எனவே, நுழைவு GETIN சப்ரூட்டினுக்கு செல்லுமாறு கூறுகிறது. விசைப்பலகை வரிசை காலியாக இல்லாவிட்டால், ஃபர்ஸ்ட்-இன்-ஃபர்ஸ்ட்-அவுட் வரிசையின் ASCII விசைக் குறியீட்டை GETIN திரட்டியில் வைக்கிறது. வரிசை காலியாக இருந்தால், Null ($00) திரட்டியில் வைக்கப்படும்.

இரண்டாவது அறிவுறுத்தல் திரட்டி மதிப்பை $00 உடன் ஒப்பிடுகிறது. இது $00 எனில், விசைப்பலகை வரிசை காலியாக உள்ளது என்று அர்த்தம், மேலும் CMP அறிவுறுத்தல் செயலி நிலைப் பதிவேட்டின் Z கொடிக்கு 1 ஐ அனுப்புகிறது (வெறுமனே நிலைப் பதிவு என்று அழைக்கப்படுகிறது). A இல் மதிப்பு $00 இல்லை என்றால், CMP அறிவுறுத்தல் நிலைப் பதிவேட்டின் Z கொடிக்கு 0 ஐ அனுப்புகிறது.

'BEQ WAIT' என்ற மூன்றாவது அறிவுறுத்தலானது, நிலைப் பதிவேட்டின் Z கொடி 1 ஆக இருந்தால், நிரலை முதல் அறிவுறுத்தலுக்குத் திருப்பி அனுப்புகிறது. விசைப்பலகையில் ஒரு விசையை அழுத்தும் வரை முதல், இரண்டாவது மற்றும் மூன்றாவது வழிமுறைகள் மீண்டும் மீண்டும் செயல்படுத்தப்படும். . ஒரு விசையை ஒருபோதும் அழுத்தவில்லை என்றால், சுழற்சி காலவரையின்றி மீண்டும் நிகழ்கிறது. இது போன்ற ஒரு குறியீட்டுப் பிரிவு பொதுவாக நேரக் குறியீட்டுப் பிரிவுடன் எழுதப்படுகிறது, இது ஒரு விசையை அழுத்தாமல் இருந்தால் சிறிது நேரம் கழித்து லூப்பில் இருந்து வெளியேறும் (பின்வரும் விவாதத்தைப் பார்க்கவும்).

குறிப்பு : விசைப்பலகை இயல்பு உள்ளீட்டு சாதனம் மற்றும் திரை இயல்புநிலை வெளியீட்டு சாதனமாகும்.

5.4 சேனல், சாதன எண் மற்றும் தருக்க கோப்பு எண்

இந்த அத்தியாயம் Commodore-64 ஆப்பரேட்டிங் சிஸ்டத்தை விளக்குவதற்கு பயன்படுத்தும் சாதனங்கள், விசைப்பலகை, திரை (மானிட்டர்), டிஸ்கெட்டுடன் கூடிய வட்டு இயக்கி, பிரிண்டர் மற்றும் RS-232C இடைமுகம் மூலம் இணைக்கும் மோடம். இந்த சாதனங்களுக்கும் சிஸ்டம் யூனிட்டிற்கும் (நுண்செயலி மற்றும் நினைவகம்) இடையே தொடர்பு நடைபெற, ஒரு சேனல் நிறுவப்பட வேண்டும்.

ஒரு சேனலானது ஒரு இடையக, சாதன எண், தருக்க கோப்பு எண் மற்றும் விருப்பமாக இரண்டாம் முகவரி ஆகியவற்றைக் கொண்டுள்ளது. இந்த விதிமுறைகளின் விளக்கம் பின்வருமாறு:

ஒரு தாங்கல்
ஒரு விசையை அழுத்தும் போது, ​​அதன் குறியீடு தொடர்ச்சியாக பத்து இடங்களில் உள்ள RAM இல் உள்ள பைட் இடத்திற்குச் செல்ல வேண்டும் என்பதை முந்தைய பிரிவில் இருந்து கவனிக்கவும். பத்து இடங்களைக் கொண்ட இந்தத் தொடர் விசைப்பலகை இடையகமாகும். ஒவ்வொரு உள்ளீடு அல்லது வெளியீட்டு சாதனமும் (பெரிஃபெரல்) ரேமில் இடையகம் எனப்படும் தொடர்ச்சியான இடங்களைக் கொண்டுள்ளது.

கருவி எண்
Commodore-64 உடன், எந்த புறமும் சாதன எண்ணுடன் கொடுக்கப்பட்டுள்ளது. பின்வரும் அட்டவணை வெவ்வேறு சாதனங்களையும் அவற்றின் எண்களையும் காட்டுகிறது:

அட்டவணை 5.41
கொமடோர் 64 சாதன எண்கள் மற்றும் அவற்றின் சாதனங்கள்
எண் சாதனம்
0 விசைப்பலகை
1 டேப் டிரைவ்
2 RS 232C இடைமுகம் எ.கா. ஒரு மோடம்
3 திரை
4 அச்சுப்பொறி #1
5 அச்சுப்பொறி #2
6 ப்ளாட்டர் #1
7 ப்ளாட்டர் #2
8 வட்டு இயக்கி
9
¦
¦
¦
30
8 (உள்ளடங்கியது) இலிருந்து மேலும் 22 சேமிப்பக சாதனங்கள் வரை

கணினிக்கு இரண்டு வகையான போர்ட்கள் உள்ளன. ஒரு வகை வெளிப்புறமானது, கணினி அலகு செங்குத்து மேற்பரப்பில் உள்ளது. மற்ற வகை அகம். இந்த உள் துறைமுகம் ஒரு பதிவு. கொமடோர்-64 நான்கு உள் துறைமுகங்களைக் கொண்டுள்ளது: சிஐஏ 1க்கான போர்ட் ஏ மற்றும் போர்ட் பி மற்றும் சிஐஏ 2க்கான போர்ட் ஏ மற்றும் போர்ட் பி. கொமடோர்-64 க்கு ஒரு வெளிப்புற போர்ட் உள்ளது, இது சீரியல் போர்ட் என்று அழைக்கப்படுகிறது. மேல்நோக்கி எண் 3 கொண்ட சாதனங்கள் தொடர் போர்ட்டுடன் இணைக்கப்பட்டுள்ளன. அவை டெய்சி சங்கிலி பாணியில் இணைக்கப்பட்டுள்ளன (ஒன்று மற்றொன்றுக்கு பின்னால் இணைக்கப்பட்டுள்ளது), ஒவ்வொன்றும் அதன் சாதன எண்ணால் அடையாளம் காணப்படுகின்றன. மேல்நோக்கி எண் 8 கொண்ட சாதனங்கள் பொதுவாக சேமிப்பக சாதனங்களாகும்.

குறிப்பு : இயல்பு உள்ளீட்டு சாதனம் என்பது சாதன எண் 0 கொண்ட விசைப்பலகை ஆகும். இயல்புநிலை வெளியீட்டு சாதனம் என்பது சாதன எண் 3 கொண்ட திரையாகும்.

தருக்க கோப்பு எண்
தருக்கக் கோப்பு எண் என்பது ஒரு சாதனம் (புறம்) அணுகுவதற்காக திறக்கப்படும் வரிசையில் கொடுக்கப்பட்ட எண்ணாகும். அவை 010 முதல் 255 வரை இருக்கும் 10 .

இரண்டாம் நிலை முகவரி
வட்டில் இரண்டு கோப்புகள் (அல்லது ஒன்றுக்கு மேற்பட்ட கோப்புகள்) திறக்கப்பட்டுள்ளன என்று கற்பனை செய்து பாருங்கள். இந்த இரண்டு கோப்புகளையும் வேறுபடுத்த, இரண்டாம் நிலை முகவரிகள் பயன்படுத்தப்படுகின்றன. இரண்டாம் நிலை முகவரிகள் என்பது சாதனத்திற்கு சாதனம் மாறுபடும் எண்கள். அச்சுப்பொறிக்கான இரண்டாம் நிலை முகவரியாக 3 என்பதன் பொருள் வட்டு இயக்ககத்திற்கான இரண்டாம் நிலை முகவரியாக 3 என்பதன் அர்த்தத்திலிருந்து வேறுபட்டது. ஒரு கோப்பு படிக்கத் திறக்கப்படும்போது அல்லது எழுதுவதற்கு ஒரு கோப்பு திறக்கப்படும்போது போன்ற அம்சங்களைப் பொறுத்தது. சாத்தியமான இரண்டாம் நிலை எண்கள் 0 இலிருந்து 10 15 வரை 10 ஒவ்வொரு சாதனத்திற்கும். பல சாதனங்களுக்கு, கட்டளைகளை அனுப்ப எண் 15 பயன்படுத்தப்படுகிறது.

குறிப்பு : சாதன எண் சாதன முகவரி என்றும், இரண்டாம் எண் இரண்டாம் நிலை முகவரி என்றும் அறியப்படுகிறது.

ஒரு புற இலக்கை அடையாளம் காணுதல்
இயல்புநிலை Commodore நினைவக வரைபடத்திற்கு, $0200 முதல் $02FF வரையிலான நினைவக முகவரிகள் (பக்கம் 2) ROM (Kernal) இல் உள்ள இயக்க முறைமையால் மட்டுமே பயன்படுத்தப்படுகின்றன, மேலும் இயக்க முறைமை மற்றும் அடிப்படை மொழியால் அல்ல. ROM OS மூலம் BASIC இன்னும் இருப்பிடங்களைப் பயன்படுத்த முடியும்.

மோடம் மற்றும் பிரிண்டர் இரண்டு வெவ்வேறு புற இலக்குகள். வட்டில் இருந்து இரண்டு கோப்புகள் திறக்கப்பட்டால், அவை இரண்டு வெவ்வேறு இலக்குகள். இயல்புநிலை நினைவக வரைபடத்தில், மூன்று தொடர்ச்சியான அட்டவணைகள் (பட்டியல்கள்) உள்ளன, அவை ஒரு பெரிய அட்டவணையாகக் காணப்படுகின்றன. இந்த மூன்று அட்டவணைகளும் தருக்க கோப்பு எண்கள், சாதன எண்கள் மற்றும் இரண்டாம் நிலை முகவரிகளுக்கு இடையேயான தொடர்பைக் கொண்டுள்ளன. அதன் மூலம், ஒரு குறிப்பிட்ட சேனல் அல்லது உள்ளீடு/வெளியீட்டு இலக்கு அடையாளம் காணக்கூடியதாகிறது. மூன்று அட்டவணைகள் கோப்பு அட்டவணைகள் என்று அழைக்கப்படுகின்றன. ரேம் முகவரிகள் மற்றும் அவை என்ன:

$0259 — $0262: லேபிள், LAT, பத்து செயலில் உள்ள தருக்கக் கோப்பு எண்கள் கொண்ட அட்டவணை.
$0263 — $026C: லேபிள், FAT, பத்து தொடர்புடைய சாதன எண்கள் கொண்ட அட்டவணை.
$026D — $0276: பத்து தொடர்புடைய இரண்டாம் முகவரிகளின் லேபிள், SAT உடன் அட்டவணை.

இங்கே, '-' என்றால் 'to', மற்றும் ஒரு எண் ஒரு பைட் எடுக்கும்.

வாசகர் கேட்கலாம், 'ஒவ்வொரு சாதனத்திற்கும் இடையகமானது சேனலை அடையாளம் காண்பதில் ஏன் சேர்க்கப்படவில்லை?' சரி, பதில் commodore-64 உடன், ஒவ்வொரு வெளிப்புற சாதனமும் (புறம்) RAM இல் (நினைவக வரைபடம்) நிலையான தொடர் பைட்டுகளைக் கொண்டுள்ளது. திறந்த சேனல்கள் இல்லாமல், அவர்களின் நிலைகள் இன்னும் நினைவகத்தில் உள்ளன. எடுத்துக்காட்டாக, விசைப்பலகைக்கான இடையகமானது இயல்புநிலை நினைவக வரைபடத்திற்கு $0277 முதல் $0280 வரை (உள்ளடக்கப்பட்டது) நிலையானது.

கெர்னல் SETLFS மற்றும் SETNAM சப்ரூடின்கள்
SETLFS மற்றும் SETNAM ஆகியவை கர்னல் நடைமுறைகள். ஒரு சேனலை தருக்கக் கோப்பாகக் காணலாம். ஒரு சேனலைத் திறக்க, தருக்கக் கோப்பு எண், சாதன எண் மற்றும் விருப்பமான இரண்டாம் முகவரி ஆகியவை உருவாக்கப்பட வேண்டும். ஒரு விருப்ப கோப்புப் பெயரும் (உரை) தேவைப்படலாம். SETLFS வழக்கம் தருக்க கோப்பு எண், சாதன எண் மற்றும் விருப்பமான இரண்டாம் முகவரியை அமைக்கிறது. இந்த எண்கள் அந்தந்த அட்டவணையில் வைக்கப்பட்டுள்ளன. SETNAM ரொட்டீன் கோப்பிற்கு ஒரு சரப் பெயரை அமைக்கிறது, இது ஒரு சேனலுக்கு கட்டாயமாகவும் மற்றொரு சேனலுக்கு விருப்பமாகவும் இருக்கலாம். இது நினைவகத்தில் ஒரு சுட்டியை (இரண்டு பைட் முகவரி) கொண்டுள்ளது. நினைவகத்தில் வேறொரு இடத்தில் இருக்கக்கூடிய சரத்தின் (பெயர்) தொடக்கத்தை சுட்டிக்காட்டி சுட்டிக்காட்டுகிறது. சரத்தின் பெயர் ஒரு பைட்டுடன் தொடங்குகிறது, அது சரத்தின் நீளத்தைக் கொண்டுள்ளது, அதைத் தொடர்ந்து உரை (பெயர்) உள்ளது. பெயர் அதிகபட்சம் பதினாறு பைட்டுகள் (நீளம்).

SETLFS வழக்கத்தை அழைக்க, பயனர் நிரல் இயல்புநிலை நினைவக வரைபடத்திற்கு ROM இல் உள்ள OS இன் ஜம்ப் டேபிளின் $FFBA முகவரிக்கு (JSR) செல்ல வேண்டும். ஜம்ப் டேபிளின் கடைசி ஆறு பைட்டுகளைத் தவிர, ஒவ்வொரு உள்ளீடும் மூன்று பைட்டுகளைக் கொண்டிருக்கும் என்பதை நினைவில் கொள்ளுங்கள். முதல் பைட் ஜே.எஸ்.ஆர் அறிவுறுத்தலாகும், இது சப்ரூட்டினுக்குத் தாவுகிறது, அடுத்த இரண்டு பைட்டுகளில் உள்ள முகவரியில் தொடங்குகிறது. SETNAM வழக்கத்தை அழைக்க, பயனர் நிரல் ROM இல் உள்ள OS இன் ஜம்ப் டேபிளின் $FFBD முகவரிக்கு (JSR) செல்ல வேண்டும். இந்த இரண்டு நடைமுறைகளின் பயன்பாடு பின்வரும் விவாதத்தில் காட்டப்பட்டுள்ளது.

5.5 ஒரு சேனலைத் திறப்பது, ஒரு தருக்கக் கோப்பைத் திறப்பது, ஒரு தருக்கக் கோப்பை மூடுவது மற்றும் அனைத்து I/O சேனல்களையும் மூடுவது

ஒரு சேனலில் மெமரி பஃபர், தருக்க கோப்பு எண், சாதன எண் (சாதன முகவரி) மற்றும் விருப்பமான இரண்டாம் நிலை முகவரி (ஒரு எண்) ஆகியவை உள்ளன. தருக்கக் கோப்பு எண்ணால் அடையாளம் காணப்படும் தருக்கக் கோப்பு (சுருக்கம்) அச்சுப்பொறி, மோடம், வட்டு இயக்கி போன்ற புறப்பொருளைக் குறிக்கலாம். இந்த வெவ்வேறு சாதனங்கள் ஒவ்வொன்றும் வெவ்வேறு தருக்க கோப்பு எண்களைக் கொண்டிருக்க வேண்டும். வட்டில் பல கோப்புகள் உள்ளன. ஒரு தருக்க கோப்பு வட்டில் உள்ள ஒரு குறிப்பிட்ட கோப்பையும் குறிக்கலாம். குறிப்பிட்ட கோப்பில் அச்சுப்பொறி அல்லது மோடம் போன்ற சாதனங்களில் இருந்து வேறுபட்ட ஒரு தருக்க கோப்பு எண் உள்ளது. தருக்க கோப்பு எண் புரோகிராமரால் வழங்கப்படுகிறது. இது 010 ($00) முதல் 25510 ($FF) வரை எந்த எண்ணாகவும் இருக்கலாம்.

OS SETLFS வழக்கம்
$FFBA இல் OS ROM ஜம்ப் டேபிளுக்கு ஜம்பிங் (JSR) மூலம் அணுகப்படும் OS SETLFS ரொட்டீன் சேனலை அமைக்கிறது. இது LAT ($0259 — $0262) என்ற கோப்பு அட்டவணையில் தருக்க கோப்பு எண்ணை வைக்க வேண்டும். இது FAT ($0263 — $026C) கோப்பு அட்டவணையில் தொடர்புடைய சாதன எண்ணை வைக்க வேண்டும். கோப்பு (சாதனம்) அணுகலுக்கு இரண்டாம் நிலை எண் தேவைப்பட்டால், அது SAT ($026D — $0276) கோப்பு அட்டவணையில் தொடர்புடைய இரண்டாம் நிலை முகவரியை (எண்) வைக்க வேண்டும்.

செயல்பட, SETLFS சப்ரூட்டின் µP திரட்டியிலிருந்து தருக்க கோப்பு எண்ணைப் பெற வேண்டும்; µP X பதிவேட்டில் இருந்து சாதன எண்ணைப் பெற வேண்டும். சேனலுக்குத் தேவைப்பட்டால், அது µP Y பதிவேட்டில் இருந்து இரண்டாம் முகவரியைப் பெற வேண்டும்.

தருக்க கோப்பு எண் புரோகிராமரால் தீர்மானிக்கப்படுகிறது. வெவ்வேறு சாதனங்களைக் குறிக்கும் தருக்க கோப்பு எண்கள் வேறுபட்டவை. இப்போது, ​​SETLFS வழக்கத்தை அழைப்பதற்கு முன், புரோகிராமர் தருக்கக் கோப்பிற்கான எண்ணை µP திரட்டியில் வைக்க வேண்டும். சாதன எண் அட்டவணை 5.41 போன்ற அட்டவணையில் (ஆவணம்) இருந்து படிக்கப்படுகிறது. புரோகிராமர் சாதன எண்ணை µP X பதிவேட்டில் வைக்க வேண்டும். அச்சுப்பொறி, டிஸ்க் டிரைவ் போன்ற சாதனங்களுக்கான சப்ளையர், சாதனத்திற்கான சாத்தியமான இரண்டாம் நிலை முகவரிகளையும் அவற்றின் அர்த்தங்களையும் வழங்குகிறது. சேனலுக்கு இரண்டாம் முகவரி தேவைப்பட்டால், புரோகிராமர் அதை சாதனத்துடன் (புறம்) வழங்கப்பட்ட ஆவணத்திலிருந்து பெற வேண்டும். இரண்டாம் நிலை முகவரி (எண்) அவசியமானால், SETLFS சப்ரூட்டினை அழைப்பதற்கு முன், புரோகிராமர் அதை µP Y பதிவேட்டில் வைக்க வேண்டும். இரண்டாம் நிலை முகவரி தேவையில்லை என்றால், SETLFS சப்ரூட்டினை அழைப்பதற்கு முன், புரோகிராமர் $FF எண்ணை µP Y பதிவேட்டில் வைக்க வேண்டும்.

SETLFS சப்ரூட்டின் எந்த வாதமும் இல்லாமல் அழைக்கப்படுகிறது. அதன் வாதங்கள் ஏற்கனவே 6502 µP இன் மூன்று பதிவேடுகளில் உள்ளன. பதிவேடுகளில் பொருத்தமான எண்களை வைத்த பிறகு, ஒரு தனி வரியில் பின்வருவனவற்றுடன் நிரலில் வழக்கமானது அழைக்கப்படுகிறது:

JSR SETLFS

வழக்கமான வெவ்வேறு எண்களை அவற்றின் கோப்பு அட்டவணையில் சரியான முறையில் வைக்கிறது.

OS SETNAM வழக்கம்
OS SETNAM வழக்கமானது $FFBD இல் உள்ள OS ROM ஜம்ப் டேபிளுக்கு ஜம்பிங் (JSR) மூலம் அணுகப்படுகிறது. எல்லா இடங்களுக்கும் கோப்பு பெயர்கள் இல்லை. இலக்குகள் உள்ளவர்களுக்கு (வட்டில் உள்ள கோப்புகள் போன்றவை), கோப்பு பெயரை அமைக்க வேண்டும். மேற்கோள்கள் இல்லாமல் 7 பைட்டுகளைக் கொண்ட கோப்பின் பெயர் “மைடோகம்” என்று வைத்துக்கொள்வோம். இந்தப் பெயர் $C101 முதல் $C107 இடங்கள் (உள்ளடங்கியது) மற்றும் $07 இன் நீளம் $C100 இடத்தில் உள்ளது என்று வைத்துக்கொள்வோம். சரம் எழுத்துக்களின் தொடக்க முகவரி $C101 ஆகும். தொடக்க முகவரியின் குறைந்த பைட் $01 மற்றும் அதிக பைட் $C1 ஆகும்.

SETNAM வழக்கத்தை அழைப்பதற்கு முன், புரோகிராமர் $07 (சரத்தின் நீளம்) எண்ணை µP திரட்டியில் வைக்க வேண்டும். சரம் தொடக்க முகவரியின் கீழ் பைட் $01 µP X பதிவேட்டில் வைக்கப்பட்டுள்ளது. $C1 இன் சரம் தொடக்க முகவரியின் அதிக பைட் µP Y பதிவேட்டில் வைக்கப்பட்டுள்ளது. சப்ரூடின் பின்வருவனவற்றைக் கொண்டு எளிமையாக அழைக்கப்படுகிறது:

ஜேஎஸ்ஆர் செட்னம்

SETNAM ரொட்டீன் மூன்று பதிவுகளிலிருந்து மதிப்புகளை சேனலுடன் இணைக்கிறது. அதன் பிறகு பதிவுகளில் மதிப்புகள் இருக்க வேண்டியதில்லை. சேனலுக்கு கோப்புப்பெயர் தேவையில்லை என்றால், புரோகிராமர் $00ஐ µP திரட்டியில் வைக்க வேண்டும். இந்த வழக்கில், X மற்றும் Y பதிவேடுகளில் உள்ள மதிப்புகள் புறக்கணிக்கப்படுகின்றன.

ஓஎஸ் ஓபன் ரொட்டீன்
OS OPEN வழக்கமானது $FFC0 இல் OS ROM ஜம்ப் டேபிளுக்கு ஜம்பிங் (JSR) மூலம் அணுகப்படுகிறது. கமடோர் கணினிக்கும் வெளிப்புறச் சாதனத்தில் உள்ள கோப்பிற்கும் அல்லது வெளிப்புறச் சாதனத்திற்கும் இடையே இணைப்பை வழங்க, தருக்கக் கோப்பு எண், சாதன எண் (மற்றும் இடையக), சாத்தியமான இரண்டாம் நிலை முகவரி மற்றும் சாத்தியமான கோப்புப்பெயர் ஆகியவற்றை இந்த வழக்கம் பயன்படுத்துகிறது.

மற்ற எல்லா Commodore OS ROM நடைமுறைகளைப் போலவே இந்த வழக்கமும் எந்த வாதத்தையும் எடுக்காது. இது µP பதிவேடுகளைப் பயன்படுத்தினாலும், எந்தப் பதிவேட்டிலும் அதற்கான வாதங்களுடன் (மதிப்புகள்) முன்பே ஏற்றப்பட வேண்டியதில்லை. அதை குறியிட, SETLFS மற்றும் SETNAM என அழைக்கப்பட்ட பின் பின்வருவனவற்றை உள்ளிடவும்:

ஜேஎஸ்ஆர் ஓபன்

OPEN நடைமுறையில் பிழைகள் ஏற்படலாம். எடுத்துக்காட்டாக, கோப்பு படிக்கக் கிடைக்காமல் போகலாம். ஒரு பிழை ஏற்படும் போது, ​​வழக்கமான தோல்வி மற்றும் தொடர்புடைய பிழை எண்ணை µP திரட்டியில் வைத்து, µP நிலைப் பதிவேட்டின் கேரி கொடியை (1க்கு) அமைக்கிறது. பின்வரும் அட்டவணை பிழை எண்கள் மற்றும் அவற்றின் அர்த்தங்களை வழங்குகிறது:

அட்டவணை 5.51
OS ROM OPEN ரொட்டீனுக்கான கெர்னல் பிழை எண்கள் மற்றும் அவற்றின் அர்த்தங்கள்
பிழை எண் விளக்கம் உதாரணமாக
1 மிக அதிகமான கோப்புகள் ஏற்கனவே பத்து கோப்புகள் திறந்திருக்கும் போது OPEN செய்யவும்
2 கோப்பு திறக்கப்பட்டது OPEN 1,3: OPEN 1,4
3 கோப்பு திறக்கப்படவில்லை PRINT#5 ஐ திறக்காமல்
4 கோப்பு கிடைக்கவில்லை 'NNONXISTENF' ஐ ஏற்றவும்,8
5 சாதனம் இல்லை திற 11,11: அச்சு#11
6 கோப்பு உள்ளீடு இல்லை “SEQ,S,W”ஐத் திற: பெறவும்#8,X$
7 கோப்பு வெளியேறவில்லை திற 1,0: அச்சு#1
8 கோப்பு பெயர் தவறிவிட்டது ஏற்று “”,8
9 சட்டவிரோத சாதன எண். 'நிரலை' ஏற்றவும்,3

இந்த அட்டவணை வாசகர்கள் பல இடங்களில் பார்க்கக்கூடிய வகையில் வழங்கப்பட்டுள்ளது.

OS CHKIN வழக்கம்
OS CHKIN வழக்கமானது $FFC6 இல் OS ROM ஜம்ப் டேபிளுக்கு ஜம்பிங் (JSR) மூலம் அணுகப்படுகிறது. ஒரு கோப்பை (லாஜிக்கல் ஃபைல்) திறந்த பிறகு, திறப்பது உள்ளீடு அல்லது அவுட்புட்டுக்கானதா என்பதை முடிவு செய்ய வேண்டும். CHKIN வழக்கம் திறப்பதை உள்ளீட்டு சேனலாக மாற்றுகிறது. இந்த வழக்கத்திற்கு µP X பதிவேட்டில் இருந்து தருக்க கோப்பு எண்ணைப் படிக்க வேண்டும். எனவே, புரோகிராமர் இந்த வழக்கத்தை அழைப்பதற்கு முன் தருக்க கோப்பு எண்ணை X பதிவேட்டில் வைக்க வேண்டும். இது எளிமையாக அழைக்கப்படுகிறது:

JSR CHKIN

OS CHKOUT வழக்கம்
OS CHKOUT வழக்கமானது $FFC9 இல் OS ROM ஜம்ப் டேபிளுக்கு ஜம்பிங் (JSR) மூலம் அணுகப்படுகிறது. ஒரு கோப்பை (லாஜிக்கல் ஃபைல்) திறந்த பிறகு, திறப்பது உள்ளீடு அல்லது அவுட்புட்டுக்கானதா என்பதை முடிவு செய்ய வேண்டும். CHKOUT வழக்கம் திறப்பதை வெளியீட்டு சேனலாக மாற்றுகிறது. இந்த வழக்கத்திற்கு µP X பதிவேட்டில் இருந்து தருக்க கோப்பு எண்ணைப் படிக்க வேண்டும். எனவே, புரோகிராமர் இந்த வழக்கத்தை அழைப்பதற்கு முன் தருக்க கோப்பு எண்ணை X பதிவேட்டில் வைக்க வேண்டும். இது எளிமையாக அழைக்கப்படுகிறது:

JSR CHKOUT

OS மூடும் வழக்கம்
$FFC3 இல் OS ROM ஜம்ப் டேபிளுக்கு ஜம்பிங் (JSR) மூலம் OS CLOSE ரொட்டினை அணுகலாம். தருக்கக் கோப்பு திறக்கப்பட்டு, பைட்டுகள் அனுப்பப்பட்ட பிறகு, தருக்கக் கோப்பை மூட வேண்டும். தருக்கக் கோப்பை மூடுவது, சிஸ்டம் யூனிட்டில் உள்ள இடையகத்தை விடுவிக்கிறது, அது இன்னும் திறக்கப்பட உள்ள வேறு சில தருக்கக் கோப்புகளால் பயன்படுத்தப்படும். மூன்று கோப்பு அட்டவணையில் உள்ள தொடர்புடைய அளவுருக்கள் நீக்கப்படும். திறந்த கோப்புகளின் எண்ணிக்கைக்கான ரேம் இடம் 1 ஆல் குறைக்கப்பட்டது.

கணினிக்கு மின்சாரம் இயக்கப்பட்டிருக்கும் போது, ​​மதர் போர்டில் உள்ள நுண்செயலி மற்றும் பிற முக்கிய சில்லுகளுக்கு (ஒருங்கிணைந்த சுற்றுகள்) வன்பொருள் மீட்டமைப்பு உள்ளது. இதைத் தொடர்ந்து மதர்போர்டில் சில சில்லுகளில் சில RAM நினைவக இடங்கள் மற்றும் சில பதிவுகள் துவக்கப்படும். துவக்கச் செயல்பாட்டில், இயக்க முறைமையின் பதிப்பைப் பொறுத்து, பக்கம் பூஜ்ஜியத்தில் $0098 முகவரியின் பைட் நினைவகம் NFILES அல்லது LDTND லேபிளுடன் கொடுக்கப்பட்டுள்ளது. கணினி இயங்கும் போது, ​​8 பிட்கள் கொண்ட இந்த ஒரு பைட் இடம் திறக்கப்படும் தருக்கக் கோப்புகளின் எண்ணிக்கையையும், தொடர்ச்சியான மூன்று கோப்பு அட்டவணைகளின் தொடக்க முகவரி குறியீட்டையும் வைத்திருக்கிறது. வேறு வார்த்தைகளில் கூறுவதானால், இந்த பைட்டில் கோப்புகளின் எண்ணிக்கை-திறந்துள்ளது, இது தருக்க கோப்பு மூடப்படும்போது 1 ஆல் குறைக்கப்படும். தருக்கக் கோப்பு மூடப்பட்டால், டெர்மினல் (இலக்கு) சாதனம் அல்லது வட்டில் உள்ள உண்மையான கோப்புக்கான அணுகல் இனி சாத்தியமில்லை.

தருக்கக் கோப்பை மூடுவதற்கு, புரோகிராமர் தருக்கக் கோப்பு எண்ணை µP திரட்டியில் வைக்க வேண்டும். கோப்பைத் திறப்பதில் பயன்படுத்தப்படும் அதே தருக்க கோப்பு எண் இதுவாகும். குறிப்பிட்ட கோப்பை மூடுவதற்கு, CLOSE வழக்கமானது தேவை. மற்ற OS ROM நடைமுறைகளைப் போலவே, CLOSE ரொட்டீன் ஒரு வாதத்தை எடுக்காது, இருப்பினும் திரட்டியிலிருந்து பயன்படுத்தப்படும் மதிப்பு ஓரளவு வாதமாக உள்ளது. சட்டசபை மொழி அறிவுறுத்தல் வரி எளிமையாக உள்ளது:

JSR க்ளோஸ்

தனிப்பயன் அல்லது முன் வரையறுக்கப்பட்ட 6502 அசெம்பிளி மொழி சப்ரூடின்கள் (வழக்கங்கள்) வாதங்களை எடுக்காது. இருப்பினும், நுண்செயலி பதிவேடுகளில் சப்ரூட்டின் பயன்படுத்தும் மதிப்புகளை வைப்பதன் மூலம் வாதங்கள் முறைசாரா முறையில் வருகின்றன.

CLRCHN வழக்கம்
OS CLRCHN வழக்கமானது $FFCC இல் உள்ள OS ROM ஜம்ப் டேபிளுக்கு ஜம்பிங் (JSR) மூலம் அணுகப்படுகிறது. CLRCHN என்பது CLeaR CHanneL ஐ குறிக்கிறது. தருக்கக் கோப்பு மூடப்பட்டால், அதன் தருக்கக் கோப்பு எண், சாதன எண் மற்றும் இரண்டாம் நிலை முகவரி ஆகியவற்றின் அளவுருக்கள் நீக்கப்படும். எனவே, தருக்க கோப்பிற்கான சேனல் அழிக்கப்பட்டது.

OS CLRCHN வழக்கம் திறந்திருக்கும் அனைத்து சேனல்களையும் அழித்து, இயல்புநிலை சாதன எண்கள் மற்றும் பிற இயல்புநிலைகளை மீட்டமைக்கிறது என்று கையேடு கூறுகிறது. இதன் பொருள் ஒரு புறத்திற்கான சாதன எண்ணை மாற்ற முடியுமா? சரி, மிகவும் இல்லை. ஆப்பரேட்டிங் சிஸ்டம் துவக்கத்தின் போது, ​​$0099 முகவரியின் பைட் இருப்பிடம் DFLTI லேபிளுடன் கணினி இயங்கும் போது தற்போதைய உள்ளீட்டு சாதன எண்ணை வைத்திருக்கும். Commodore-64 ஆனது ஒரு நேரத்தில் ஒரு புறத்தை மட்டுமே அணுக முடியும். இயக்க முறைமை துவக்கத்தின் போது, ​​கணினி இயங்கும் போது தற்போதைய வெளியீட்டு சாதன எண்ணை வைத்திருக்க $009A முகவரியின் பைட் இடம் DFLTO லேபிளுடன் கொடுக்கப்பட்டுள்ளது.

CLRCHN சப்ரூட்டீன் அழைக்கப்படும் போது, ​​அது DFLTI மாறியை 0 ($00) ஆக அமைக்கிறது, இது இயல்பு உள்ளீட்டு சாதன எண் (விசைப்பலகை) ஆகும். இது DFLTO மாறியை 3 ($03) ஆக அமைக்கிறது, இது இயல்புநிலை வெளியீட்டு சாதன எண் (திரை). மற்ற சாதன எண் மாறிகள் இதேபோல் மீட்டமைக்கப்படும். உள்ளீடு/வெளியீட்டு சாதனங்களை இயல்புநிலைக்கு (இயல்புநிலை மதிப்புகள்) மீட்டமைத்தல் (அல்லது மீட்டமைத்தல்) என்பதன் பொருள் இதுவாகும்.

Commodore-64 கையேடு CLRCHN ரொட்டீன் என்று அழைக்கப்பட்ட பிறகு, திறக்கப்பட்ட தருக்கக் கோப்புகள் திறந்திருக்கும் மற்றும் பைட்டுகளை (தரவு) அனுப்ப முடியும் என்று கூறுகிறது. அதாவது CLRCHN வழக்கமான கோப்பு அட்டவணையில் உள்ள தொடர்புடைய உள்ளீடுகளை நீக்காது. CLRCHN பெயர் அதன் அர்த்தத்திற்கு மாறாக தெளிவற்றதாக உள்ளது.

5.6 பாத்திரத்தை திரைக்கு அனுப்புதல்

திரையில் எழுத்துக்கள் மற்றும் கிராபிக்ஸ் காட்சியைக் கையாளும் முக்கிய ஒருங்கிணைந்த சுற்று (IC) வீடியோ இடைமுகக் கட்டுப்பாட்டாளர் (சிப்) என அழைக்கப்படுகிறது, இது Commodore-64 இல் VIC என சுருக்கமாக அழைக்கப்படுகிறது (உண்மையில் VIC பதிப்பு 2 க்கு VIC II). ஒரு தகவல் (மதிப்புகள்) திரைக்குச் செல்ல, அது திரையை அடையும் முன் VIC II வழியாகச் செல்ல வேண்டும்.

திரையில் 25 வரிசைகள் மற்றும் 40 நெடுவரிசைகள் எழுத்துக் கலங்கள் உள்ளன. இது திரையில் காட்டக்கூடிய 40 x 25 = 1000 எழுத்துகளை உருவாக்குகிறது. VIC II எழுத்துகளுக்கான 1000 நினைவக ரேம் தொடர்ச்சியான பைட் இருப்பிடங்களைப் படிக்கிறது. இந்த 1000 இடங்கள் ஒன்றாக ஸ்கிரீன் மெமரி எனப்படும். இந்த 1000 இடங்களுக்குள் செல்வது எழுத்து குறியீடுகள். Commodore-64 க்கு, எழுத்து குறியீடுகள் ASCII குறியீடுகளிலிருந்து வேறுபட்டவை.

எழுத்து குறியீடு என்பது எழுத்து முறை அல்ல. கேரக்டர் ROM என்றும் அறியப்படுகிறது. கேரக்டர் ROM ஆனது அனைத்து வகையான எழுத்து வடிவங்களையும் கொண்டுள்ளது, அவற்றில் சில விசைப்பலகையில் உள்ள எழுத்து வடிவங்களுக்கு ஒத்திருக்கும். ROM என்ற எழுத்து திரை நினைவகத்திலிருந்து வேறுபட்டது. ஒரு எழுத்து திரையில் காட்டப்படும்போது, ​​திரை நினைவகத்தின் 1000 நிலைகளுக்கு இடையே எழுத்துக்குறி குறியீடு அனுப்பப்படும். அங்கிருந்து, திரையில் காட்டப்படும் ROM என்ற எழுத்தில் இருந்து தொடர்புடைய பேட்டர்ன் தேர்ந்தெடுக்கப்பட்டது. எழுத்துக் குறியீட்டிலிருந்து ROM இல் சரியான வடிவத்தைத் தேர்ந்தெடுப்பது VIC II (வன்பொருள்) மூலம் செய்யப்படுகிறது.

$D000 மற்றும் $DFFF க்கு இடையில் உள்ள பல நினைவக இருப்பிடங்கள் இரண்டு நோக்கங்களைக் கொண்டுள்ளன: அவை திரையைத் தவிர மற்ற உள்ளீடு/வெளியீட்டு செயல்பாடுகளைக் கையாளப் பயன்படுகின்றன அல்லது திரைக்கான எழுத்து ROM ஆகப் பயன்படுத்தப்படுகின்றன. நினைவகத்தின் இரண்டு தொகுதிகள் சம்பந்தப்பட்டவை. ஒன்று ரேம் மற்றொன்று ரோம் எழுத்துருக்கான ரோம். உள்ளீடு/வெளியீடு அல்லது எழுத்து வடிவங்களை (எழுத்து ROM) கையாள வங்கிகளை மாற்றுவது மென்பொருள் மூலம் செய்யப்படுகிறது (ROM இல் OS இன் வழக்கமான $F000 முதல் $FFFF வரை).

குறிப்பு : VIC ஆனது $D000 மற்றும் $DFFF வரம்பிற்குள் இருந்து நினைவக இடத்தின் முகவரிகளுடன் குறிப்பிடப்பட்ட பதிவேடுகளைக் கொண்டுள்ளது.

CHROUT வழக்கம்
OS CHROUT வழக்கமானது $FFD2 இல் OS ROM ஜம்ப் டேபிளுக்கு ஜம்பிங் (JSR) மூலம் அணுகப்படுகிறது. இந்த வழக்கம், அழைக்கப்படும் போது, ​​புரோகிராமர் µP அக்யூமுலேட்டரில் வைத்துள்ள பைட்டை எடுத்து கர்சர் இருக்கும் திரையில் அச்சிடுகிறது. எடுத்துக்காட்டாக, 'E' எழுத்தை அச்சிடுவதற்கான குறியீடு பிரிவு:

LDA #$05
CHROUT

0516 என்பது 'E'க்கான ASCII குறியீடு அல்ல. கொமடோர்-64 திரையில் அதன் சொந்த எழுத்து குறியீடுகள் உள்ளன, அங்கு $05 என்றால் 'E'. VIC திரைக்கு அனுப்பும் முன் #$05 எண் திரை நினைவகத்தில் வைக்கப்படும். சேனல் அமைக்கப்பட்ட பிறகு, தருக்கக் கோப்பு திறக்கப்பட்டு, வெளியீட்டிற்கு CHKOUT வழக்கம் அழைக்கப்படுகிறது. முழுமையான குறியீடு:

; சேனலை அமைக்கவும்
LDA #$40 ; தருக்க கோப்பு எண்
LDX #$03 ; திரைக்கான சாதன எண் $03
LDY #$FF ; இரண்டாம் நிலை முகவரி இல்லை
JSR SETLFS ; சேனல் சரியான அமைப்பு
; திரைக்கு பெயர் தேவையில்லை என்பதால் SETNAM இல்லை
;
; தருக்க கோப்பைத் திறக்கவும்
ஜேஎஸ்ஆர் ஓபன்
; வெளியீட்டிற்கு சேனலை அமைக்கவும்
LDX #$40 ; தருக்க கோப்பு எண்
JSR CHKOUT
;
; அவுட்புட் சார் திரைக்கு
LDA #$05
JSR CHROUT
; தருக்க கோப்பை மூடு
LDA #$40
JSR க்ளோஸ்

மற்றொரு நிரலை இயக்கும் முன் திறப்பு மூடப்பட வேண்டும். கணினி பயனர் எதிர்பார்க்கும் போது விசைப்பலகையில் ஒரு எழுத்தை தட்டச்சு செய்கிறார் என்று வைத்துக்கொள்வோம். பின்வரும் நிரல் விசைப்பலகையில் இருந்து திரைக்கு ஒரு எழுத்தை அச்சிடுகிறது:

; சேனலை அமைக்கவும்
LDA #$40 ; தருக்க கோப்பு எண்
LDX #$03 ; திரைக்கான சாதன எண் $03
LDY #$FF ; இரண்டாம் நிலை முகவரி இல்லை
JSR SETLFS ; சேனல் சரியான அமைப்பு
; திரைக்கு பெயர் தேவையில்லை என்பதால் SETNAM இல்லை
;
; தருக்க கோப்பைத் திறக்கவும்
ஜேஎஸ்ஆர் ஓபன்
; வெளியீட்டிற்கு சேனலை அமைக்கவும்
LDX #$40 ; தருக்க கோப்பு எண்
JSR CHKOUT
;
; விசைப்பலகையில் இருந்து உள்ளீடு சார்
ஜே.எஸ்.ஆர் பெற காத்திருங்கள்; விசைப்பலகை வரிசை காலியாக இருந்தால், $00 ஐ A இல் வைக்கிறது
CMP #$00 ; $00 A க்கு சென்றால், Z என்பது 1 ஆகும்
காத்திருங்கள்; 0 திரட்டிக்கு சென்றால் மீண்டும் வரிசையில் இருந்து பெறவும்
BNE PRNSCRN; Z 0 ஆக இருந்தால் PRNSCRN க்குச் செல்லவும், ஏனெனில் A இனி $00 இல்லை
; அவுட்புட் சார் திரைக்கு
PRNSCRN JSR CHROUT ; A இல் உள்ள எழுத்தை திரைக்கு அனுப்பவும்
; தருக்க கோப்பை மூடு
LDA #$40
JSR க்ளோஸ்

குறிப்பு : WAIT மற்றும் PRNSCRN ஆகியவை முகவரிகளை அடையாளம் காணும் லேபிள்கள். விசைப்பலகையில் இருந்து µP திரட்டியில் வரும் பைட் ஒரு ASCII குறியீடாகும். Commodore-64 மூலம் திரைக்கு அனுப்பப்படும் தொடர்புடைய குறியீடு வேறுபட்டதாக இருக்க வேண்டும். எளிமைக்காக முந்தைய திட்டத்தில் அது கணக்கில் எடுத்துக்கொள்ளப்படவில்லை.

5.7 வட்டு இயக்ககத்திற்கான பைட்டுகளை அனுப்புதல் மற்றும் பெறுதல்

Commodore-64 இன் கணினி அலகு (மதர்போர்டு) இல் VIA #1 மற்றும் CIA #2 எனப்படும் இரண்டு சிக்கலான இடைமுக அடாப்டர்கள் உள்ளன. ஒவ்வொரு CIAக்கும் இரண்டு இணையான துறைமுகங்கள் உள்ளன, அவை போர்ட் A மற்றும் போர்ட் B என அழைக்கப்படுகின்றன. Commodre-64 சிஸ்டம் யூனிட்டின் பின்புறத்தில் செங்குத்து மேற்பரப்பில் ஒரு வெளிப்புற போர்ட் உள்ளது, இது தொடர் போர்ட் என அழைக்கப்படுகிறது. இந்த போர்ட்டில் 6 பின்கள் உள்ளன, அவற்றில் ஒன்று தரவுக்கானது. தரவு ஒரு நேரத்தில் ஒரு பிட் தொடரில் கணினி அலகுக்குள் நுழைகிறது அல்லது வெளியேறுகிறது.

சிஐஏ #2 இன் உள் போர்ட் ஏ இலிருந்து எட்டு இணையான பிட்கள், சிஐஏவில் உள்ள ஷிப்ட் ரிஜிஸ்டர் மூலம் சீரியல் டேட்டாவாக மாற்றப்பட்ட பிறகு, வெளிப்புற சீரியல் போர்ட் மூலம் சிஸ்டம் யூனிட்டிலிருந்து வெளியேறலாம். வெளிப்புற சீரியல் போர்ட்டில் இருந்து எட்டு பிட் சீரியல் தரவு, சிஐஏவில் உள்ள ஷிப்ட் ரிஜிஸ்டர் மூலம் இணையான தரவுகளாக மாற்றப்பட்ட பிறகு, சிஐஏ #2 இன் உள் போர்ட் ஏ க்குள் செல்ல முடியும்.

கொமடோர்-64 சிஸ்டம் யூனிட் (அடிப்படை அலகு) ஒரு வட்டுடன் வெளிப்புற வட்டு இயக்ககத்தைப் பயன்படுத்துகிறது. டெய்சி சங்கிலி பாணியில் இந்த வட்டு இயக்ககத்துடன் ஒரு பிரிண்டரை இணைக்க முடியும் (தொடர் சாதனங்களை ஒரு சரமாக இணைக்கிறது). வட்டு இயக்ககத்திற்கான தரவு கேபிள் கொமடோர்-64 சிஸ்டம் யூனிட்டின் வெளிப்புற தொடர் போர்ட்டுடன் இணைக்கப்பட்டுள்ளது. டெய்சி-செயின் அச்சுப்பொறியும் அதே சீரியல் போர்ட்டுடன் இணைக்கப்பட்டுள்ளது என்பதே இதன் பொருள். இந்த இரண்டு சாதனங்களும் இரண்டு வெவ்வேறு சாதன எண்களால் அடையாளம் காணப்படுகின்றன (பொதுவாக 8 மற்றும் 4, முறையே).

வட்டு இயக்ககத்திற்கான தரவை அனுப்புவது அல்லது பெறுவது முன்பு விவரிக்கப்பட்ட அதே நடைமுறையைப் பின்பற்றுகிறது. அது:

  • SETNAM ரொட்டினைப் பயன்படுத்தி உண்மையான வட்டு கோப்பின் பெயரைப் போன்ற தருக்கக் கோப்பின் (எண்) பெயரை அமைத்தல்.
  • OPEN வழக்கத்தைப் பயன்படுத்தி தருக்கக் கோப்பைத் திறக்கிறது.
  • CHKOUT அல்லது CHKIN வழக்கத்தைப் பயன்படுத்தி உள்ளீடு அல்லது வெளியீட்டா என்பதைத் தீர்மானித்தல்.
  • STA மற்றும்/அல்லது LDA அறிவுறுத்தலைப் பயன்படுத்தி தரவை அனுப்புதல் அல்லது பெறுதல்.
  • CLOSE வழக்கத்தைப் பயன்படுத்தி தருக்கக் கோப்பை மூடுகிறது.

தருக்க கோப்பு மூடப்பட வேண்டும். தருக்க கோப்பை மூடுவது குறிப்பிட்ட சேனலை திறம்பட மூடுகிறது. வட்டு இயக்ககத்திற்கான சேனலை அமைக்கும் போது, ​​தருக்க கோப்பு எண் புரோகிராமரால் தீர்மானிக்கப்படுகிறது. இது $00 மற்றும் $FF (உள்ளடக்கம்) இடையே உள்ள எண். இது வேறு எந்த சாதனத்திற்கும் (அல்லது உண்மையான கோப்பு) ஏற்கனவே தேர்ந்தெடுக்கப்பட்ட எண்ணாக இருக்கக்கூடாது. ஒரே ஒரு வட்டு இயக்கி இருந்தால் சாதன எண் 8 ஆகும். இரண்டாம் நிலை முகவரி (எண்) வட்டு இயக்ககத்தின் கையேட்டில் இருந்து பெறப்படுகிறது. பின்வரும் நிரல் 2 ஐப் பயன்படுத்துகிறது. நிரல் 'E' (ASCII) என்ற எழுத்தை வட்டில் உள்ள 'mydoc.doc' என்ற கோப்பில் எழுதுகிறது. இந்த பெயர் $C101 இன் நினைவக முகவரியில் தொடங்கும் என்று கருதப்படுகிறது. எனவே, SETNAM ரொட்டீன் எனப்படும் முன் $01 இன் குறைந்த பைட் X பதிவேட்டில் இருக்க வேண்டும் மற்றும் $C1 இன் அதிக பைட் Y பதிவேட்டில் இருக்க வேண்டும். SETNAM வழக்கத்தை அழைப்பதற்கு முன், A பதிவேட்டில் $09 எண்ணும் இருக்க வேண்டும்.

; சேனலை அமைக்கவும்
LDA #$40 ; தருக்க கோப்பு எண்
LDX #$08 ; முதல் வட்டு இயக்ககத்திற்கான சாதன எண்
LDY #$02 ; இரண்டாம் நிலை முகவரி
JSR SETLFS ; சேனல் சரியான அமைப்பு
;
; வட்டு இயக்ககத்தில் உள்ள கோப்பிற்கு ஒரு பெயர் தேவை (ஏற்கனவே நினைவகத்தில் உள்ளது)
LDA #$09
LDX #$01
LDY#$C1
ஜேஎஸ்ஆர் செட்னம்
; தருக்க கோப்பைத் திறக்கவும்
ஜேஎஸ்ஆர் ஓபன்
; வெளியீட்டிற்கு சேனலை அமைக்கவும்
LDX #$40 ; தருக்க கோப்பு எண்
JSR CHKOUT ;எழுதுவதற்கு
;
; வட்டுக்கு அவுட்புட் சார்
LDA #$45
JSR CHROUT
; தருக்க கோப்பை மூடு
LDA #$40
JSR க்ளோஸ்

வட்டில் இருந்து µP Y பதிவேட்டில் ஒரு பைட்டைப் படிக்க, பின்வரும் மாற்றங்களுடன் முந்தைய நிரலை மீண்டும் செய்யவும்: “JSR CHKOUT ; எழுதுவதற்கு”, “JSR CHKIN ; வாசிப்பதற்கு'. 'க்கான குறியீடு பிரிவை மாற்றவும்; பின்வருவனவற்றைக் கொண்டு வட்டுக்கு சார் அவுட்புட்”:

; வட்டில் இருந்து உள்ளீடு சார்
ஜேஎஸ்ஆர் கிறிஸ்

$FFCF இல் OS ROM ஜம்ப் டேபிளுக்கு ஜம்பிங் (JSR) மூலம் OS CHRIN ரொட்டீன் அணுகப்படுகிறது. இந்த வழக்கம், அழைக்கப்படும் போது, ​​ஏற்கனவே உள்ளீட்டு சேனலாக அமைக்கப்பட்ட ஒரு சேனலில் இருந்து ஒரு பைட்டைப் பெறுகிறது மற்றும் அதை µP A பதிவேட்டில் வைக்கிறது. CHRIN க்குப் பதிலாக GETIN ROM OS வழக்கத்தையும் பயன்படுத்தலாம்.

அச்சுப்பொறிக்கு ஒரு பைட்டை அனுப்புகிறது
அச்சுப்பொறிக்கு ஒரு பைட்டை அனுப்புவது, வட்டில் உள்ள கோப்பிற்கு பைட்டை அனுப்புவதைப் போலவே செய்யப்படுகிறது.

5.8 OS சேமிக்கும் வழக்கம்

$FFD8 இல் OS ROM ஜம்ப் டேபிளுக்கு ஜம்பிங் (JSR) மூலம் OS SAVE ரொட்டினை அணுகலாம். ROM இல் உள்ள OS SAVE ரொட்டீன் நினைவகத்தின் ஒரு பகுதியை வட்டில் ஒரு கோப்பாக (பெயருடன்) சேமிக்கிறது (டம்ப்ஸ்). நினைவகத்தில் உள்ள பிரிவின் தொடக்க முகவரி தெரிந்திருக்க வேண்டும். பிரிவின் இறுதி முகவரியும் தெரிந்திருக்க வேண்டும். தொடக்க முகவரியின் கீழ் பைட் பக்கம் பூஜ்ஜியத்தில் RAM இல் $002B முகவரியில் வைக்கப்பட்டுள்ளது. தொடக்க முகவரியின் அதிக பைட் அடுத்த பைட் நினைவக இடத்தில் $002C முகவரியில் வைக்கப்படும். பக்கம் பூஜ்ஜியத்தில், TXTTAB லேபிள் இந்த இரண்டு முகவரிகளைக் குறிக்கிறது, TXTTAB என்பது உண்மையில் $002B முகவரியைக் குறிக்கிறது. இறுதி முகவரியின் கீழ் பைட் µP X பதிவேட்டில் வைக்கப்பட்டுள்ளது. இறுதி முகவரி மற்றும் 1 இன் அதிக பைட் µP Y பதிவேட்டில் வைக்கப்பட்டுள்ளது. µP A பதிவேடு TXTTAB ($002B)க்கான $2B மதிப்பை எடுக்கும். அதனுடன், SAVE வழக்கத்தை பின்வருவனவற்றுடன் அழைக்கலாம்:

ஜேஎஸ்ஆர் சேவ்

சேமிக்கப்பட வேண்டிய நினைவகத்தின் பகுதியானது சட்டசபை மொழி நிரல் அல்லது ஆவணமாக இருக்கலாம். ஒரு ஆவணத்தின் உதாரணம் ஒரு கடிதம் அல்லது கட்டுரையாக இருக்கலாம். சேமிப்பு முறையைப் பயன்படுத்த, பின்வரும் நடைமுறையைப் பின்பற்ற வேண்டும்:

  • SETLFS வழக்கத்தைப் பயன்படுத்தி சேனலை அமைக்கவும்.
  • SETNAM ரொட்டினைப் பயன்படுத்தி உண்மையான வட்டு கோப்பின் பெயரைப் போலவே தருக்கக் கோப்பின் (எண்) பெயரை அமைக்கவும்.
  • OPEN வழக்கத்தைப் பயன்படுத்தி தருக்கக் கோப்பைத் திறக்கவும்.
  • CHKOUT ஐப் பயன்படுத்தி வெளியீட்டிற்கான கோப்பை உருவாக்கவும்.
  • கோப்பைச் சேமிப்பதற்கான குறியீடு 'JSR SAVE' என்று முடிவடைகிறது.
  • CLOSE வழக்கத்தைப் பயன்படுத்தி தருக்கக் கோப்பை மூடவும்.

$C101 முதல் $C200 வரையிலான நினைவக இடங்களிலிருந்து தொடங்கும் கோப்பை பின்வரும் நிரல் சேமிக்கிறது:

; சேனலை அமைக்கவும்
LDA #$40 ; தருக்க கோப்பு எண்
LDX #$08 ; முதல் வட்டு இயக்ககத்திற்கான சாதன எண்
LDY #$02 ; இரண்டாம் நிலை முகவரி
JSR SETLFS ; சேனல் சரியான அமைப்பு
;
; வட்டு இயக்ககத்தில் உள்ள கோப்பிற்கான பெயர் (ஏற்கனவே $C301 நினைவகத்தில் உள்ளது)
LDA #$09 ; கோப்பு பெயரின் நீளம்
LDX #$01
LDY#$C3
ஜேஎஸ்ஆர் செட்னம்
; தருக்க கோப்பைத் திறக்கவும்
ஜேஎஸ்ஆர் ஓபன்
; வெளியீட்டிற்கு சேனலை அமைக்கவும்
LDX #$40 ; தருக்க கோப்பு எண்
JSR CHKOUT ; எழுதுவதற்கு
;
; வட்டுக்கு கோப்பு வெளியீடு
LDA #$01
STA $2B ; TXTTAB
LDA #$C1
STA $2C
LDX #$00
LDY #$C2
LDA #$2B
ஜேஎஸ்ஆர் சேவ்
; தருக்க கோப்பை மூடு
LDA #$40
JSR க்ளோஸ்

இது நினைவகத்தின் மற்றொரு பகுதியை (நிரல் பிரிவு அல்ல) வட்டில் சேமிக்கும் நிரல் என்பதை நினைவில் கொள்க (கொமடோர்-64க்கான வட்டு).

5.9 OS ஏற்றுதல் வழக்கம்

OS LOAD Routine ஆனது $FFD5 இல் OS ROM ஜம்ப் டேபிளுக்கு ஜம்பிங் (JSR) மூலம் அணுகப்படுகிறது. நினைவகத்தின் ஒரு பகுதி (பெரிய பகுதி) வட்டில் சேமிக்கப்படும் போது, ​​அது நினைவகத்தில் பிரிவின் தொடக்க முகவரியைக் கொண்ட தலைப்புடன் சேமிக்கப்படும். OS LOAD சப்ரூட்டீன் ஒரு கோப்பின் பைட்டுகளை நினைவகத்தில் ஏற்றுகிறது. இந்த LOAD செயல்பாட்டின் மூலம், குவிப்பானின் மதிப்பு 010 ($00) ஆக இருக்க வேண்டும். LOAD செயல்பாட்டிற்கு, வட்டில் உள்ள கோப்புத் தலைப்பில் தொடக்க முகவரியைப் படித்து, அந்த முகவரியிலிருந்து தொடங்கும் கோப்பு பைட்டுகளை RAM இல் வைப்பதற்கு, சேனலுக்கான இரண்டாம் முகவரி 1 அல்லது 2 ஆக இருக்க வேண்டும் (பின்வரும் நிரல் 2 ஐப் பயன்படுத்துகிறது). இந்த வழக்கமானது, ஏற்றப்பட்ட அதிகபட்ச ரேம் இருப்பிடத்தின் முகவரி மற்றும் 1ஐ வழங்கும். அதாவது ரேம் பிளஸ் 1ல் உள்ள கோப்பின் கடைசி முகவரியின் குறைந்த பைட் µP X பதிவேட்டில் போடப்படுகிறது, மேலும் ரேம் பிளஸ் 1ல் உள்ள கோப்பின் கடைசி முகவரியின் உயர் பைட் µP Y பதிவேட்டில் வைக்கப்படும்.

ஏற்றுதல் தோல்வியுற்றால், µP A பதிவேட்டில் பிழை எண் (4, 5, 8 அல்லது 9 இருக்கலாம்) இருக்கும். நுண்செயலி நிலைப் பதிவேட்டின் C கொடியும் அமைக்கப்பட்டுள்ளது (1 ஆனது). ஏற்றுதல் வெற்றிகரமாக இருந்தால், A பதிவேட்டின் கடைசி மதிப்பு முக்கியமில்லை.

இப்போது, ​​இந்த ஆன்லைன் கேரியர் கோர்ஸின் முந்தைய அத்தியாயத்தில், அசெம்பிளி லாங்குவேஜ் புரோகிராமின் முதல் அறிவுறுத்தல் நிரல் தொடங்கிய ரேம் முகவரியில் உள்ளது. அப்படி இருக்க வேண்டிய அவசியமில்லை. அதாவது நிரலின் முதல் அறிவுறுத்தல் ரேமில் நிரலின் தொடக்கத்தில் இருக்க வேண்டியதில்லை. நிரலுக்கான தொடக்க அறிவுறுத்தல் RAM இல் உள்ள கோப்பில் எங்கும் இருக்கலாம். அசெம்பிளி மொழி அறிவுறுத்தலை START என்று லேபிளிடுமாறு புரோகிராமர் அறிவுறுத்தப்படுகிறார். அதனுடன், நிரல் ஏற்றப்பட்ட பிறகு, அது பின்வரும் சட்டசபை மொழி அறிவுறுத்தலுடன் மீண்டும் இயங்குகிறது (செயல்படுத்தப்படுகிறது):

JSR START

'JSR START' என்பது சட்டசபை மொழி நிரலில் உள்ளது, அது இயக்க வேண்டிய நிரலை ஏற்றுகிறது. மற்றொரு அசெம்பிளி மொழி கோப்பை ஏற்றி, ஏற்றப்பட்ட கோப்பை இயக்கும் ஒரு சட்டசபை மொழி பின்வரும் குறியீடு நடைமுறையைக் கொண்டுள்ளது:

  • SETLFS வழக்கத்தைப் பயன்படுத்தி சேனலை அமைக்கவும்.
  • SETNAM ரொட்டினைப் பயன்படுத்தி உண்மையான வட்டு கோப்பின் பெயரைப் போலவே தருக்கக் கோப்பின் (எண்) பெயரை அமைக்கவும்.
  • OPEN வழக்கத்தைப் பயன்படுத்தி தருக்கக் கோப்பைத் திறக்கவும்.
  • CHKIN ஐப் பயன்படுத்தி உள்ளீட்டிற்கான கோப்பாக மாற்றவும்.
  • கோப்பை ஏற்றுவதற்கான குறியீடு இங்கே சென்று “JSR LOAD” என்று முடிகிறது.
  • CLOSE வழக்கத்தைப் பயன்படுத்தி தருக்கக் கோப்பை மூடவும்.

பின்வரும் நிரல் வட்டில் இருந்து கோப்பை ஏற்றி அதை இயக்குகிறது:

; சேனலை அமைக்கவும்
LDA #$40 ; தருக்க கோப்பு எண்
LDX #$08 ; முதல் வட்டு இயக்ககத்திற்கான சாதன எண்
LDY #$02 ; இரண்டாம் நிலை முகவரி
JSR SETLFS ; சேனல் சரியான அமைப்பு
;
; வட்டு இயக்ககத்தில் உள்ள கோப்பிற்கான பெயர் (ஏற்கனவே $C301 நினைவகத்தில் உள்ளது)
LDA #$09 ; கோப்பு பெயரின் நீளம்
LDX #$01
LDY#$C3
ஜேஎஸ்ஆர் செட்னம்
; தருக்க கோப்பைத் திறக்கவும்
ஜேஎஸ்ஆர் ஓபன்
; உள்ளீட்டிற்கான சேனலை அமைக்கவும்
LDX #$40 ; தருக்க கோப்பு எண்
JSR CHKIN ; வாசிப்பதற்கு
;
; வட்டில் இருந்து உள்ளீடு கோப்பு
LDA #$00
JSR சுமை
; தருக்க கோப்பை மூடு
LDA #$40
JSR க்ளோஸ்
; ஏற்றப்பட்ட நிரலைத் தொடங்கவும்
JSR START

5.10 மோடம் மற்றும் RS-232 தரநிலை

மோடம் என்பது ஒரு சாதனம் (பெரிஃபெரல்), இது கணினியிலிருந்து பிட்களை தொலைபேசி இணைப்பு வழியாக அனுப்புவதற்கு தொடர்புடைய மின் ஆடியோ சிக்னல்களாக மாற்றுகிறது. பெறும் முனையில், பெறும் கணினிக்கு முன் ஒரு மோடம் உள்ளது. இந்த இரண்டாவது மோடம் மின் ஒலி சமிக்ஞைகளை பெறும் கணினிக்கான பிட்களாக மாற்றுகிறது.

ஒரு மோடம் ஒரு கணினியுடன் வெளிப்புற போர்ட்டில் (கணினியின் செங்குத்து மேற்பரப்பில்) இணைக்கப்பட வேண்டும். RS-232 தரநிலையானது ஒரு குறிப்பிட்ட வகை இணைப்பியைக் குறிக்கிறது, இது ஒரு மோடத்தை கணினியுடன் இணைக்கிறது (கடந்த காலத்தில்). வேறு வார்த்தைகளில் கூறுவதானால், கடந்த காலத்தில் பல கணினிகள் வெளிப்புற போர்ட்டைக் கொண்டிருந்தன, அது RS-232 இணைப்பான் அல்லது RS-232 இணக்கமான இணைப்பான்.

கொமடோர்-64 சிஸ்டம் யூனிட் (கணினி) அதன் பின்புற செங்குத்து மேற்பரப்பில் ஒரு வெளிப்புற போர்ட்டைக் கொண்டுள்ளது, இது பயனர் போர்ட் என்று அழைக்கப்படுகிறது. இந்த பயனர் போர்ட் RS-232 இணக்கமானது. ஒரு மோடம் சாதனத்தை அங்கு இணைக்க முடியும். Commodore-64 இந்த யூசர் போர்ட் மூலம் மோடமுடன் தொடர்பு கொள்கிறது. Commodore-64க்கான ROM இயங்குதளமானது RS-232 ரொட்டீன்கள் எனப்படும் மோடத்துடன் தொடர்புகொள்வதற்கான சப்ரூட்டின்களைக் கொண்டுள்ளது. இந்த நடைமுறைகளில் ஜம்ப் டேபிளில் உள்ளீடுகள் உள்ளன.

பாட் விகிதம்
கணினியிலிருந்து எட்டு பிட் பைட் மோடமிற்கு அனுப்பப்படுவதற்கு முன் எட்டு பிட்களின் தொடராக மாற்றப்படுகிறது. மோடமிலிருந்து கணினி வரை தலைகீழ் செய்யப்படுகிறது. Baud விகிதம் என்பது தொடரில் ஒரு நொடிக்கு அனுப்பப்படும் பிட்களின் எண்ணிக்கை.

நினைவகத்தின் அடிப்பகுதி
'நினைவகத்தின் அடிப்பகுதி' என்பது $0000 முகவரியின் நினைவக பைட் இருப்பிடத்தைக் குறிக்காது. பயனர் தனது தரவு மற்றும் நிரல்களை வைக்கத் தொடங்கும் குறைந்த ரேம் இருப்பிடத்தை இது குறிக்கிறது. இயல்பாக, இது $0800 ஆகும். $0800 மற்றும் $BFFF க்கு இடையில் உள்ள பல இடங்கள் அடிப்படை கணினி மொழி மற்றும் அதன் புரோகிராமர்களால் (பயனர்கள்) பயன்படுத்தப்படுகின்றன என்பதை முந்தைய விவாதத்திலிருந்து நினைவுகூருங்கள். $C000 முதல் $CFFF வரையிலான முகவரி இருப்பிடங்கள் மட்டுமே அசெம்பிளி மொழி நிரல்களுக்கும் தரவுகளுக்கும் பயன்படுத்த எஞ்சியுள்ளன; நினைவகத்தின் 64 Kbytes இல் இது 4Kbytes ஆகும்.

நினைவகத்தின் உச்சம்
அந்த நாட்களில், வாடிக்கையாளர்கள் Commodore-64 கணினிகளை வாங்கியபோது, ​​​​சிலர் அனைத்து நினைவக இருப்பிடங்களுடன் வரவில்லை. அத்தகைய கணினிகள் அதன் இயக்க முறைமையுடன் ROM ஐ $E000 முதல் $FFFF வரை கொண்டிருந்தன. $0000 முதல் ஒரு வரம்பு வரை ரேம் இருந்தது, இது $DFFF அல்ல, $E000க்கு அடுத்தது. வரம்பு $DFFF க்குக் கீழே இருந்தது, அந்த வரம்பு 'நினைவகத்தின் மேல்' என்று அழைக்கப்படுகிறது. எனவே, டாப்-ஆஃப்-மெமரி என்பது $FFFF இருப்பிடத்தைக் குறிக்காது.

RS-232 தகவல்தொடர்புக்கான கொமடோர்-64 இடையகங்கள்
இடையகத்தை கடத்துகிறது
RS-232 பரிமாற்றத்திற்கான இடையகமானது (வெளியீடு) 256 பைட்டுகளை நினைவகத்தில் இருந்து கீழ்நோக்கி எடுக்கும். இந்த கடத்தும் இடையகத்திற்கான சுட்டிக்காட்டி ROBUF என பெயரிடப்பட்டுள்ளது. இந்த சுட்டியானது பக்கம் பூஜ்ஜியத்தில் $00F9 மற்றும் $00FA முகவரிகளுடன் உள்ளது. ROBUF உண்மையில் $00F9 ஐ அடையாளம் காட்டுகிறது. எனவே, இடையகத்தின் தொடக்க முகவரி $BE00 எனில், $BE00 இன் குறைந்த பைட், $00, $00F9 இடத்தில் உள்ளது மற்றும் $BE00 இன் அதிக பைட் $BE, $00FA இல் உள்ளது. இடம்.

தாங்கல் பெறுகிறது
RS-232 பைட்டுகளை (உள்ளீடு) பெறுவதற்கான இடையகமானது கடத்தும் இடையகத்தின் அடிப்பகுதியில் இருந்து 256 பைட்டுகளை எடுக்கும். இந்த பெறும் இடையகத்திற்கான சுட்டி RIBUF என லேபிளிடப்பட்டுள்ளது. இந்த சுட்டி $00F7 மற்றும் $00F8 முகவரிகளுடன் பக்கம் பூஜ்ஜியத்தில் உள்ளது. RIBUF உண்மையில் $00F7 ஐ அடையாளம் காட்டுகிறது. எனவே, இடையகத்தின் தொடக்க முகவரி $BF00 எனில், $BF00 இன் குறைந்த பைட், அதாவது $00, $00F7 இடத்தில் உள்ளது மற்றும் $BF00 இன் அதிக பைட் $BF, $00F8 இல் உள்ளது. இடம். எனவே, டாப்-ஆஃப்-மெமரியில் இருந்து 512 பைட்டுகள் மொத்த RS-232 RAM இடையகமாகப் பயன்படுத்தப்படுகிறது.

RS-232 சேனல்
ஒரு மோடம் (வெளிப்புற) பயனர் போர்ட்டுடன் இணைக்கப்படும்போது, ​​மோடமுக்கான தொடர்பு வெறும் RS-232 தொடர்பு மட்டுமே. முழுமையான RS-232 சேனலைப் பெறுவதற்கான செயல்முறை முந்தைய விவாதத்தில் இருந்ததைப் போலவே உள்ளது, ஆனால் ஒரு முக்கிய வேறுபாடு உள்ளது: கோப்பு பெயர் ஒரு குறியீடாகும் மற்றும் நினைவகத்தில் ஒரு சரம் அல்ல. குறியீடு $0610 ஒரு நல்ல தேர்வாகும். இது 300 பிட்கள்/வினாடிகளின் பாட் வீதம் மற்றும் வேறு சில தொழில்நுட்ப அளவுருக்களைக் குறிக்கிறது. மேலும், இரண்டாம் நிலை முகவரி இல்லை. சாதன எண் 2. முழுமையான RS-232 சேனலை அமைப்பதற்கான செயல்முறை:

  • SETLFS வழக்கத்தைப் பயன்படுத்தி சேனலை அமைத்தல்.
  • தருக்க கோப்பின் பெயரை அமைத்தல், $0610.
  • OPEN வழக்கத்தைப் பயன்படுத்தி தருக்கக் கோப்பைத் திறக்கிறது.
  • CHKOUT ஐப் பயன்படுத்தி வெளியீட்டிற்கான கோப்பை அல்லது CHKIN ஐப் பயன்படுத்தி உள்ளீட்டிற்கான கோப்பாக மாற்றுகிறது.
  • CHROUT உடன் ஒற்றை பைட்டுகளை அனுப்புதல் அல்லது GETIN மூலம் ஒற்றை பைட்டுகளைப் பெறுதல்.
  • CLOSE வழக்கத்தைப் பயன்படுத்தி தருக்கக் கோப்பை மூடுகிறது.

$FFE4 இல் உள்ள OS ROM ஜம்ப் டேபிளுக்கு ஜம்பிங் (JSR) மூலம் OS GETIN வழக்கத்தை அணுகலாம். இந்த வழக்கம், அழைக்கப்படும் போது, ​​ரிசீவர் பஃப்பருக்குள் அனுப்பப்படும் பைட்டை எடுத்து µP திரட்டியில் (திரும்ப) வைக்கிறது.

பின்வரும் நிரல் பயனர் RS-232 இணக்கமான போர்ட்டுடன் இணைக்கப்பட்டுள்ள மோடமிற்கு 'E' (ASCII) பைட்டை அனுப்புகிறது:

; சேனலை அமைக்கவும்
LDA #$40 ; தருக்க கோப்பு எண்
LDX #$02 ; RS-232 க்கான சாதன எண்
LDY #$FF ; இரண்டாம் நிலை முகவரி இல்லை
JSR SETLFS ; சேனல் சரியான அமைப்பு
;
; RS-232 க்கான பெயர் ஒரு குறியீடு எ.கா. $0610
LDA #$02 ; குறியீட்டின் நீளம் 2 பைட்டுகள்
LDX #$10
LDY#$06
ஜேஎஸ்ஆர் செட்னம்
;
; தருக்க கோப்பைத் திறக்கவும்
ஜேஎஸ்ஆர் ஓபன்
; வெளியீட்டிற்கு சேனலை அமைக்கவும்
LDX #$40 ; தருக்க கோப்பு எண்
JSR CHKOUT
;
; RS-232 க்கு அவுட்புட் சார் எ.கா. மோடம்
LDA #$45
JSR CHROUT
; தருக்க கோப்பை மூடு
LDA #$40
JSR க்ளோஸ்

ஒரு பைட்டைப் பெற, 'JSR CHKOUT' ஆனது 'JSR CHKIN' ஆல் மாற்றப்படுவதைத் தவிர, குறியீடு மிகவும் ஒத்ததாக உள்ளது:

LDA #$45
JSR CHROUT

'JSR GETIN' ஆல் மாற்றப்பட்டது, இதன் விளைவாக A பதிவேட்டில் வைக்கப்படும்.

பைட்டுகளை தொடர்ந்து அனுப்புவது அல்லது பெறுவது முறையே குறியீடு பிரிவின் அனுப்புதல் அல்லது பெறுதல் ஆகியவற்றிற்கான ஒரு வளையத்தால் செய்யப்படுகிறது.

கமடோருடனான உள்ளீடு மற்றும் வெளியீடு விசைப்பலகையைத் தவிர அதன் பெரும்பாலான நிகழ்வுகளுக்கு ஒரே மாதிரியாக இருப்பதைக் கவனிக்கவும், சில நடைமுறைகள் புரோகிராமரால் அழைக்கப்படுவதில்லை, ஆனால் அவை இயக்க முறைமையால் அழைக்கப்படுகின்றன.

5.11 எண்ணுதல் மற்றும் நேரம்

எண்ணும் வரிசையைக் கவனியுங்கள்:

2, 1, 0

இது 2 முதல் 0 வரை கணக்கிடப்படுகிறது. இப்போது, ​​மீண்டும் மீண்டும் வரும் எண்ணும் வரிசையைக் கவனியுங்கள்:

2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0

இது ஒரே வரிசையில் மீண்டும் மீண்டும் எண்ணப்படுதல் ஆகும். வரிசை நான்கு முறை மீண்டும் மீண்டும் செய்யப்படுகிறது. நான்கு முறை என்பது நேரம் 4. ஒரு வரிசையில் எண்ணப்படுகிறது. அதே வரிசையை மீண்டும் செய்வது நேரமாகும்.

கொமடோர்-64ன் சிஸ்டம் யூனிட்டில் இரண்டு சிக்கலான இடைமுக அடாப்டர்கள் உள்ளன. ஒவ்வொரு சிஐஏவிற்கும் டைமர் ஏ (டிஏ) மற்றும் டைமர் பி (டிபி) என்ற இரண்டு கவுண்டர்/டைமர் சர்க்யூட்கள் உள்ளன. எண்ணும் சுற்று நேர சுற்றுக்கு வேறுபட்டதல்ல. கொமடோர்-64ல் உள்ள கவுண்டர் அல்லது டைமர் இதையே குறிக்கிறது. உண்மையில், அவற்றில் ஏதேனும் ஒன்று 16-பிட் பதிவேட்டைக் குறிக்கிறது, இது கணினி கடிகார துடிப்புகளில் எப்போதும் 0 ஆகக் கணக்கிடப்படும். 16-பிட் பதிவேட்டில் வெவ்வேறு மதிப்புகளை அமைக்கலாம். பெரிய மதிப்பு, பூஜ்ஜியமாக எண்ணுவதற்கு அதிக நேரம் எடுக்கும். ஒவ்வொரு முறையும் ஒரு டைமர் பூஜ்ஜியத்தைக் கடந்தும், தி IRQ குறுக்கீடு சமிக்ஞை நுண்செயலிக்கு அனுப்பப்படுகிறது. எண்ணிக்கை பூஜ்ஜியத்தைத் தாண்டிச் செல்லும்போது, ​​​​அது அண்டர்ஃப்ளோ என்று அழைக்கப்படுகிறது.

டைமர் சர்க்யூட் எவ்வாறு திட்டமிடப்பட்டுள்ளது என்பதைப் பொறுத்து, ஒரு டைமரை ஒரு முறை அல்லது தொடர்ச்சியான பயன்முறையில் இயக்க முடியும். முந்தைய விளக்கப்படத்துடன், ஒரு முறை பயன்முறை என்பது '2, 1, 0' என்று பொருள்படும் மற்றும் கடிகார துடிப்புகள் தொடரும் போது நிறுத்தவும். தொடர்ச்சியான பயன்முறையானது '2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, முதலியன' போன்றது. கடிகார துடிப்புகளுடன் தொடர்கிறது. அதாவது பூஜ்ஜியத்தைத் தாண்டிச் செல்லும் போது, ​​எந்த அறிவுறுத்தலும் வழங்கப்படாவிட்டால், கவுண்டவுன் வரிசை மீண்டும் நிகழ்கிறது. பெரிய எண் பொதுவாக 2 ஐ விட அதிகமாக இருக்கும்.

CIA #1 இன் டைமர் A (TA) உருவாக்குகிறது IRQ விசைப்பலகைக்கு சேவை செய்ய சீரான இடைவெளியில் (காலங்கள்). உண்மையில், இது இயல்பாக ஒவ்வொரு வினாடிக்கும் 1/60 ஆகும். IRQ ஒவ்வொரு 1/60 நொடிக்கும் நுண்செயலிக்கு அனுப்பப்படும். அது எப்போது மட்டுமே IRQ விசைப்பலகை வரிசையிலிருந்து (இடையக) ஒரு நிரல் ஒரு முக்கிய மதிப்பைப் படிக்க முடியும் என்று அனுப்பப்படுகிறது. நுண்செயலிக்கு ஒரே ஒரு முள் மட்டுமே உள்ளது என்பதை நினைவில் கொள்ளுங்கள் IRQ சமிக்ஞை. நுண்செயலியில் ஒரு முள் மட்டுமே உள்ளது என்எம்ஐ சமிக்ஞை. நுண்செயலிக்கான ¯NMI சமிக்ஞை எப்போதும் CIA #2 இலிருந்து வருகிறது.

16-பிட் டைமர் பதிவேட்டில் இரண்டு நினைவக முகவரிகள் உள்ளன: ஒன்று குறைந்த பைட்டுக்கும், ஒன்று அதிக பைட்டுக்கும். ஒவ்வொரு CIA க்கும் இரண்டு டைமர் சுற்றுகள் உள்ளன. இரண்டு சிஐஏக்களும் ஒரே மாதிரியானவை. CIA #1க்கு, இரண்டு டைமர்களுக்கான முகவரிகள்: TA க்கான DC04 மற்றும் DC05 மற்றும் TB க்கு DC06 மற்றும் DC07. CIA #2 க்கு, இரண்டு டைமர்களுக்கான முகவரிகள்: TA க்கான DD04 மற்றும் DD05 மற்றும் TBக்கு DD06 மற்றும் DD07.

எண்ணுவதற்கு 25510 என்ற எண்ணை CIA #2 இன் TA டைமருக்கு அனுப்ப வேண்டும் என்று வைத்துக்கொள்வோம். 25510 = 00000000111111112 என்பது பதினாறு பிட்களில் உள்ளது. 00000000111111112 = $000FFF ஹெக்ஸாடெசிமலில் உள்ளது. இந்த வழக்கில், $FF $DD04 முகவரியில் பதிவேட்டிற்கு அனுப்பப்படுகிறது, மேலும் $00 $DD05 முகவரியில் பதிவேட்டிற்கு அனுப்பப்படுகிறது - சிறிய எண்ணம். பின்வரும் குறியீடு பிரிவு எண்ணை பதிவுக்கு அனுப்புகிறது:

LDA #$FF
மாநிலம் $DD04
LDA #$00
மாநிலம் $DD05

CIA இல் உள்ள பதிவேடுகள் ரேம் முகவரிகளைக் கொண்டிருந்தாலும், அவை உடல் ரீதியாக CIA இல் உள்ளன மற்றும் CIA ஆனது RAM அல்லது ROM இலிருந்து ஒரு தனி IC ஆகும்.

அதெல்லாம் இல்லை! முந்தைய குறியீட்டைப் போன்று, எண்ணுவதற்கு டைமருக்கு எண் கொடுக்கப்பட்டால், எண்ணுவது தொடங்காது. டைமருக்கான தொடர்புடைய கட்டுப்பாட்டுப் பதிவேட்டில் எட்டு-பிட் பைட் அனுப்பப்பட்டவுடன் எண்ணுதல் தொடங்குகிறது. கட்டுப்பாட்டுப் பதிவேட்டின் இந்த பைட்டின் முதல் பிட், எண்ணிக்கை தொடங்க வேண்டுமா இல்லையா என்பதைக் குறிக்கிறது. இந்த முதல் பிட்டுக்கு 0 இன் மதிப்பு என்பது எண்ணுவதை நிறுத்துவதாகும், அதே சமயம் 1 இன் மதிப்பு எண்ணுவதைத் தொடங்குவதாகும். மேலும், பைட் எண்ணுவது ஒரு ஷாட் (ஒரு முறை) பயன்முறையில் உள்ளதா அல்லது இலவச இயங்கும் பயன்முறையில் (தொடர்ச்சியான பயன்முறையில்) உள்ளதா என்பதைக் குறிக்க வேண்டும். டைமர் பதிவேட்டின் மதிப்பு பூஜ்ஜியமாக மாறும்போது ஒரு-ஷாட் பயன்முறை எண்ணப்பட்டு நிறுத்தப்படும். இலவச இயங்கும் பயன்முறையில், 0ஐ அடைந்த பிறகு கவுண்டிங் டவுன் மீண்டும் நிகழ்கிறது. கட்டுப்பாட்டுப் பதிவேட்டிற்கு அனுப்பப்படும் பைட்டின் நான்காவது (குறியீட்டு 3) பிட் பயன்முறையைக் குறிக்கிறது: 0 என்பது இலவச இயங்கும் பயன்முறை மற்றும் 1 என்பது ஒரு-ஷாட் பயன்முறையைக் குறிக்கிறது.

ஒரு ஷாட் பயன்முறையில் எண்ணத் தொடங்க பொருத்தமான எண் ஹெக்ஸாடெசிமலில் 000010012 = $09 ஆகும். இலவச இயங்கும் பயன்முறையில் எண்ணத் தொடங்க பொருத்தமான எண் ஹெக்ஸாடெசிமலில் 000000012 = $01 ஆகும். ஒவ்வொரு டைமர் பதிவுக்கும் அதன் சொந்த கட்டுப்பாட்டுப் பதிவு உள்ளது. CIA #1 இல், டைமர் Aக்கான கட்டுப்பாட்டுப் பதிவேட்டில் DC0E16 இன் ரேம் முகவரி உள்ளது மற்றும் டைமர் Bக்கான கட்டுப்பாட்டுப் பதிவேட்டில் DC0F16 இன் ரேம் முகவரி உள்ளது. CIA #2 இல், டைமர் Aக்கான கட்டுப்பாட்டுப் பதிவேட்டில் DD0E16 இன் ரேம் முகவரியும், B டைமருக்கான கட்டுப்பாட்டுப் பதிவேட்டில் DD0F16 இன் ரேம் முகவரியும் உள்ளது. சிஐஏ #2 இன் TA இல் பதினாறு-பிட் எண்ணை ஒரு ஷாட் முறையில் எண்ணத் தொடங்க, பின்வரும் குறியீட்டைப் பயன்படுத்தவும்:

LDA #$09
STA $DD0E

CIA #2 இன் TA இல் பதினாறு-பிட் எண்ணைக் கணக்கிடத் தொடங்க, இலவச இயங்கும் பயன்முறையில், பின்வரும் குறியீட்டைப் பயன்படுத்தவும்:

LDA #$01
STA $DD0E

5.12 தி IRQ மற்றும் என்எம்ஐ கோரிக்கைகளை

6502 நுண்செயலி உள்ளது IRQ மற்றும் என்எம்ஐ கோடுகள் (பின்கள்). சிஐஏ #1 மற்றும் சிஐஏ #2 இரண்டும் ஒவ்வொன்றும் உள்ளது IRQ நுண்செயலிக்கான முள். தி IRQ CIA #2 இன் முள் இணைக்கப்பட்டுள்ளது என்எம்ஐ µP இன் முள். தி IRQ CIA #1 இன் முள் இணைக்கப்பட்டுள்ளது IRQ µP இன் முள். நுண்செயலியை இணைக்கும் இரண்டு குறுக்கீடு கோடுகள் மட்டுமே அவை. அதனால் IRQ சிஐஏ #2 இன் முள் என்எம்ஐ ஆதாரம் மற்றும் ¯NMI வரியாகவும் காணலாம்.

சிஐஏ #1 ஐ உருவாக்குவதற்கான ஐந்து உடனடி ஆதாரங்களைக் கொண்டுள்ளது IRQ µP க்கான சமிக்ஞை. CIA #2 ஆனது CIA #1 போன்ற கட்டமைப்பில் உள்ளது. எனவே, CIA #2 இந்த முறை குறுக்கீடு சமிக்ஞையை உருவாக்கும் அதே ஐந்து உடனடி ஆதாரங்களைக் கொண்டுள்ளது. என்எம்ஐ சமிக்ஞை. µP பெறும்போது நினைவில் கொள்ளுங்கள் என்எம்ஐ சிக்னல், அது கையாள்கிறது என்றால் IRQ கோரிக்கை, அதை இடைநிறுத்தி கையாளுகிறது என்எம்ஐ கோரிக்கை. அதை கையாளும் போது என்எம்ஐ கோரிக்கை, பின்னர் அதை கையாளுதல் மீண்டும் தொடங்குகிறது IRQ கோரிக்கை.

CIA #1 பொதுவாக விசைப்பலகை மற்றும் ஜாய்ஸ்டிக் போன்ற விளையாட்டு சாதனத்துடன் வெளிப்புறமாக இணைக்கப்பட்டுள்ளது. போர்ட் B ஐ விட CIA #1 இன் போர்ட் A ஐ விசைப்பலகை அதிகம் பயன்படுத்துகிறது. கேம் சாதனமானது அதன் போர்ட் A ஐ விட CIA #1 போர்ட் B ஐ அதிகம் பயன்படுத்துகிறது. CIA #2 பொதுவாக வட்டு இயக்ககத்துடன் வெளிப்புறமாக இணைக்கப்பட்டுள்ளது (டெய்சி பிரிண்டருடன் இணைக்கப்பட்டுள்ளது) மற்றும் மோடம். வட்டு இயக்கி அதன் போர்ட் B ஐ விட CIA #2 இன் போர்ட் A ஐ (வெளிப்புற சீரியல் போர்ட் மூலமாக இருந்தாலும்) பயன்படுத்துகிறது. மோடம் (RS-232) அதன் போர்ட் A ஐ விட CIA #2 போர்ட் B ஐ அதிகம் பயன்படுத்துகிறது.

இதையெல்லாம் வைத்து, சிஸ்டம் யூனிட்டுக்கு எப்படித் தெரியும் IRQ அல்லது என்எம்ஐ குறுக்கிடவா? சிஐஏ #1 மற்றும் சிஐஏ #2 ஆகியவை குறுக்கீடு செய்வதற்கான ஐந்து உடனடி ஆதாரங்களைக் கொண்டுள்ளன. µPக்கு குறுக்கீடு சமிக்ஞை என்றால் என்எம்ஐ , மூலமானது CIA #2 இலிருந்து உடனடி ஐந்து ஆதாரங்களில் ஒன்றாகும். µPக்கு குறுக்கீடு சமிக்ஞை என்றால் IRQ , மூலமானது CIA #1 இலிருந்து உடனடி ஐந்து ஆதாரங்களில் ஒன்றாகும்.

அடுத்த கேள்வி என்னவென்றால், 'ஒவ்வொரு சிஐஏவின் ஐந்து உடனடி ஆதாரங்களையும் சிஸ்டம் யூனிட் எவ்வாறு வேறுபடுத்துகிறது?' ஒவ்வொரு CIA க்கும் எட்டு பிட் பதிவேடு உள்ளது, இது குறுக்கீடு கட்டுப்பாட்டு பதிவு (ICR) என அழைக்கப்படுகிறது. CIA இன் இரண்டு துறைமுகங்களுக்கும் ICR சேவை செய்கிறது. பிட் 0 இலிருந்து தொடங்கி குறுக்கீடு கட்டுப்பாட்டு பதிவேட்டின் எட்டு பிட்களின் அர்த்தங்களை பின்வரும் அட்டவணை காட்டுகிறது:

அட்டவணை 5.13
குறுக்கீடு கட்டுப்பாட்டுப் பதிவு
பிட் இன்டெக்ஸ் பொருள்
0 டைமர் A இன் கீழ்ப்பாய்வு மூலம் அமைக்கவும் (1 ஆனது).
1 டைமர் B இன் கீழ்ப்பாய்வு மூலம் அமைக்கப்பட்டது
2 நாள்-நாள் கடிகாரம் அலாரத்திற்கு சமமாக இருக்கும்போது அமைக்கவும்
3 தொடர் போர்ட் நிரம்பியதும் அமைக்கவும்
4 வெளிப்புற சாதனம் மூலம் அமைக்கவும்
5 பயன்படுத்தப்படவில்லை (0 செய்யப்பட்டது)
6 பயன்படுத்தப்படவில்லை (0 செய்யப்பட்டது)
7 முதல் ஐந்து பிட்களில் ஏதேனும் ஒன்றை அமைக்கும்போது அமைக்கவும்

அட்டவணையில் இருந்து பார்க்க முடிந்தால், உடனடி ஆதாரங்கள் ஒவ்வொன்றும் முதல் ஐந்து பிட்களில் ஒன்றால் குறிப்பிடப்படுகின்றன. எனவே, குறுக்கீடு சமிக்ஞையை µP இல் பெறும்போது, ​​குறுக்கீட்டின் சரியான மூலத்தை அறிய, குறுக்கீடு கட்டுப்பாட்டுப் பதிவேட்டின் உள்ளடக்கத்தைப் படிக்க குறியீட்டை இயக்க வேண்டும். CIA #1 இன் ICRக்கான ரேம் முகவரி DC0D16 ஆகும். CIA #2 இன் ICRக்கான ரேம் முகவரி DD0D16 ஆகும். CIA #1 இன் ICR இன் உள்ளடக்கத்தை µP திரட்டியில் படிக்க (திரும்ப) செய்ய, பின்வரும் வழிமுறைகளை உள்ளிடவும்:

LDA$DC0D

CIA #2 இன் ICR இன் உள்ளடக்கத்தை µP திரட்டியில் படிக்க (திரும்ப) செய்ய, பின்வரும் வழிமுறைகளை உள்ளிடவும்:

LDA $DD0D

5.13 குறுக்கீடு இயக்கப்பட்ட பின்னணி நிரல்

விசைப்பலகை பொதுவாக ஒவ்வொரு 1/60 வினாடிக்கும் நுண்செயலியை குறுக்கிடுகிறது. ஒரு நிரல் இயங்குகிறது என்று கற்பனை செய்து பாருங்கள், அது கீழே உள்ள குறியீடு பிரிவுகளுடன் தொடரும் முன், விசைப்பலகையில் இருந்து ஒரு விசைக்காக காத்திருக்கும் நிலையை அடையும். விசைப்பலகையில் எந்த விசையும் அழுத்தப்படாவிட்டால், நிரல் ஒரு சிறிய சுழற்சியை மட்டுமே செய்கிறது, ஒரு விசைக்காக காத்திருக்கிறது. நிரல் இயங்குகிறது மற்றும் விசைப்பலகை குறுக்கீடு வழங்கப்பட்ட பிறகு விசைப்பலகையில் இருந்து ஒரு விசையை எதிர்பார்க்கலாம் என்று கற்பனை செய்து பாருங்கள். அந்த நேரத்தில், முழு கணினியும் மறைமுகமாக நிறுத்தப்பட்டு, காத்திருப்பு வளையத்தை தவிர வேறு எதையும் செய்யவில்லை. அடுத்த விசைப்பலகை குறுக்கீட்டின் அடுத்த வெளியீட்டிற்கு சற்று முன்பு ஒரு விசைப்பலகை விசை அழுத்தப்பட்டதாக கற்பனை செய்து பாருங்கள். அதாவது ஒரு நொடியில் அறுபதில் ஒரு பங்கு வரை கணினி எதுவும் செய்யவில்லை! கொமடோர்-64 காலத்திலும் கணினி ஒன்றும் செய்யாத காலம் அது. அந்த நேரத்தில் (காலம்) கம்ப்யூட்டர் வேறு ஏதாவது செய்து கொண்டிருக்கலாம். ஒரு நிரலில் இதுபோன்ற பல காலங்கள் உள்ளன.

அத்தகைய 'செயலற்ற' கால அளவுகளில் செயல்படும் வகையில் இரண்டாவது நிரலை எழுதலாம். அத்தகைய திட்டம் முக்கிய (அல்லது முதல்) திட்டத்தின் பின்னணியில் செயல்படுவதாக கூறப்படுகிறது. இதைச் செய்வதற்கான எளிதான வழி, விசைப்பலகையில் இருந்து ஒரு விசை எதிர்பார்க்கப்படும் போது, ​​மாற்றியமைக்கப்பட்ட BRK குறுக்கீடு கையாளுதலில் கட்டாயப்படுத்துவதாகும்.

BRK அறிவுறுத்தலுக்கான சுட்டி
$0316 மற்றும் $0317 முகவரிகளின் RAM தொடர்ச்சியான இடங்களில் உண்மையான BRK அறிவுறுத்தல் வழக்கத்திற்கான சுட்டி (வெக்டார்) ஆகும். ROM இல் உள்ள இயக்க முறைமையால் கணினி இயக்கப்படும்போது இயல்புநிலை சுட்டிக்காட்டி அங்கு வைக்கப்படும். இந்த முன்னிருப்பு சுட்டியானது, OS ROM இல் உள்ள இயல்புநிலை BRK இன்ஸ்ட்ரக்ஷன் ஹேண்ட்லரை இன்னும் சுட்டிக்காட்டும் முகவரியாகும். சுட்டிக்காட்டி 16-பிட் முகவரி. சுட்டிக்காட்டியின் கீழ் பைட் $0306 முகவரியின் பைட் இடத்தில் வைக்கப்பட்டுள்ளது, மேலும் சுட்டிக்காட்டியின் அதிக பைட் $0317 பைட் இடத்தில் வைக்கப்பட்டுள்ளது.

கணினி 'சும்மா' இருக்கும் போது, ​​இரண்டாவது நிரலின் சில குறியீடுகள் கணினியால் செயல்படுத்தப்படும் வகையில் இரண்டாவது நிரலை எழுதலாம். இதன் பொருள் இரண்டாவது நிரல் துணை நிரல்களால் உருவாக்கப்பட வேண்டும். விசைப்பலகையிலிருந்து ஒரு விசைக்காகக் காத்திருக்கும் கணினி 'சும்மா' இருக்கும்போது, ​​இரண்டாவது நிரலுக்கான அடுத்த சப்ரூட்டீன் செயல்படுத்தப்படும். சிஸ்டம் யூனிட்டின் செயல்பாட்டுடன் ஒப்பிடும்போது கணினியுடன் மனித தொடர்பு மெதுவாக உள்ளது.

இந்தச் சிக்கலைத் தீர்ப்பது எளிது: ஒவ்வொரு முறையும் கணினி விசைப்பலகையில் இருந்து ஒரு விசைக்காகக் காத்திருக்க வேண்டியிருக்கும் போது, ​​குறியீட்டில் BRK அறிவுறுத்தலைச் செருகவும் மற்றும் $0316 (மற்றும் $0317) சுட்டியை இரண்டாவது சப்ரூட்டினின் சுட்டிக்காட்டியுடன் மாற்றவும் ( விருப்ப) நிரல். அந்த வகையில், இரண்டு நிரல்களும் தனியாக இயங்கும் பிரதான நிரலை விட அதிக நீளமில்லாத கால அளவில் இயங்கும்.

5.14 சட்டசபை மற்றும் தொகுப்பு

அசெம்பிளர் அனைத்து லேபிள்களையும் முகவரிகளுடன் மாற்றுகிறது. ஒரு சட்டசபை மொழி நிரல் பொதுவாக ஒரு குறிப்பிட்ட முகவரியில் தொடங்குவதற்கு எழுதப்படுகிறது. அசெம்ப்லரின் முடிவு (அசெம்பிள் செய்த பிறகு) பைனரியில் உள்ள அனைத்தையும் கொண்டு 'பொருள் குறியீடு' என்று அழைக்கப்படுகிறது. கோப்பு ஒரு நிரல் மற்றும் ஆவணம் அல்ல என்றால் அந்த முடிவு இயங்கக்கூடிய கோப்பு ஆகும். ஒரு ஆவணம் இயங்கக்கூடியது அல்ல.

ஒரு பயன்பாடு ஒன்றுக்கு மேற்பட்ட (அசெம்பிளி மொழி) நிரல்களைக் கொண்டுள்ளது. பொதுவாக ஒரு முக்கிய திட்டம் உள்ளது. இங்குள்ள சூழ்நிலையை குறுக்கீடு இயக்கப்பட்ட பின்னணி நிரல்களின் சூழ்நிலையுடன் குழப்பிக் கொள்ளக்கூடாது. இங்குள்ள அனைத்து நிரல்களும் முன்புற நிரல்களாகும், ஆனால் முதல் அல்லது முக்கிய நிரல் உள்ளது.

ஒன்றுக்கு மேற்பட்ட முன்புற புரோகிராம்கள் இருக்கும் போது அசெம்ப்லருக்குப் பதிலாக கம்பைலர் தேவைப்படுகிறது. கம்பைலர் ஒவ்வொரு நிரல்களையும் ஒரு பொருள் குறியீட்டில் இணைக்கிறது. இருப்பினும், ஒரு சிக்கல் இருக்கும்: நிரல்கள் வெவ்வேறு நபர்களால் எழுதப்பட்டிருக்கலாம் என்பதால் சில குறியீடு பிரிவுகள் ஒன்றுடன் ஒன்று சேரும். கம்பைலரின் தீர்வு, நினைவக இடத்தைத் தவிர அனைத்து ஒன்றுடன் ஒன்று நிரல்களையும் மாற்றுவதாகும், இதனால் நிரல்கள் ஒன்றுடன் ஒன்று சேராது. இப்போது, ​​மாறிகளை சேமிக்கும் போது, ​​சில மாறி முகவரிகள் இன்னும் ஒன்றுடன் ஒன்று இருக்கும். மேலெழும் முகவரிகளை புதிய முகவரிகளுடன் (முதல் நிரலைத் தவிர) மாற்றுவதே இங்கு தீர்வு. இந்த வழியில், வெவ்வேறு நிரல்கள் நினைவகத்தின் வெவ்வேறு பகுதிகளுக்கு (பகுதிகளுக்கு) பொருந்தும்.

அதையெல்லாம் வைத்து ஒரு ப்ரோக்ராமில் உள்ள ஒரு ரொட்டினை இன்னொரு புரோகிராமில் ரொட்டினை அழைப்பது சாத்தியம். எனவே, கம்பைலர் இணைப்பைச் செய்கிறது. இணைப்பு என்பது ஒரு நிரலில் சப்ரூட்டினின் தொடக்க முகவரியைக் கொண்டிருப்பதைக் குறிக்கிறது, பின்னர் அதை மற்றொரு நிரலில் அழைப்பதைக் குறிக்கிறது; இரண்டும் பயன்பாட்டின் ஒரு பகுதியாகும். இரண்டு நிரல்களும் இதற்கு ஒரே முகவரியைப் பயன்படுத்த வேண்டும். இறுதி முடிவு பைனரி (பிட்கள்) உள்ள அனைத்தையும் கொண்ட ஒரு பெரிய பொருள் குறியீடு ஆகும்.

5.15 ஒரு நிரலைச் சேமித்தல், ஏற்றுதல் மற்றும் இயக்குதல்

ஒரு அசெம்பிளி மொழி பொதுவாக சில எடிட்டர் புரோகிராமில் எழுதப்படுகிறது (இது அசெம்பிளர் புரோகிராமுடன் வழங்கப்படலாம்). எடிட்டர் நிரல் நிரல் எங்கிருந்து தொடங்குகிறது மற்றும் நினைவகத்தில் (ரேம்) முடிவடைகிறது என்பதைக் குறிக்கிறது. Commodore-64 இன் OS ROM இன் Kernal SAVE ரொட்டீன் நினைவகத்தில் உள்ள ஒரு நிரலை வட்டில் சேமிக்க முடியும். இது நினைவகத்தின் பிரிவை (பிளாக்) டிஸ்கிற்கு அனுப்புகிறது. சேமிக்கப்படும் நிரலில் இருந்து பிரிக்கப்பட்ட SAVEக்கான அழைப்பு அறிவுறுத்தலை வைத்திருப்பது நல்லது, இதனால் நிரல் வட்டில் இருந்து நினைவகத்தில் ஏற்றப்படும்போது, ​​​​அது இயக்கப்படும்போது அது மீண்டும் சேமிக்கப்படாது. ஒரு அசெம்பிளி மொழி நிரலை வட்டில் இருந்து ஏற்றுவது வேறு வகையான சவாலாகும், ஏனெனில் ஒரு நிரல் தன்னை ஏற்ற முடியாது.

ஒரு நிரல் வட்டில் இருந்து அது தொடங்கும் மற்றும் RAM இல் முடிவடையும் இடத்திற்கு தன்னை ஏற்ற முடியாது. அந்த நாட்களில் கொமடோர்-64 பொதுவாக அடிப்படை மொழி நிரல்களை இயக்குவதற்கு ஒரு பேசிக் மொழிபெயர்ப்பாளருடன் வழங்கப்பட்டது. இயந்திரம் (கணினி) இயக்கப்பட்டிருக்கும் போது, ​​கட்டளை வரியில்: தயார். அங்கிருந்து, தட்டச்சு செய்த பிறகு 'Enter' விசையை அழுத்துவதன் மூலம் அடிப்படை கட்டளைகள் அல்லது வழிமுறைகளை தட்டச்சு செய்யலாம். ஒரு கோப்பை ஏற்றுவதற்கான அடிப்படை கட்டளை (அறிவுறுத்தல்) :

'கோப்பு பெயர்', 8,1 ஐ ஏற்றவும்

கட்டளை LOAD என்ற அடிப்படை ஒதுக்கப்பட்ட வார்த்தையுடன் தொடங்குகிறது. இதைத் தொடர்ந்து ஒரு ஸ்பேஸ் மற்றும் இரட்டை மேற்கோள்களில் கோப்பு-பெயர். சாதன எண் 8ஐத் தொடர்ந்து காற்புள்ளியால் வரும். வட்டின் இரண்டாம் நிலை முகவரி 1 ஐப் பின்தொடர்கிறது, அதற்கு முன் காற்புள்ளி இருக்கும். அத்தகைய கோப்புடன், சட்டசபை மொழி நிரலின் தொடக்க முகவரி வட்டில் உள்ள கோப்பின் தலைப்பில் உள்ளது. BASIC நிரலை ஏற்றி முடித்ததும், நிரலின் கடைசி ரேம் முகவரி மற்றும் 1 திரும்பும். இங்கே 'திரும்பியது' என்ற வார்த்தையின் அர்த்தம், கடைசி முகவரி மற்றும் 1 இன் குறைந்த பைட் µP X பதிவேட்டில் வைக்கப்பட்டுள்ளது, மேலும் கடைசி முகவரியின் பிளஸ் 1 இன் அதிக பைட் µP Y பதிவேட்டில் வைக்கப்பட்டுள்ளது.

நிரலை ஏற்றிய பிறகு, அதை இயக்க வேண்டும் (செயல்படுத்தப்பட வேண்டும்). நிரலின் பயனர் நினைவகத்தில் செயல்படுத்துவதற்கான தொடக்க முகவரியை அறிந்திருக்க வேண்டும். மீண்டும், மற்றொரு அடிப்படை நிரல் இங்கே அவசியம். இது SYS கட்டளை. SYS கட்டளையை இயக்கிய பிறகு, சட்டசபை மொழி நிரல் இயங்கும் (மற்றும் நிறுத்தப்படும்). இயங்கும் போது, ​​விசைப்பலகையில் இருந்து ஏதேனும் உள்ளீடு தேவைப்பட்டால், சட்டசபை மொழி நிரல் அதை பயனருக்குக் குறிக்க வேண்டும். பயனர் விசைப்பலகையில் தரவை உள்ளிட்டு 'Enter' விசையை அழுத்திய பிறகு, அடிப்படை மொழிபெயர்ப்பாளரின் குறுக்கீடு இல்லாமல் விசைப்பலகை உள்ளீட்டைப் பயன்படுத்தி சட்டசபை மொழி நிரல் தொடர்ந்து இயங்கும்.

அசெம்பிளி மொழி நிரலுக்கான செயல்படுத்தல் (இயங்கும்) ரேம் முகவரியின் தொடக்கமானது C12316 என்று வைத்துக் கொண்டால், C123 SYS கட்டளையுடன் பயன்படுத்துவதற்கு முன் பத்தை அடிப்படையாக மாற்றும். C12316 ஐ அடிப்படை பத்துக்கு மாற்றுவது பின்வருமாறு:

எனவே, அடிப்படை SYS கட்டளை:

SYS 49443

5.16 Commodore-64க்கான துவக்கம்

Commodore-64க்கான துவக்கமானது இரண்டு கட்டங்களைக் கொண்டுள்ளது: வன்பொருள் மீட்டமைப்பு கட்டம் மற்றும் இயக்க முறைமை துவக்க நிலை. இயக்க முறைமை ROM இல் உள்ள Kernal ஆகும் (மற்றும் வட்டில் இல்லை). மீட்டமைப்பு வரி உள்ளது (உண்மையில் RES ) இது 6502 µP இல் ஒரு பின்னுடன் இணைக்கிறது, மேலும் CIA 1, CIA 2 மற்றும் VIC II போன்ற அனைத்து சிறப்புக் கப்பல்களிலும் அதே முள் பெயருடன் இணைகிறது. மீட்டமைப்பு கட்டத்தில், இந்த வரியின் காரணமாக, µP மற்றும் சிறப்பு சில்லுகளில் உள்ள அனைத்து பதிவுகளும் 0 க்கு மீட்டமைக்கப்படும் (ஒவ்வொரு பிட்டிற்கும் பூஜ்ஜியம் செய்யப்பட்டது). அடுத்து, நுண்செயலி வன்பொருள் மூலம், ஸ்டாக் பாயிண்டர் மற்றும் செயலி நிலைப் பதிவு ஆகியவை நுண்செயலியில் அவற்றின் ஆரம்ப மதிப்புகளுடன் கொடுக்கப்பட்டுள்ளன. நிரல் கவுண்டர் பின்னர் $FFFC மற்றும் $FFFD இடங்களில் மதிப்புடன் (முகவரி) கொடுக்கப்படுகிறது. நிரல் கவுண்டர் அடுத்த அறிவுறுத்தலின் முகவரியை வைத்திருப்பதை நினைவில் கொள்க. மென்பொருள் துவக்கத்தைத் தொடங்கும் சப்ரூட்டினுக்கான உள்ளடக்கம் (முகவரி) இங்கு உள்ளது. இதுவரை அனைத்தும் நுண்செயலி வன்பொருள் மூலம் செய்யப்படுகிறது. இந்த கட்டத்தில் முழு நினைவகம் தொடப்படவில்லை. துவக்கத்தின் அடுத்த கட்டம் பின்னர் தொடங்குகிறது.

துவக்கமானது ROM OS இல் சில நடைமுறைகளால் செய்யப்படுகிறது. துவக்கம் என்பது சிறப்பு சில்லுகளில் சில பதிவேடுகளுக்கு ஆரம்ப அல்லது இயல்புநிலை மதிப்புகளை வழங்குவதாகும். சிறப்பு சில்லுகளில் சில பதிவேடுகளுக்கு ஆரம்ப அல்லது இயல்புநிலை மதிப்புகளை வழங்குவதன் மூலம் துவக்கம் தொடங்குகிறது. IRQ , எடுத்துக்காட்டாக, ஒவ்வொரு 1/60 வினாடிக்கும் வழங்கத் தொடங்க வேண்டும். எனவே, CIA #1 இல் உள்ள அதனுடன் தொடர்புடைய டைமரை அதன் இயல்புநிலை மதிப்பிற்கு அமைக்க வேண்டும்.

அடுத்து, கெர்னல் ஒரு ரேம் சோதனையை செய்கிறது. ஒவ்வொரு இடத்தையும் அந்த இடத்திற்கு ஒரு பைட்டை அனுப்பி மீண்டும் படிப்பதன் மூலம் இது சோதனை செய்கிறது. ஒரு வித்தியாசம் இருந்தால், குறைந்தபட்சம் அந்த இடம் மோசமாக இருக்கும். கெர்னல் நினைவகத்தின் மேற்பகுதி மற்றும் நினைவகத்தின் அடிப்பகுதியை அடையாளம் கண்டு, தொடர்புடைய சுட்டிகளை பக்கம் 2 இல் அமைக்கிறது. நினைவகத்தின் மேல் $DFFF எனில், $FF $0283 இடத்திலும் $DF ஆனது $0284 பைட் இருப்பிடத்திலும் வைக்கப்படும். $0283 மற்றும் $0284 இரண்டும் HIRAM லேபிளைக் கொண்டுள்ளன. நினைவகத்தின் அடிப்பகுதி $0800 எனில், $00 $0281 இடத்திலும் $08 $0282 இடத்திலும் வைக்கப்படும். $0281 மற்றும் $0282 இரண்டும் LORAM லேபிளைக் கொண்டுள்ளன. ரேம் சோதனை உண்மையில் $0300 முதல் நினைவகத்தின் மேல் (ரேம்) தொடங்குகிறது.

இறுதியாக, உள்ளீடு/வெளியீட்டு திசையன்கள் (சுட்டிகள்) அவற்றின் இயல்புநிலை மதிப்புகளுக்கு அமைக்கப்படும். ரேம் சோதனை உண்மையில் $0300 முதல் நினைவகத்தின் மேல் (ரேம்) தொடங்குகிறது. அதாவது பக்கம் 0, பக்கம் 1 மற்றும் பக்கம் 2 ஆகியவை துவக்கப்பட்டுள்ளன. பக்கம் 0, குறிப்பாக, நிறைய OS ROM சுட்டிகள் மற்றும் பக்கம் 2 நிறைய அடிப்படை சுட்டிகள் உள்ளன. இந்த சுட்டிகள் மாறிகள் என குறிப்பிடப்படுகின்றன. பக்கம் 1 என்பது அடுக்கு என்பதை நினைவில் கொள்ளுங்கள். சுட்டிகள் பெயர்கள் (லேபிள்கள்) இருப்பதால் அவை மாறிகள் என்று குறிப்பிடப்படுகின்றன. இந்த கட்டத்தில், திரை நினைவகம் திரைக்கு (மானிட்டர்) அழிக்கப்படுகிறது. இதன் பொருள் 1000 ரேம் திரை இடங்களுக்கு இடத்திற்கான $20 குறியீட்டை (இது ASCII $20 போலவே இருக்கும்) அனுப்புவதாகும். கடைசியாக, மானிட்டரின் (திரையில்) மேலே தயாராக இருக்கும் BASIC கட்டளை வரியில் காண்பிக்க, Kernal அடிப்படை மொழிபெயர்ப்பாளரைத் தொடங்குகிறது.

5.17 சிக்கல்கள்

அடுத்த அத்தியாயத்திற்குச் செல்வதற்கு முன், ஒரு அத்தியாயத்தில் உள்ள அனைத்து சிக்கல்களையும் தீர்க்க வாசகருக்கு அறிவுறுத்தப்படுகிறது.

  1. CIA #2 போர்ட் A இன் அனைத்து பிட்களையும் வெளியீட்டாகவும், CIA #2 போர்ட் B இன் உள்ளீடாகவும் செய்யும் ஒரு சட்டசபை மொழிக் குறியீட்டை எழுதவும்.
  2. விசைப்பலகை விசையை அழுத்தும் வரை காத்திருக்கும் 6502-அசெம்பிளி மொழிக் குறியீட்டை எழுதவும்.
  3. Commodore-64 திரைக்கு 'E' எழுத்தை அனுப்பும் 6502-அசெம்பிளி மொழி நிரலை எழுதவும்.
  4. 6502-அசெம்பிளி மொழி நிரலை எழுதவும், அது விசைப்பலகையில் இருந்து ஒரு எழுத்தை எடுத்து அதை Commodore-64 திரைக்கு அனுப்புகிறது, முக்கிய குறியீடு மற்றும் நேரத்தைப் புறக்கணிக்கிறது.
  5. Commodore-64 வட்டில் இருந்து ஒரு பைட்டைப் பெறும் 6502-அசெம்பிளி மொழி நிரலை எழுதவும்.
  6. ஒரு கோப்பை Commodore-64 வட்டில் சேமிக்கும் 6502-அசெம்பிளி மொழி நிரலை எழுதவும்.
  7. Commodore-64 வட்டில் இருந்து நிரல் கோப்பை ஏற்றி அதைத் தொடங்கும் 6502-அசெம்பிளி மொழி நிரலை எழுதவும்.
  8. Commodore-64 இன் பயனர் RS-232 இணக்கமான போர்ட்டுடன் இணைக்கப்பட்டுள்ள மோடமிற்கு “E” (ASCII) பைட்டை அனுப்பும் 6502-அசெம்பிளி மொழி நிரலை எழுதவும்.
  9. கொமடோர்-64 கணினியில் எண்ணுதல் மற்றும் நேரம் எவ்வாறு செய்யப்படுகிறது என்பதை விளக்குக.
  10. மாஸ்க் செய்ய முடியாத குறுக்கீடு கோரிக்கைகள் உட்பட 10 வெவ்வேறு உடனடி குறுக்கீடு கோரிக்கை ஆதாரங்களை கொமடோர்-64 சிஸ்டம் யூனிட் எவ்வாறு அடையாளம் காண முடியும் என்பதை விளக்கவும்.
  11. கொமடோர்-64 கணினியில் முன்னோடி நிரல் மூலம் பின்னணி நிரல் எவ்வாறு இயங்க முடியும் என்பதை விளக்குக.
  12. Commodore-64 கணினிக்கான ஒரு பயன்பாட்டில் சட்டசபை மொழி நிரல்களை எவ்வாறு தொகுக்க முடியும் என்பதை சுருக்கமாக விளக்கவும்.
  13. Commodore-64 கணினிக்கான துவக்க செயல்முறையை சுருக்கமாக விளக்கவும்.