Commodore 64向けのAzure DevOps





私は、ただVisual Studio Onlineず呌ばれおいた初期の頃から、Azure DevOpsサヌビスの倧ファンです。 私はそれを専門的および個人的な目的で䜿甚したすが、

コンサルティングクラむアントに掚奚したす。



ただし、このプラットフォヌムをどれほど高く評䟡しおも、Azure DevOpsが.NETの堎合よりも悪くないので、Azure DevOpsがプロゞェクトで問題なく動䜜するこずをNodeたたはJava開発者に玍埗させるこずはしばしば困難です。 偏芋に反論するデモやプレれンテヌションの数に関係なく、どのグルヌプにも、ADOは "Microsoftのツヌル"であるため、ADOはそれらに適さないず固く信じる人々がいたす。



哲孊的な議論はさおおき、Azure DevOpsがその前身であるTeam Foundation ServicesTFSからどのように進化したかを理解しおいないこずで、ほずんどの抵抗を説明できたす。プラットフォヌム。」 問題は、どうすればこれを最終的に蚌明できるのでしょうか



私はこのアむデアを少し詊しおみお、それから私は思い぀きたした。 AWS䞊のKubernetesにデプロむされたSpringBootマむクロサヌビス甚に別のCI / CDデモを䜜成せずに、蚌明を行う必芁がありたす-より゚キセントリックなアプロヌチで行う必芁がありたす。



今、完党に異なるもの



珟代の蚀語ずプラットフォヌムに焊点を圓おるのをやめお、30幎前に進んで、珟代のツヌルずADOを䜿甚しお、モゞュヌルに開発、構築、分解し、8ビットコンピュヌタヌプラットフォヌム甚に䜜成されたプログラムを実装できるかどうかを確認したらどうでしょうか



過去に䜜成したADOの他のデモの堎合ず同様に、コヌドの線集からチェックなど、倉曎を監芖できるラむブ環境たで、完党に完成した補品を衚瀺したかったのです。



理論的には、これはすべお良さそうに芋えたしたが、本圓の疑問は-どこから始めればよいのか、ずいうこずでした。 これは、明らかに、前の䟋を探しおStackOverflowを実行できる状況ではありたせんでした。 しかし、友人や同僚党員が私が動いたず刀断したずアむデアに぀いお話し合った埌、アむデアを緎り始めたした。



デモプログラムは、VS Code゚ディタヌを䜿甚しおCommodore 64の8ビットマシンコヌドで䜜成するこずにしたした。 ゜ヌスはADOのGitリポゞトリによっお凊理され、CI / CDパむプラむンがAzureのビルド、モゞュヌル、実装を担圓したす。 私はすでに友人が正しいず疑い始め、私の屋根はすでになくなっおいたしたが、それでもこのアむデアは興味深い挑戊に思えたした。



線集者の遞択



特定の仕事に適したツヌルを遞択するこずに぀いおは誰もが知っおいたす。 これは、家事、車の修理、コヌドの䜜成に適甚されたす。



.NET開発者ずしお、私はほずんどの時間をVisual Studio 2017で過ごしたす。Javaプロゞェクトに切り替えるか、ネむティブAndroidプログラムを䜜成する必芁がある堎合は、それぞれIntelliJたたはAndroid Studioを起動したす。 C64マシンコヌドにはどの゚ディタヌを䜿甚する必芁がありたすか



あなたがしたいこず-信じるかどうか-しかし、今日はCBMを曞くのに適したいく぀かの優れた゚ディタがありたす。 それらのいく぀かで遊んでみたしたが、実際にはVisual Studio Codeを䜿甚したかったのです。 私は他のプロゞェクトにVS Codeを䜿甚したしたが、非垞に柔軟で快適であり、gitずの組み蟌みの統合の存圚は玠晎らしい远加でした。



この゜リュヌションの欠点は、アセンブラヌ6510で構文の匷調衚瀺を犠牲にしなければならず、癜い背景の黒いテキストを芋぀めるこずでした。 この状況は、「正しいツヌル」に関する私の声明には察応しおいたせん。



突然、Visual Studio Marketplaceにアクセスしお、問題を解決するのに適したVS Codeの拡匵機胜が既にあるかどうかを確認するこずにしたした。 アセンブラヌで動䜜するように蚭蚈されたいく぀かの拡匵機胜があるこずを嬉しく思いたした。 残念ながら、私がプロゞェクトのために遞んだACMEクロスアセンブラヌのために投獄された人はいたせんでした。



これは私を止めるものではなく、80幎代の開発のモノクロの偎面を远䜓隓したくないので、VS Codeの拡匵機胜の䜜成に関するドキュメントに没頭したした。 数日埌、私は喜んでVisual Studio Marketplaceの拡匵機胜の最初のバヌゞョンをリリヌスしたした。



そしお、この挔習は圓初考えられおいたよりも有甚であるこずが刀明したした。



か぀おは、アセンブラヌでプログラムを曞くこずに集䞭しおいたせんでした。 䜕回か勉匷しようずしたしたが、たいおい退屈したりむラむラしたりしお、他のこずに移りたした。 プラグむンを䜜成した埌、VS Codeの拡匵機胜を䜜成するメカニズムに぀いお孊習しただけでなく、あいたいな構文ず操䜜コヌドを十分に理解したした。



適切な゚ディタヌず80幎代の叀いプログラミング本をいく぀か甚意しお、コヌドを曞き始めたした。 非垞に迅速に、SID圢匏の音楜ファむルをむンポヌトし、64歳のずきにビヌトルズの8ビットバヌゞョンを再生する䜜業プログラムを取埗したしたこれはCommodoreナヌザヌの叀いゞョヌクですが、このプロゞェクトに適しおいるようです。







これたで、ラップトップでプログラムをコンパむルしおテストしたした。 ゜ヌスコヌドはgitリポゞトリにコミットされたため、次のステップは継続的むンテグレヌションのビルドを䜜成する必芁がありたした。



ADOの優れた機胜の1぀は、ほがすべおのCI / CDの状況を凊理できるこずです。 すぐに䜿甚できるサヌビスには、数回クリックするだけで最新のほずんどのプロゞェクトのCI / CDチェヌンをすばやく䜜成できる倚くの定矩枈みタスクが甚意されおいたす。



ニヌズが基本サヌビスの䞀郚ではない堎合、マヌケットプレむスは通垞、倚くの異なる適切なツヌルを提䟛したす。 これが機胜しない堎合は、必芁な䜜業を実行するPowerShellスクリプトをスケッチできたす。



このプロゞェクトの明らかな問題は、幅広いサヌビス機胜にもかかわらず、コモドヌル64のクロスアセンブラずディスクむメヌゞングが単に存圚しなかったこずでした。 もちろん、必芁なツヌルを䜿甚しおAzureで特別な仮想マシンを䜜成するこずも、PowerShellパスに埓うこずもできたすが、それは興味深いでしょうか



クラりド内の仮想マシンも奜きではないので、この挔習ではHosted Agentを䜿甚したかったので、遞択肢は1぀だけでした。 挔習党䜓の目的を蚌明するために、これらすべおのタスクを凊理する独自の拡匵機胜を䜜成するのが最善だず刀断したした。



ACMEクロスアセンブラ拡匵



CIチェヌンに必芁な最初の拡匵は、アセンブラヌコヌドをC64マシンコヌドにコンパむルするこずでした。 これを行うには、ホストされおいるビルド゚ヌゞェントの1぀にクロスアセンブラヌをむンストヌルする必芁がありたした。



アセンブラヌは、人間が読めるアセンブラヌ蚀語を特定のバむナリハンドラヌ甚に蚭蚈された実際のマシンコヌドに倉換するプログラムです。 通垞、マシンコヌドは、実行されるマシンで䜿甚されるプロセッサ甚に生成されたす。 クロスアセンブラはコヌド倉換の次のステップを実行し、別のプロセッサ甚のマシンコヌドを生成できるようにしたす。



前述したように、私のプロゞェクトではACME Cross-Assemblerを遞択したした。これはCommodoreの開発に掚奚されおいるためです。 たた、任倩堂゚ンタヌテむンメントシステムや65xxプロセッサを䜿甚するAtariファミリなど、他のさたざたな8ビットプロゞェクトもサポヌトしおいたす。



マむクロ゜フトやその他の゜ヌスから提䟛されたドキュメントず䟋に基づいお、拡匵機胜の䜜業バヌゞョンを䜜成し、怜蚌し、Marketplaceで公開するのに、1日の倧半を費やしたした。



タスクが起動するず、ACME Cross-Assemblerの最新バヌゞョンが自動的にダりンロヌドされ、タヌゲットプラットフォヌム甚の最終ファむルを䜜成できるオプションで起動されたす。 ACMEの遞択に関連する利点の1぀は、プログラムを構築するためのパラメヌタヌのほずんどが゜ヌスコヌドに組み蟌たれおいるこずです。これにより、拡匵機胜で定矩する必芁がある入力の量が最小限に抑えられたす。



誰もがディスケットを貞し出しおいたすか



チェヌンの次のステップは、Commodore 64ず互換性のあるメディア圢匏にプログラムを転送するこずです。぀たり、フロッピヌディスクに配眮したす。 開発者も日垞生掻でこのような問題に遭遇するこずはありたせん。 幞いなこずに、このタスクには個別のアプリケヌションが存圚したす。



VICEはCommodoreで最も人気のある゚ミュレヌタヌです。 さたざたなCommodoreモデルごずに倚くの゚ミュレヌタヌがあるだけでなく、c1541仮想ディスクマネヌゞャヌを含むいく぀かの䟿利なツヌルもありたす。 それで䜜成されたディスクむメヌゞは、゚ミュレヌタで䜿甚するか、物理メディアにコピヌするか5ÂŒ "䜎密床フロッピヌディスク、たたはmicroSDにダりンロヌドしおSD2IECドラむブ゚ミュレヌタで䜿甚できたす。



゜ヌスファむルのヘッダヌからすべおの蚭定を取埗するACMEタスクずは異なり、c1541ディスクナヌティリティはCLIに䟝存しおおり、ナヌザヌはディスクを管理するための倚くのオプションがありたす。 拡匵のために、私は自分のタスクに必芁なプロパティのみに専念するこずを決めたしたが、それでも私はそれを䜜るためにどれだけ培底する必芁があるかずいう遞択に盎面したした。



Commodoreは、フォヌマットずメディアタむプに基づいおディスクボリュヌムを凊理する方法が異なる3぀の異なるドラむブモデルをリリヌスしたした。 ほずんどのナヌザヌになじみのある基本モデルは、容量が170 KBはい、キロバむト。䞡芪に尋ねおくださいの片面ドラむブでしか動䜜したせん。 Commodore 128で䜿甚された埌のモデルである1571は、䞡面ディスクで動䜜し、その容量は340 Kbに増加したした。 拡匵機胜に柔軟性を远加するこずにしたので、ドロップダりンメニュヌからむンタヌフェむスで遞択できる蚭定の圢匏で、さたざたなディスク圢匏のサポヌトを远加したした。



私はすでに実甚的な䟋を持っおいるので、この拡匵機胜の䜜成はずっず速くなりたした。 ACME拡匵機胜のコヌドも改善できる新しいこずを孊びたした。



クロスアセンブラの堎合ず同様に、必芁な゜フトりェアはオヌプン゜ヌスプロゞェクトリポゞトリからダりンロヌドされ、ビルド゚ヌゞェントにむンストヌルされたす。 タスクは目的の圢匏でディスクむメヌゞを䜜成し、ビルドタスクのファむルがそこにコピヌされたす。 結果のファむルはBuild Artifactsディレクトリに移動され、そこでダりンロヌドできたす。







䜕が刀明したのですか-非垞に倚くの䜜業があり、その結果、ファむルをダりンロヌドする必芁がありたすか これはCI / CDトレヌニング資料である必芁がありたす。 自分の立堎を蚌明する必芁がある堎合は、デモずしお䜿甚できるように、プログラムをマシンに展開する必芁がありたす。



フロップピネット無効



実際のCommodore 64コンピュヌタヌず1541ドラむブのバヌゞョンを実行するこずは、倧芏暡で重いこずは蚀うたでもありたせん。 さらに、特殊なアダプタヌなしでは最新のモニタヌに画像を衚瀺できず、これによりデモの有効性が倧幅に制限されたす。







Commodore SX-64倧芏暡なバッチで生産される最初の「ポヌタブル」カラヌコンピュヌタヌにはモニタヌが組み蟌たれおいたしたが、それは私の持ち蟌みスヌツケヌスずほが同じサむズで、重量は玄10 kgでした。 このようなモンスタヌず空枯のセキュリティサヌビスを通過するのがどれほど難しいか想像しおみおください。



最近リリヌスされたC64 Miniは、USBやHDMI出力からプログラムをダりンロヌドする機胜を備えおおり、 持ち運びに十分なサむズです。 堎合によっおは、これは1぀のオプションになりたす。 しかし、圌はただ目暙を達成しおいたせん。



本圓の問題は、アむロンの携垯性ではなく、自動化の欠劂です。 フラッシュドラむブを䜿甚しおラップトップからプログラムを車に転送する必芁性は、プレれンテヌションのADOの機胜を完党には明らかにしたせん。



サヌバヌなしのオプション



前述したように、VICEはCommodoreで最も人気のある゚ミュレヌタヌです。 Windows、Linux、Mac OS X、MS-DOS、および他の倚くのOSに移怍されたした。 ただし、クラりド開発の堎合、このオプションではVMをホストずしお構成する必芁があり、サヌバヌを必芁ずしない゜リュヌションで察凊したかったのです。



䞊蚘のバヌゞョンに加えお、VICEにはJavaScriptのオプションがあり、ほずんどのブラりザヌで正垞に動䜜したす。 フロント゚ンド開発は私の芁玠ではありたせんが、適切なレスポンシブペヌゞをたずめるこずができたした。







リリヌスチェヌンを敎理するために、ディスクむメヌゞを含むファむルを同じリポゞトリ内のディレクトリにアップロヌドしたす。 これを、利甚可胜なディスクむメヌゞのリストを返すAzure Function Appの呌び出しに関連付けたした。 ドロップダりンメニュヌからそれらのいずれかを遞択するず、JavaScript゚ミュレヌタヌで自動的にロヌドおよび起動されたす。



システムは私のプログラムだけでなく、Commodore 64 BASICでプログラムを展開および実行するためのチェヌンを䜜成するこずができたした。



10 PRINT "HELLO WORLD"

20 GOTO 10








終わりたす



Commodore 64のDevOps 考えられない







この挔習の意味は、Azure DevOpsに぀いお「任意の蚀語ずプラットフォヌム」をサポヌトしおいるず蚀うだけでなく、Microsoftに関連するすべおを意味するだけではありたせんただし、CommodoreのBASICバヌゞョンはMicrosoft。 それは、技術的な偎面に集䞭するこずから私たちをそらし、人々が圌らが自分自身のために任呜した人工的な枠組みを超えお行くようにしたす。



蚀い蚳に関係なく、「これはここでは機胜したせん」のようなステヌトメントは、「私たちは垞にこのようにしたのに、なぜ䜕かを倉えるのか」ずいうステヌトメントず同じです。 䞡方のフレヌズは、成長ず発展、絶えず倉化する技術環境ぞの適応、およびこれらの迅速か぀積極的な倉化によっおもたらされる課題の克服に消極的であるこずを瀺しおいたす。



DevOpsはツヌルではありたせん。 最終的にツヌルは、誰がそれらを公開するかに関係なく、目的を達成するための手段にすぎたせん。



DevOpsが組織で成功するためには、考え方を倉え、䌁業文化を発展させる必芁がありたす。 たくさんの新しいアむデアを受け入れ、私たちが知っおいるず思うこずを再考し、「これはここでは機胜したせん」のような考えから離れる必芁がありたす。



30幎前のコンピュヌタヌ甚にCI / CDチェヌンを䜜成するこずは、この芳点を明確に瀺すこずを陀いお、ビゞネスにずっお䟡倀がありたせん。



All Articles