HP-41蚈算機のアヌキテクチャずプログラミング

「...倚くの堎合、キヌボヌドから2バむトの合成呜什を実行する必芁がありたす。これはHP-41の日垞のナヌザヌの間に発生する可胜性がありたす...」

/ HP-41高床なプログラミングのヒント/






倚くの人が知っおいるように、1980幎代埌半、B3-34ず互換性のあるプログラム可胜なマむクロ蚈算機がUSSRで非垞に人気がありたした MK-54、MK-61、MK-52。圌らのために、圌らはプログラムやゲヌムを䜜成し、文曞化されおいない機胜を調査し、蚘事を曞きたした。私自身もやがおこれを経隓したした。そしお぀い最近、私は考えたした。しかし、米囜でも、プログラム可胜な蚈算機の呚りで起こったこずすべおに粟神的に近い䜕かがあったはずです。そしおそうです-私は正しかった。 HP-41をご芧ください。



B3-34ず同様に、HP-41はプログラム可胜なRPN蚈算機RPN- 逆ポヌランド衚蚘、「2 + 2 =」ではなく「22 +」の圢匏での蚈算であり、同様のむデオロギヌを備えおいたすが、はるかに機胜的です。それは私たちのB3-34-1979ずほが同時に登堎し、すぐにカルトの幎になりたした。倚くのプログラムが曞かれ、文曞化されおいない機胜に関するものを含む本があり、アドオンモゞュヌルもただリリヌスされおいたす。これらの蚈算機は合蚈150䞇台補造されたした。



同様の運呜に、MK-52がバックアップコンピュヌティングデバむスずしおSoyuzで飛行したように、ShuttleのHP-41も同様に远加できたす。



HP-41には3぀の倉曎C、CV、CXがありたすが、それらはごくわずかに異なるため、完党に互換性があるず芋なすこずができたす。実際、メモリの量のみが異なりたす。他の番号のHP蚈算機は、いく぀かの共通機胜がありたすが、HP-41ず互換性がありたせん。



HP-41の機胜の1぀は、14セグメントのむンゞケヌタヌです。これは、蚈算機では非垞にたれです。これにより、HP-41に文字やさたざたな蚘号を衚瀺できたす。これは、サりンドおよび拡匵モゞュヌルずずもに、B3-34よりも倧きな利点です。



ナヌザヌの芳点から芋たHP-41Cメモリは63レゞスタで、それぞれ7バむトです。この堎合、プログラムに䜿甚する量ずデヌタに䜿甚する量を遞択できたす。拡匵モゞュヌルは、䜿甚可胜なメモリの量を増やしたすたずえば、82106A。これは64個のレゞスタです。このようなモゞュヌルを䜿甚するず、4぀のスロットすべおを占有するず、最倧で玄2kbを取埗できたす。



プロセッサはあなた自身の、特定のものです。これはいく぀かの異なるプロセッサの総称ですが、最も䞀般的にはNUTCPUず呌ばれたす。クロック呚波数0.35MHz。ビットの深さに぀いおは、蚈算機でよくあるこずですが、アヌキテクチャの詳现により、正確な数倀に名前を付けるこずは困難です。



メモリモゞュヌルHP-41C甚に加えお、ROM䞊のプログラムのラむブラリ、磁気カヌドラむタヌ/リヌダヌ、バヌコヌドリヌダヌなど、他の倚くの拡匵モゞュヌルがありたす。



すべおの蚈算機の埓来のコマンドモヌドに加えお、蚈算を盎接実行する堎合は、 HP-41をプログラムする3぀の方法。



最初の䞻芁なものは、プログラム可胜な蚈算機の暙準蚀語です。思想的にはB3-34蚀語に䌌おおり、FOCALず呌ばれおいたすが、同名のプログラミング蚀語ずは関係ありたせん。この単語は「Forty OneCalculatorLanguage」の略です。実際、FOCALコマンドは、マシンコヌド内のサブルヌチンの呌び出しです。これは、仮想マシンの呜什のようなもので、蚈算、10進法、浮動小数点甚にシャヌプ化されおいたす。



2番目の非垞に人気のある方法は、合成プログラミングず呌ば れ、新しいコマンドの䜜成を可胜にする蚈算機のファヌムりェアの脆匱性を悪甚するこずに基づく、文曞化されおいないFOCAL拡匵のセットです。



3番目のたれな方法は、MCODEず呌ばれる蚈算機のマむクロプロセッサのマシンコヌドで盎接プログラミングするこずです。この方法は、以䞋で説明する理由により非垞に耇雑です。



この蚘事では、䞻に最初の方法に぀いお説明し、他の2぀に぀いおは簡単に觊れたす。



キヌボヌドずコマンドモヌド



高床な英数字むンゞケヌタヌにもかかわらず、蚈算機のキヌボヌドが最も䞀般的です。それは、膚倧な数の異なるモヌドず機胜を備えおいるため、プログラムず操䜜を入力するのは非垞に面倒な䜜業になりたすB3-34互換の蚈算機の堎合ずかなり同等です。



各キヌには3぀の機胜がありたす堎合によっおはそれ以䞊。たずえば、「0」ボタンは、数字の0に加えお、スペヌスず数字のPiを入力するためのものです。

すべおの機胜がボタンの組み合わせで利甚できるわけではありたせん。「アルファ」モヌドでは、文字で入力する必芁がある機胜もありたす。文字は、ボタンの䞋郚に「ABCDEF ...」の順序でラベル付けされおいたす。





キヌボヌドは非垞に高品質であるず蚀わざるを埗たせん。 HPハヌドりェアの䞀般的な手法が䜿甚されたす。ボタンの䞋郚に軞があり、抌すずボタンの呚りを回転したす。バックラむトがないにもかかわらず、むンゞケヌタヌも非垞に読みやすくなっおいたす。遅い画像の曎新だけが負担になりたすこれはおそらくプロセッサが遅いこずが原因です。



ボタンの組み合わせで利甚できる挔算子も文字ごずに入力できるのは興味深いこずです。たずえば、ビヌプ音 "BEEP"はSHIFT 4を抌すず埗られたすが、XEQボタンを抌しおからALPHAを抌し、 "BEEP"ずいう単語を綎っお、もう䞀床ALPHAを抌すこずができたす。



実際、XEQ「実行」ずいう蚀葉からを䜿甚するず、組み蟌み関数をすぐに実行したり、拡匵モゞュヌルを含むRAMたたはROMにある既存の関数を呌び出すこずができたす。



蚈算機で実際に䜿甚できるすべおの機胜のリストは、SHIFT CATALOG 3R / S、SST、BSTによるビュヌコントロヌルから取埗できたす。



登録しおそれらを操䜜する



以䞋では、蚈算機のナヌザヌが盎接アクセスできるレゞスタに぀いお説明したす。これらはマむクロプロセッサレゞスタではありたせん



ALPHAレゞスタA-24文字たで栌玍でき、その内容が画面に衚瀺されたす。

0,1,2,3、...-デヌタレゞスタ、1぀の数字たたは最倧6文字たたは最倧7぀のプログラムステップを栌玍できたす

X、Y、Z、T-スタックレゞスタ実際にはデヌタレゞスタでもありたすが、スタックビュヌ。 X-トップ。

L-倉曎前の最埌のXレゞスタの内容が保存されたす

PC-珟圚のプログラムステップ



通垞、ディスプレむにはXたたはALPHAレゞスタの内容が衚瀺されたすが、その他を衚瀺するこずもできたす。



キヌボヌドで数字を入力するだけで、Xレゞスタに分類されたすしたがっお、画面に衚瀺されたす。

キヌボヌドで文字列を入力するずALPHAボタンを抌した埌、文字列はALPHAレゞスタに配眮されたす同様に、画面に衚瀺されたす。



ただし、画面に情報が衚瀺されおいるからずいっお、それがレゞスタヌにあるずは限りたせん。これは、たずえば、゚ラヌメッセヌゞやVIEW結果に適甚されたす。䞀番䞊に衚瀺されおいるレゞスタを閉じたす。このような堎合、レゞスタの内容を倉曎せずにメッセヌゞをクリアするには、「<-」キヌを䜿甚したす。

レゞスタの内容が画面に衚瀺されおいる堎合、同じ「<-」キヌで内容を削陀したす。



ENTERを抌すず、番号のコピヌがスタックにプッシュされたす。぀たり、1 ENTERず入力するず、XレゞスタずYレゞスタの䞡方に1が衚瀺されたす。2ず入力するず、Xレゞスタは2になり、Yレゞスタは1になりたす



。CLXはXをクリアし、CLAはALPHA



X <> Yをクリアしたす。 XずYの内容を亀換したす

+、-、*、/ XずYの内容に察しお操䜜を実行し、結果をXに入れたすが、Yレゞスタにあったものは倱われ、XにあったものはLレゞスタに眮かれたす。 必芁に応じお、LASTXコマンドを䜿甚しおXにコピヌしお戻すこずができたす。



RCL register_number-指定された番号のデヌタレゞスタの内容をXにコピヌしたす぀たり、マップしたす

ARCLregister_number-指定された番号のデヌタレゞスタの内容をALPHAレゞスタに远加したす



ASHFは、ALPHAレゞスタの内容を6文字巊にシフトしたす最初の6文字は倱われたす。



衚瀺されたXに配眮せずに、レゞスタの内容を衚瀺できたす。これを行うには、VIEWコマンドスタックレゞスタを衚瀺およびAVIEWALPHAレゞスタを衚瀺を䜿甚したす。



コマンドシステムには、文字列を䜿甚した他の操䜜はないこずに泚意しおください。そしお、これは偶然ではありたせん。実際には、メモリが非垞に少ないため、メモリ拡匵モゞュヌルを䜿甚しおも、文字列を操䜜しおもあたり意味がありたせん。ただし、文字列操䜜が実装されおいる拡匵モゞュヌルがありたす。



STOregister_number-Xレゞスタの内容を指定されたデヌタレゞスタにコピヌしたす

ASTO register_num-ALPHAレゞスタの内容最初の6文字のみを指定されたデヌタレゞスタにコピヌしたす。RCL



およびSTOが名前付きスタックレゞスタを操䜜するには、「。」を远加したす。STO.Z



SIZEコマンドは、䜿甚できるデヌタレゞスタの数を蚭定したすそれぞれ、䜿甚可胜なプログラムステップの数が増枛したす

SIZEが小さいほど、コヌド甚のスペヌスが倚くなりたす。



すべおのメモリをクリアするには、「<-」ボタンを抌したたた蚈算機をオンにし、オンにしたらすぐに離す必芁がありたす。「MEMORYLOST」ずいうメッセヌゞが衚瀺されたすあたり安定しおいたせん。



プログラムモヌド



プログラミングモヌドぞの切り替えおよびその逆-PRGMキヌを抌したす。プログラムがない堎合は「00REGnn」ず衚瀺されたす。番号nnは、プログラムステップで䜿甚可胜なレゞスタの数を瀺したすサむズに぀いおは䞊蚘を参照。プログラムを入力するず、蚈算機がPACKINGを曞き蟌んで、コヌドを圧瞮しようずするこずがありたす。次のコマンドに十分なメモリがない堎合は、もう䞀床詊しおください。



プログラムに入るず、珟圚のステップが巊偎に衚瀺されたす。 1぀のステップ-1぀のコマンド1぀のキヌたたは1文字ず぀入力しおもかたいたせん。ただし、1぀のステップで異なる量のメモリが消費される可胜性があるこずに泚意しおください。CLAのような単玔なコマンドの堎合はほずんどなく、たずえば長いテキスト文字列の堎合は倚くなりたす。

ステップで移動-SST前方およびBST埌方。珟圚のステップの削陀-「<-」。



プログラムは、R / Sキヌを䜿甚しおコマンドモヌドから開始されたす぀たり、PRGMをもう䞀床抌す必芁がありたす。圌女も立ち止たりたす。



プログラムモヌドでは、コマンドモヌドで䜿甚できるほずんどすべおの機胜を䜿甚できたす。キヌにマヌクされおいるコマンドを入力するには、を抌すだけです。残りのコマンドはXEQを介しお入力されたす。たずえば、TONE 3を入力するには、XEQを抌し、次にALPHAを抌し、次にTONEを文字ごずに入力し、もう䞀床ALPHAを抌し



おから、3を抌したす。 プログラムの消去CLPラベルラベルからENDたで消去



特定の手順に進みたすGTO.002最初にプログラムを終了する必芁がありたすモヌド。

最初に移動SHIFT RTN



R / SたたはSSTキヌを抌し続けるず、コマンドモヌドから珟圚の䜍眮を確認できたす。



ゞャンプできるラベルは、「LBLラベル」を介しお蚭定され、グロヌバルテキスト名、ALPHAモヌドで入力ずロヌカル数倀たたは1文字のテキスト名の2぀のタむプがありたす。数字はより少ないメモリを消費したす。

「GTPラベル」ずいうラベルにゞャンプする



プログラムの最初のステップでは、垞にラベルを付けるず䟿利です。これにより、XEQラベルたたはGTOラベルを介しお、毎回最初に移動するこずなく実行できたす。



GTO INDぞの間接的な移行もありたすHP-41ファンはこれをTuringマシンが完成した蚌拠ずしお匕甚しおいたす;。



プログラムの最埌に、GTO が入力されたすメッセヌゞPACKINGが衚瀺されたす。この時点で、ENDが画面に衚瀺されたす



たずえば、任意の数に2を掛けるプログラムは次のようになりたす。



LBL "PRGNAME"
2
*
END

      
      





サブルヌチンの操䜜最倧6぀のネストが蚱可されたす



XEQ 04
...
LBL 04
......
RTN

      
      





条件付きブランチ



X=Y?
2
1

      
      





この䟋では、XがYに等しい堎合、2がスタックレゞスタXにプッシュされたす。それ以倖の堎合、1

぀たり、条件が満たされない堎合、チェックに続くコマンドはスキップされたす。 ISG



ルヌプ-DSEが



倧きい堎合はむンクリメントしおスキップ

-



䟋 以䞋の堎合はデクリメントしおスキップ



1.00301
STO 01
LBL 01     
BEEP
ISG 01     
GTO 01     

      
      





このスニペットは、マンホヌルカバヌの代わりにむンタビュヌで䜿甚できたす。 「BEEPは䜕回実行され、その理由は䜕ですか」ずいう質問がありたす。正解は3回です。



説明ルヌプパラメヌタヌは、スタックにプッシュされる単䞀の小数で指定されたす。番号の圢匏はiiiii.fffccです。ここで、



iiii-初期、珟圚のカりンタヌ倀むンデックス 、fff-

最終倀 cc-

ステップ



したがっお、1.00301は、1から3たでのカりントを1ステップで意味したす。

明らかに、このような特殊な゜リュヌションを䜿甚するず、節玄できたす。たずえば、コヌドの読みやすさはわずかに䜎䞋したすが、メモリはわずかに䜎䞋したす。



文字列の衚瀺に぀いお少し



AVIEWはALPHAレゞスタを衚瀺し、VIEWはXレゞスタを衚瀺したす。APPEND



コマンドは、指定された文字をALPHAレゞスタの文字列に远加したす。キヌボヌドからSHIFTKずしお入力され、゜ヌスでは> "TEXT"のようになりたす。



䟋



"HELLO WORLD!"	;   ALPHA 
AVIEW ;   
PSE ;  
CLD ;  

      
      





画面がクリアされるず、暙準の「フラむンググヌス」シンボルが戻り、プログラムが実行䞭であるこずを瀺したす。画面にテキストがある堎合、ガチョりは衚瀺されたせん。



画面には12文字のスペヌスがありたすが、1぀のプログラムステップの最倧行長は15です。APPENDを䜿甚するず、24぀たり、ALPHAレゞスタの党長を取埗できたす。画面に長い行が衚瀺されるず、自動的にスクロヌルしたす。



"1234567890"
>"ABCDEFGHIJKLMN"
AVIEW

      
      





文字列の操䜜は3぀のコマンドに制限されおいたす

。ASTOX-ALPHAの最初の6文字を指定されたレゞスタに

配眮したす ARCLX-ALPHAの末尟に指定されたレゞスタの文字列を远加したす

ASHF-ALPHA6文字を巊にシフトしたす 倱われたす



デヌタ入力



PROMPT-衚瀺ALPHAレゞスタの内容ずプログラムの停止それぞれ、䜕かを入力しおR / Sを抌すず、実行が続行されたす

PSE-プログラムの実行を玄1秒間䞀時停止したす。この堎合、数字たたは文字が抌された堎合、䞀時停止がさらに1秒間延長され、合蚈倀がレゞスタヌに入れられおさらに凊理されたす。



音に぀いお



BEEP-同じ4぀のノヌトの暙準シヌケンスを再生したす

TONE番号-10の呚波数の1぀の短いきしみ音0-最䜎... 9-最高。呚波数はかなり奇劙な方法で遞択されたす。どうやら、これはメモリの節玄によるものでした。



1぀の説明
«The biggest problem is the fact that the high or low time of the signal driving the piezo element has to be a multiple of the instruction cycle time. This cycle time is nominally 155.6uS. So, for example TONE 9 has a three-instruction low and high time, giving a frequency of 1071Hz. TONE 8 has a four-instruction low and high time, giving a frequency of 803Hz. TONE 7 has a five-instruction low and high time, giving a frequency of 643Hz. These tones are individually coded. The remainder of the tones use a common routine to save code space. This common routine is 6+n instruction time long (for each phase of the piezo drive). And n is set by the TONE number as follows: TONE 6 has n=2, TONE 5 has n=4, and so on, down to TONE 0 with n=14. So, you could get better control at the low end of the frequency range, but it would take more code space. I guess that what they came up with was a reasonable compromise.»





呚蟺機噚



呚蟺機噚には、メモリ拡匵モゞュヌル、既補プログラム付きROM、磁気テヌプリヌダヌ/ラむタヌHP 82161A、磁気カヌドHP82104A、バヌコヌドリヌダヌ、赀倖線ポヌト、プリンタヌ、プロッタヌ、クロック、 HP-ILむンタヌフェむス経由が含たれたす。蚈算機をさたざたな機噚に接続できたすなど。



HP-41を備えた磁気カヌドリヌダヌ/ラむタヌを入手したした。カヌドは、玙ベヌスの磁気テヌプのストリップですモスクワのメトロには、同様のタむプのトラベルカヌドがありたした。





各ストリップには2぀のトラックがありたす-぀たり巊偎たたは右偎に挿入できたす。 112バむトが䞡偎に収たりたす。兞型的なプログラムは耇数のカヌドにたたがっおいたす。

角を切り萜ずすこずで、カヌドの偎面を曞き蟌みから保護するこずができたす。

モゞュヌルが蚈算機に挿入されるず、そのROMが䜿甚されたす。したがっお、マップを操䜜するための倚くの新しいコマンドが蚈算機に衚瀺されたす。プログラムやレゞスタヌなどの読み曞きができたす。蚘録されおいるプログラムが衚瀺されないように保護するこずもできたす぀たり、ダりンロヌドしお実行するこずはできたすが、プログラム自䜓を衚瀺するこずはできたせん。



ここでは、磁気カヌドドラむブがどのように機胜するかを確認できたす。



残念ながら、このデバむスは信頌性が䜎く、非垞にバッテリヌを消費したす蚈算機自䜓から電力を䟛絊されたす。鉱山は機胜したせんでした。モヌタヌでハミングしたしたが、テヌプを䌞ばしたせんでした。内郚の加圧ロヌラヌがバラバラになっただけでなく、完党に消えお、粘り気のある汚れが䞀滎残っただけでした。ロヌラヌを自家補のものに倉曎したしたが、明らかにテヌプが䌞びにくいので、正確に盎埄を調敎する必芁がありたす。この問題は非垞に䞀般的であるため、ebayはこれらのビデオのキットを販売しおいたす。



もう1぀の興味深いデバむス。たた、HP-41の所有者の間で非垞に䞀般的なのは、バヌコヌドリヌダヌです。これは、特に、本から盎接蚈算機にプログラムをロヌドするために䜿甚されたす。想像しおみおください-キヌボヌドからプログラムを運転する必芁はもうありたせん..次のようになりたす。







開発



もちろん、蚈算機に盎接FOCALで曞き蟌むこずもできたす。しかし、これは非垞に面倒です。プログラムをテキストファむルで䜜成する方がはるかに䟿利です。しかし、コンパむラず゚ミュレヌタの状況は耇雑です。それらのすべおはかなり奇劙で、あたり安定しおいたせん。 Win10で実行されるものの䞭には、sim41ずv41v.7bがありたす。最初のものはVisualRunfoxからのみ起動されたすが、別のプログラム゚ディタがありたす぀たり、蚈算機のキヌボヌドから入力しお線集する必芁はありたせん。

2぀目はプレリュヌドなしで起動され、蚈算機をはるかによく゚ミュレヌトしたすただし、ハヌドりェアレベルではありたせん。これは、たずえば、サりンドずコヌドの非同期化によっお瀺されたすが、プログラムは完党に手動で入力するか、マシンコヌドではないバむナリ.rawずしおロヌドする必芁がありたす。 、およびバむナリ衚珟FOCAL。問題は、テキスト゜ヌスをrawにコンパむルするには、DOSでのみ実行できるHP41UC.EXEナヌティリティを䜿甚する必芁があるこずです。バッチファむルでvDosを䜿甚し、fc\ tmpを䜿甚しお必芁なディレクトリをディスクにマップしたし



た。゜ヌスをバむナリにコンパむルしたす

hp41uc /t=test.txt /r=test.raw



バむナリを゜ヌスに逆コンパむルしたす

hp41uc /r=text.raw / t = text.txt



プラットフォヌムの感觊を良くするために、DiHALTデモパヌティヌ甚に256バむトの小さなむントロを曞きたした。





RAM拡匵モゞュヌルがむンストヌルされおいおも、蚈算機に収たらないずいう理由だけで、正確に256バむトになりたす。蚈算機から特別な芖芚効果を期埅すべきではないこずは明らかです。長い行の自動スクロヌルなど、さたざたな行の出力が䜿甚されたす。顔のあるアニメヌション-ルヌプで2行を出力したす。DTMFは非垞に条件付きで暡倣されおおり、音楜もオリゞナルずは完党に異なりたす。これは、目的のキヌたたは期間を遞択できないためです。それにもかかわらず、それはただ音楜のように聞こえたす。最埌に、暙準の蚈算機胜が䜿甚されたす。これは、プロセッサがビゞヌでALPHAレゞスタが空のずきに「フラむンググヌス」を衚瀺するためです。



圓初、むントロはサブルヌチンを䜿甚しおも2倍の長さでした。しかし、すべおが゚ミュレヌタヌでデバッグされ、このケヌスを蚈算機に入れ始めたずき、そこに収たらないこずが刀明したした゚ミュレヌタヌがメモリ䞍足を報告するこずを望みたしたが、そうではありたせんでした。短くしお曞き盎さなければなりたせんでした。



ここでは、䞡方の゜ヌスを芋るこずができたす。



合成プログラミング



合成プログラミングは、蚈算プログラム゚ディタにある脆匱性を悪甚するこずに基づく手法です。通垞の暙準呜什は、蚈算機のメモリに数バむトで゚ンコヌドされたす。この脆匱性により、かなり耇雑な準備手順の埌これらのバむトを倉曎しお、さたざたな機胜を備えた新しい呜什を受け取るこずができたす。たずえば、TONEコマンドから、デフォルトで蚱可されおいるよりも倚くのサりンドを取埗できたす。より倚くの文字をROMのセットから衚瀺したり、システムフラグにアクセスしたり、その他の䟿利なものをいく぀か衚瀺したりできたす。繰り返したすが、この手法を実際に䜿甚するこずは困難で面倒です。確かに、これを容易にするサブルヌチンを備えたモゞュヌルがありたす。





䞍正確たたは䞍正確な合成アクションの結果ずしお、バッテリヌの取り倖しず挿入が必芁になるたで、蚈算機がフリヌズするたずえば、キヌに応答しない堎合に状況が発生する可胜性がありたす。これは私に起こりたした。興味深いこずに、文献には、堎合によっおは、蚈算機が再びオンになるために、バッテリヌを2日間匕き抜かなければならないずいう譊告がありたす。



合成呜什のもう1぀の問題は、非ASCII文字で構成されおいる堎合があるこずです。そこでは、入力ず、そのようなプログラムを暙準のHP-41プリンタヌで印刷するこずの䞡方で特定の問題が発生したす。はい、そのようなプログラムを本や雑誌に掲茉するだけでも、党䜓的な問題です通垞、コマンドの暪に、それらがどのように理解されるべきかに぀いおの説明が曞かれおいたす。この問題の解決策の1぀は、特別なテヌブルからバヌコヌドリヌダヌを䜿甚しお各文字を読み取るこずです。







実際、合成プログラミングは、B3-34互換の蚈算機の「゚ゎゎロゞヌ」に粟神的に非垞に近いもの です。実䟋ずしお、あなたはこの手玙を芋るこずができたす 。



人々はこの䞻題に぀いお詩を曞いたHP41CWCWickesの合成プログラミングから取埗



KEYBOARDLOCKY
KEYBOARDLOCKY



'Twas octal, and the synthetic codes

were scanned without a loss.

In and out of PRGM mode,

Byte-jumpers nybbled the CMOS.



«Beware 0 STO c, my son,

The MEMORY LOST, the keyboard lock.

Beware the NNN, and shun

The curious phase 1 clock.»



He took his black box codes in hand,

Long time the backwards goose he sought;

The secret beast from Aitchpee land--

All searches came to nought.



In demented thought he stood, and then:

The goose, with LCD's alight,

A leap for every LBL 10,

Came honking left-to-right!



STO b! STO d!, and RCL P!

His keyboard went clickety-clack.

With the proper code in number mode

The goose came flapping back.



«And hast thou found the phantom fowl?

Come to my arms, my binary boy.

Let Corvallis hear us howl

As we chortle in our joy!»



'Twas octal, and the synthetic codes

Were scanned without a loss.

In and out of PRGM mode,

Byte-jumpers nybbled the CMOS.



--Apologies to Lewis Carroll





MCODE



MCODEず呌ばれるHP-41蚈算機のマむクロプロセッサによっお盎接実行されるマシンコヌド-暙準のFOCALよりも5〜120倍高速です。



蚈算機で実行するには、MCODEのプログラムをROMたたはROM゚ミュレヌタヌに曞き蟌む必芁がありたす。 USBたたはRS232を介しおコヌドをロヌドし、蚈算機で盎接M-CODEに曞き蟌むこずができる特別なモゞュヌルがありたす。䞀般に、それらはMLDLず呌ばれ、HP自䜓から叀く、 珟代的です。

クロスアセンブラヌから、私は叀いものだけを芋぀けたした-DOS甚。



プロセッサアヌキテクチャに぀いお䞀蚀。䞻に数孊に焊点を圓おおいるため、特異性がありたす。メむンレゞスタおよびプロセッサレゞスタはFOCALで䜿甚されるレゞスタではありたせんA、B、C、N、Mは56ビットです。

フラグ、キヌボヌド、スピヌカヌ、ポむンタヌ、16ビット呜什カりンタヌ、および4レベルのリタヌンスタック4぀の16ビットレゞスタヌ甚の短いレゞスタヌもありたす。



シリアルバスでプロセッサに接続され、MCODEで蚘述された蚈算機の制埡プログラムが配眮されおいるROMでは、バむト幅は10ビットです。プロセッサは64KのROMをアドレス指定し、そのうち12Kはオペレヌティングシステムによっお占有されおいたす。RAMに関しおは、アドレススペヌスにマップされおおらず、プロセッサの呚蟺デバむスです。RAMバむトは8ビット幅ですが、論理的にはプロセッサはRAMを56ビットレゞスタずしお扱いたす。



私はMCODEで曞いおいなかったのでROM゚ミュレヌタヌの堎合は250ドルでヒキガ゚ルに瞛られた、MCODEでのプログラミングの個人的な経隓を共有するこずはできたせん。



そこにある指瀺は非垞に䌝統的ですが、倚くのニヌモニックは非垞に具䜓的です。䟋えば



B=A	;    A  B
A<>C	;   A  C
A=A+B 	;  A  B     A
A=B=C=0	;  0   A,B,C
C=0 M	;  0   ( 3-12)  C
?A<C	;   ,  A  C
JC -02	;   ,    
READ n	;     ( 1  15)   C
PUSH addr	;     
GOSUB 815B ;   

      
      







FOCALコマンドTONEnの近䌌MCODEアナログ



178 C=REG 5/M	; recalls status register M
358 ST=C	; rightmost byte (nybbles 1 and 0 ) are loaded in status bits (flags 0 to 7)
379 *
05A NCGO 16DE ;     XTONE  

      
      





むンゞケヌタヌの制埡に関しおは、そのコントロヌラヌは任意のセグメントのオンずオフを蚱可しおいたせん-キャラクタヌゞェネレヌタヌに存圚するシンボルのみを衚瀺できたす。これが、ROM゚ミュレヌタヌやMCODEでのプログラミングに煩わ​​されなかった理由にもなりたした。



文字を衚瀺するには、PRPH SLCT FDプロセッサ呜什でむンゞケヌタを遞択しおから、WRIT / READを介しおむンゞケヌタレゞスタを操䜜する必芁がありたす。



゚ピロヌグ



正盎なずころ、蚈算機のロゞックずコマンドシステムはかなり混乱しおいたす。私の意芋では、これをマスタヌできる人にずっおは、単玔なプロセッサのマシンコヌドを曞き蟌むだけで問題はありたせん。 B3-34互換の蚈算機では、もちろんすべおが簡単ではありたせんが、可胜性もはるかに少ないため、そのような混乱は感じられたせんでした。

基本的に、HP-41のマむクロプロセッサの䞊に疑䌌コヌドを積み䞊げるこずに぀いおの議論は、数孊的な蚈算の必芁性です。それにもかかわらず、これは䞀般的な蚈算機のナヌザヌにずっおは簡単なはずです。



同じこずがキヌボヌドにも圓おはたりたす。ボタンにコマンドを掛けなくおも、通垞の英数字のキヌボヌドを䞀床に䜜成するこずができたす。結局のずころ、文字ごずのコマンド入力の機胜はすでに実装されおいたすただし、本栌的なキヌボヌドを備えた蚈算機がすぐに生産され始めたした。



さたざたなHP41ドキュメントを1぀のアヌカむブに集めたした。興味のある方は、 ダりンロヌドしおくださいしばらく投皿した埌、削陀したす。



All Articles