DB-Z, PV-F1, PI-3000(ZAURUS) BASIC Tips Volume 3 Copyright(c)1994 E.Kako & A.Woods 【1】 はじめに 電子手帳にはICカードのスロットがあり、ここにICカードを差込むことでメモリを 増設したり様々なICカードソフトを使うことができます。数あるカードの中でも特に BASICカードは、自分にニーズに合わせて自由にソフトを作ることができるという大 きな可能性を秘めております。 特にパソコン用にプログラムを開発をしているような腕に覚えのあるユーザー層の 方々の中には、電子手帳本体の機能だけに留まらず、更に自作のソフトで電子手帳を 何倍も活用している方々が少数ですが頑張っておられます。 本文ではそんな方々からの情報をまとめて紹介します。これから開発を始めようと 考えている方や既に開発している方の参考になりましたら幸いです。 【2】電子手帳のCPUは? 電子手帳DB-Z,PV-F1およびZAURUSのCPUは、シャープのポケットコンピュータPC-E5 00シリーズ(PC-E500/E550/E650/PC-1480U/1490U/U6000)と同じシャープの8ビットCPU 「ESR-L」が使われております。 また、海外においても海外版電子手帳OZ-7000シリーズ,OZ-8000シリーズ,OZ-9600 にも搭載されております。 【3】"ESR-L"CPUの構成 CPUを構成している要素として以下のものがあります。 (1)レジスタ 8ビットレジスタ: B, A, IH, IL A ... アキュームレータ B ... 補助レジスタ (BAで16ビットレジスタとして使う) IL ... カウンタレジスタ IH ... 補助レジスタ (Iで16ビットレジスタとして使う) 20ビットレジスタ: X, Y, U, S X,Y ... ポインタレジスタ U ... ユーザースタックポインタ S ... システムスタックポインタ これらは、20ビットのアドレス空間をアクセスできます。 プログラムカウンタ: PS, PC PS ... ページセグメントレジスタ (4ビット) PC ... プログラムカウンタ (16ビット) PS:PCで20ビットのアドレス空間をアクセスできます。 フラグ: Z, C Z ... ゼロフラグ C ... キャリーフラグ (2)内部RAM この内部RAMというのがシャープのCPUの特徴です。文字通りCPUの内部にあるRAM で、通常のRAMより高速にデータを扱うことができます。RAMというよりは、むしろ レジスタ的な使い方をします。 &00から&FFまでの内部アドレスで256バイトあります。 この中の一部は、I/O用にされたり、CPU内部のUART(シリアルコントローラ)用に 使われています。 内部RAMのアドレッシングモードには、絶対番地指定以外にベースポインタからの 相対番地指定があります。ベースポインタ自身(BP,PX,PY)も内部RAM中にあります。 (3)その他 命令解読&制御部, ALU(Alithmetic Logic Unit)などがあります。 【4】ESR-Lのインストラクション オーストラリアのポケコンユーザーのAndrew Woods氏が、以前にInternetのネット ワークニュースのcomp.sys.handheldsというニュースグループにポストした記事です。 Andrew氏に許可を得て以下に引用いたします。 ESR-L INSTRUCTION TABLE ----------------------- +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ |\ H| | | | | | | | | | | | | \ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | |L \| | | | | | | | | | | | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |NOP |JP | |PRE |ADD |ADC |CMP |AND |MV |MV |MV | | 0 | |(n) | |(m) |A,n |A,n |A,n |A,n |A,(n)|A, |(n),A| | | | | |(BP+n) | | | | | |(r3) | | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |RETI |JP |PRE |PRE |ADD |ADC |CMP |AND |MV |MV |MV | | 1 | |r3 |(BP+m) |(m) |(m),n|(m),n|(m),n|(m),n|IL, |IL, |(n), | | | | |(BP+PY)|(BP+PY)| | | | |(n) |(r3) |IL | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |JP |JR |PRE |PRE |ADD |ADC |CMP |AND |MV |MV |MV | | 2 |mn |+n |(BP+m) |(m) |A,(n)|A,(n)|(klm)|(klm)|BA, |BA, |(n), | | | | |(n) |(n) | | |n |n |(n) |(r3) |BA | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |JPF |JR |PRE |PRE |ADD |ADC |CMP |AND |MV |MV |MV | | 3 |lmn |-n |(BP+PX)|(m) |(n),A|(n),A|(n),A|(n),A|I,(n)|I, |(n),I| | | | |(PY+n) |(PY+n) | | | | | |(r3) | | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |CALL |JPZ |PRE |PRE |ADD |ADCL |TEST |MV |MV |MV |MV | | 4 |mn |mn |(BP+PX)|(PX+m) |r2, |(m), |A,n |A,B |X,(n)|X, |(n),X| | | | |(BP+PY)|(BP+n) |r12 |(n) | | | |(r3) | | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |CALLF|JPNZ|PRE |PRE |ADD |ADCL |TEST |MV |MV |MV |MV | | 5 |lmn |mn |(BP+PX)|(PX+m) |r3,r |(n),A|(m),n|B,A |Y,(n)|Y, |(n),Y| | | | |(BP+PY)|(BP+PY)| | | | | |(r3) | | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |RET |JPC |PRE |PRE |ADD |MVL |TEST |AND |MV |MV |MV | | 6 | |mn |(BP+PX)|(PX+m) |r1,r1|(m), |(klm)|(m), |U,(n)|U, |(n),U| | | | |(n) |(n) | |(X+n)|n |(n) | |(r3) | | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |RETF |JPNC|PRE |PRE |PMDF |PMDF |TEST |AND |MV |SC |MV | | 7 | |mn |(BP+PX)|(PY+m) |(m),n|(m),A|(n),A|A,(n)|S,(n)| |(n),S| | | | |(PY+n) |(PY+n) | | | | | | | | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |MV |JRZ |PUSHU |POPU |SUB |SBC |XOR |OR |MV |MV |MV | | 8 |A,n |+n |A |A |A,n |A,n |A,n |A,n |A, |A, |(lmn)| | | | | | | | | | |(lmn)|((n))|A | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |MV |JRZ |PUSHU |POPU |SUB |SBC |XOR |OR |MV |MV |MV | | 9 |IL,n |-n |IL |IL |(m),n|(m),n|(m),n|(m),n|IL, |IL, |(lmn)| | | | | | | | | | |(lmn)|((n))|A | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |MV |JRNZ|PUSHU |POPU |SUB |SBC |XOR |OR |MV |MV |MV | | A |BA,mn|+n |BA |BA |A,(n)|A,(n)|(klm)|(klm)|BA, |BA, |(lmn)| | | | | | | | |n |n |(lmn)|((n))|A | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |MV |JRNZ|PUSHU |POPU |SUB |SBC |XOR |OR |MV |MV |MV | | B |l,mn |-n |I |I |(n),A|(n),A|(n),A|(n),A|I, |I, |(lmn)| | | | | | | | | | |(lmn)|((n))|I | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |MV |JRC |PUSHU |POPU |SUB |SBCL |INC |DEC |MV |MV |MV | | C |X,lmn|+n |X |X |r2, |(m), |r |r |X, |X, |(lmn)| | | | | | |r12 |(n) | | |(lmn)|((n))|X | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |MV |JRC |PUSHU |POPU |SUB |SBCL |INC |DEC |MV |MV |MV | | D |Y,lmn|-n |Y |Y |r3,r |(n),A|(n) |(n) |Y, |Y, |(lmn)| | | | | | | | | | |(lmn)|((n))|Y | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |MV |JRNC|PUSHU |POPU |SUB |MVL |XOR |OR |MV |MV |MV | | E |U,lmn|+n |F |F |r1,r1|(X+n)|(m), |(m), |U, |U, |(lmn)| | | | | | | |(m) |(n) |(n) |(lmn)|((n))|U | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ | |MV |JRNC|PUSHU |POPU |PUSHS|POPS |XOR |OR |MV |RC |MV | | F |S,lmn|-n |IMR |IMR |F |F |A,(n)|A,(n)|S, | |(lmn)| | | | | | | | | | |(lmn)| |S | +---+-----+----+-------+-------+-----+-----+-----+-----+-----+-----+-----+ +---+-----+-----+-----+------+-----+ |\ H| | | | | | | \ | B | C | D | E | F | |L \| | | | | | +---+-----+-----+-----+------+-----+ | |MV |EX |MV |MV |MV | | 0 |(r3),|(m), |(k), |(m), |(m) | | |A |(n) |(lmn)|(r3) |((n))| +---+-----+-----+-----+------+-----+ | |MV |EXW |MVW |MVW |MVW | | 1 |(r3),|(m), |(k), |(m), |(m), | | |IL |(n) |(lmn)|(r3) |((n))| +---+-----+-----+-----+------+-----+ | |MV |EXP |MVP |MVP |MVP | | 2 |(r3),|(m), |(k), |(m), |(m), | | |BA |(n) |(lmn)|(r3) |((n))| +---+-----+-----+-----+------+-----+ | |MV |EXL |MVL |MVL |MVL | | 3 |(r3),|(m), |(k), |(m), |(m), | | |I |(n) |(lmn)|(r3++)|((n))| +---+-----+-----+-----+------+-----+ | |MV |DADL |DSBL |ROR |SHR | | 4 |(r3),|(m), |(m), |A |A | | |X |(n) |(n) | | | +---+-----+-----+-----+------+-----+ | |MV |DADL |DSBL |ROR |SHR | | 5 |(r3),|(n),A|(n),A|(n) |(n) | | |Y | | | | | +---+-----+-----+-----+------+-----+ | |MV |CMPW |CMPW |ROL |SHL | | 6 |(r3),|(m), |(n), |A |A | | |U |(n) |r2 | | | +---+-----+-----+-----+------+-----+ | |MV |CMPP |CMPP |ROL |SHL | | 7 |(m), |(m), |(n), |(n) |(n) | | |(n) |(n) |r3 | | | +---+-----+-----+-----+------+-----+ | |MV |MV |MV |MV |MV | | 8 |((n))|(m), |(lmn)|(r3), |((n))| | |A |(n) |(n) |(n) |(n) | +---+-----+-----+-----+------+-----+ | |MV |MVW |MVW |MVW |MVW | | 9 |((n))|(m), |(lmn)|(r3), |((n))| | |IL |(n) |(n) |(n) |(n) | +---+-----+-----+-----+------+-----+ | |MV |MVP |MVP |MVP |MVP | | A |((n))|(m), |(lmn)|(r3), |((n))| | |BA |(n) |(n) |(n) |(n) | +---+-----+-----+-----+------+-----+ | |MV |MVL |MVL |MVL |MVL | | B |((n))|(m), |(lmn)|(r3++)|((n))| | |I |(n) |(n) |(n) |(n) | +---+-----+-----+-----+------+-----+ | |MVP |MV |MVP |DSLL |DSRL | | C |((n))|(m),n|(k), |(n) |(n) | | |X | |lmn | | | +---+-----+-----+-----+------+-----+ | |MV |MVW |EX |EX |MV | | D |((n))|(l), |A,B |r2,r2 |r2,r2| | |Y |mn | |r3,r3 |r3,r3| +---+-----+-----+-----+------+-----+ | |MV |TCL |HALT |SWAP |IR | | E |((n))| | |A | | | |U | | | | | +---+-----+-----+-----+------+-----+ | | |MVLD |OFF |WAIT |RESET| | F | |(m), | | | | | | |(n) | | | | +---+-----+-----+-----+------+-----+ r = registers A,IL,BA,I,X,Y,U,S r1 = A,IL r2 = BA,I r3 = X,Y,U,S ESR-L Command Table ------------------- Reference Guide +------+------+ | 1 | 2 | +------+------+ | 3 | | | | | +-------------+ | 4 | +-------------+ 1. MNEMONIC 2. FLAG CHANGE ... CARRY/ZERO C,Z: Changes according to the state with the execution of a command. 1,0: Becomes 1 or 0. . : Does not change. 3. CODE .......... OP-CODE and POST-BYTE are expressed by binary form, and other operands are expressed by l,m,n,L,M,N (byte). Among OP-CODE and POST-BYTE, -r- and -R- are changed depending on the register as shown below. +---------+-----+ | -r- -R- | CODE| +---------+-----+ | a A | 000 | | il IL | 001 | | ba BA | 010 | | i I | 011 | | x X | 100 | | y Y | 101 | | u U | 110 | | s S | 111 | +---------+-----+ 4. NUMBER OF EXECUTION STATES ... As to addressing for internal memory, the number shown is for the case when (bp+n) is used. When any other addressing mode is used, 1 state should be added. 1 Byte Transmission Command No. 1 +-----------+-----------+-----------+------------+------------+----------+ | Source|n |a |(n) |(lmn) |(x) | | | |il |(bp+/-n) | |(y) | | | | |(px+/-n) | |(u) | | | | |(py+/-n) | |(s) | | | | |(bp+px) | | | |Destination| | |(bp+py) | | | +-----------+-----------+-----------+------------+------------+----------+ |A |mv ./.| |mv ./.|mv ./. |mv ./.| |IL |00001-R-,n | |10000-R-,n |10001-R-,nml|10010-R-, | | | | | | |00000-r- | | |a:2/il:3 | |a:3/il:4 |6 |a:4/il:5 | +-----------+-----------+-----------+------------+------------+----------+ |(N) |mv ./.|mv ./.|mv ./.|mv ./.| | |(bp+N) |11001100,Nn|10100-r-,N |11001000,Nn |11010000, | | |(px+N) | | | |Nnml | | |(bp+px) |3 |3 |6 |7 |6 | +-----------+-----------+-----------+------------+------------+----------+ |[LMN] | |mv ./.|mv ./.| | | | | |10101-r-, |11011000, | | | | | |NML |NMLn | | | | | |5 |6 | | | +-----------+-----------+-----------+------------+------------+----------+ |[X] | |mv ./.|mv ./.| | | |[Y] | |10110-r-, |11101000, | | | |[U] | |00000-R- |00000-R-,n | | | |[S] | |4 |6 | | | +-----------+-----------+-----------+------------+------------+----------+ |[X++] | |mv ./.|mv ./.| | | |[Y++] | |10110-r-, |11101000, | | | |[U++] | |00100-R- |00100-R-,n | | | |[S++] | |4 |6 | | | +-----------+-----------+-----------+------------+------------+----------+ |[--X] | |mv ./.|mv ./.| | | |[--Y] | |10110-r-, |11101000, | | | |[--U] | |00110-R- |00110-R-,n | | | |[--S] | |5 |7 | | | +-----------+-----------+-----------+------------+------------+----------+ |[X+/-N] | |mv ./.|mv ./.| | | |[Y+/-N] | |10110-r-, |11101000, | | | |[U+/-N] | |1s000-R-,N |1s000-R-,nN | | | |[S+/-N] | |6 |8 | | | +-----------+-----------+-----------+------------+------------+----------+ |[(N)] | |mv ./.|mv ./.| | | |[(bp+/-N)] | |10111-r-, |11111000, | | | |[(px+/-N)] | |00000000,N |00000000,Nn | | | |[(bp+px)] | |9 |11 | | | +-----------+--+--------+-----------+------------+------------+----------+ |[(M)+/-N] | |mv ./.|mv ./.| | | |[(bp+/-M)+/-N]| |10111-r-, |11111000, | | | |[(px+/-M)+/-N]| |1s000000,MN|1s000000,MnN| | | |[(bp+px)+/-N) | |11 |13 | | | +--------------+--------+-----------+------------+------------+----------+ 1 Byte Transmission Command No. 2 +-----------+----------+-----------+------------+------------+--------------+ | Source|[x++] |[--x] |[x+/-n] |[(n)] |[(m)+/-n] | | |[y++] |[--y] |[y+/-n] |[(bp+/-n)] |[(bp+/-m)+/-n]| | |[u++] |[--u] |[u+/-n] |[(px+/-n)] |[(px+/-m)+/-n]| | |[s++] |[--s] |[s+/-n] |[(py+/-n)] |[(py+/-m)+/-n]| | | | | |[(bp+px)] |[(bp+px)+/-n] | |Destination| | | |[(bp+py)] |[(bp+py)+/-n] | +-----------+----------+-----------+------------+------------+--------------+ |A |mv ./. |mv ./.|mv ./.|mv ./.|mv ./.| |IL |10010-R-, |10010-R-, |10010-R-, |10011-R-, |10011-R-, | | |00100-r- |00110-r- |1s000-r-,n |00000000,n |1s000000,mn | | |a:4/il:5 |a:5/il:6 |a:6/il:7 |a:9/il:10 |a:11/il:12 | +-----------+----------+-----------+------------+------------+--------------+ |(N) |mv ./. |mv ./.|mv ./.|mv ./.|mv ./.| |(bp+N) |11100000, |11100000, |11100000, |11110000, |11110000, | |(px+N) |00100-r-,N|00110-r-,N |1s000-r-,Nn |00000000,Nn |1s000000,Nmn | |(bp+px) |6 |7 |8 |11 |13 | +-----------+----------+-----------+------------+------------+--------------+ |[LMN] | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----------+----------+-----------+------------+------------+--------------+ |[X] | | | | | | |[Y] | | | | | | |[U] | | | | | | |[S] | | | | | | +-----------+----------+-----------+------------+------------+--------------+ |[X++] | | | | | | |[Y++] | | | | | | |[U++] | | | | | | |[S++] | | | | | | +-----------+----------+-----------+------------+------------+--------------+ |[--X] | | | | | | |[--Y] | | | | | | |[--U] | | | | | | |[--S] | | | | | | +-----------+----------+-----------+------------+------------+--------------+ |[X+/-N] | | | | | | |[Y+/-N] | | | | | | |[U+/-N] | | | | | | |[S+/-N] | | | | | | +-----------+----------+-----------+------------+------------+--------------+ |[(N)] | | | | | | |[(bp+/-N)] | | | | | | |[(px+/-N)] | | | | | | |[(bp+px)] | | | | | | +-----------+--+-------+-----------+------------+------------+--------------+ |[(M)+/-N] | | | | | | |[(bp+/-M)+/-N]| | | | | | |[(px+/-M)+/-N]| | | | | | |[(bp+px)+/-N) | | | | | | +--------------+-------+-----------+------------+------------+--------------+ 2 Byte Transmission Command No. 1 +-----------+-----------+-----------+------------+------------+----------+ | Source|mn |ba |(n) |[lmn] |[x] | | | |i |(bp+/-n) | |[y] | | | | |(px+/-n) | |[u] | | | | |(py+/-n) | |[s] | | | | |(bp+px) | | | |Destination| | |(bp+py) | | | +-----------+-----------+-----------+------------+------------+----------+ |BA |mv ./.|mv ./.|mv ./.|mv ./. |mv ./.| |I |00001-R-,nm|11111101, |10000-R-,n |10001-R-,nml|10010-R-, | | | |0-R-0-r- | | |00000-r- | | |3 |2 |4 |7 |5 | +-----------+-----------+-----------+------------+------------+----------+ |(N) |mvw ./.|mv ./.|mvw ./.|mvw ./.|mvw ./.| |(bp+N) |11001101, |10100-r-,N |11001001,Nn |11010001, |11100001, | |(px+N) |Nnm | | |Nnml |00000-r-,N| |(bp+px) |4 |4 |8 |8 |7 | +-----------+-----------+-----------+------------+------------+----------+ |[LMN] | |mv ./.|mvw ./.| | | | | |10101-r-, |11011001, | | | | | |NML |NMLn | | | | | |6 |7 | | | +-----------+-----------+-----------+------------+------------+----------+ |[X] | |mv ./.|mvw ./.| | | |[Y] | |10110-r-, |11101001, | | | |[U] | |00000-R- |00000-R-,n | | | |[S] | |5 |7 | | | +-----------+-----------+-----------+------------+------------+----------+ |[X++] | |mv ./.|mvw ./.| | | |[Y++] | |10110-r-, |11101001, | | | |[U++] | |00100-R- |00100-R-,n | | | |[S++] | |5 |7 | | | +-----------+-----------+-----------+------------+------------+----------+ |[--X] | |mv ./.|mvw ./.| | | |[--Y] | |10110-r-, |11101001, | | | |[--U] | |00110-R- |00110-R-,n | | | |[--S] | |6 |10 | | | +-----------+-----------+-----------+------------+------------+----------+ |[X+/-N] | |mv ./.|mvw ./.| | | |[Y+/-N] | |10110-r-, |11101001, | | | |[U+/-N] | |1s000-R-,N |1s000-R-,nN | | | |[S+/-N] | |7 |9 | | | +-----------+-----------+-----------+------------+------------+----------+ |[(N)] | |mv ./.|mvw ./.| | | |[(bp+/-N)] | |10111-r-, |11111001, | | | |[(px+/-N)] | |00000000,N |00000000,Nn | | | |[(bp+px)] | |10 |12 | | | +-----------+--+--------+-----------+------------+------------+----------+ |[(M)+/-N] | |mv ./.|mvw ./.| | | |[(bp+/-M)+/-N]| |10111-r-, |11111001, | | | |[(px+/-M)+/-N]| |1s000000,MN|1s000000,MnN| | | |[(bp+px)+/-N) | |12 |14 | | | +--------------+--------+-----------+------------+------------+----------+ 2 Byte Transmission Command No. 2 +-----------+----------+-----------+------------+------------+--------------+ | Source|[x++] |[--x] |[x+/-n] |[(n)] |[(m)+/-n] | | |[y++] |[--y] |[y+/-n] |[(bp+/-n)] |[(bp+/-m)+/-n]| | |[u++] |[--u] |[u+/-n] |[(px+/-n)] |[(px+/-m)+/-n]| | |[s++] |[--s] |[s+/-n] |[(py+/-n)] |[(py+/-m)+/-n]| | | | | |[(bp+px)] |[(bp+px)+/-n] | |Destination| | | |[(bp+py)] |[(bp+py)+/-n] | +-----------+----------+-----------+------------+------------+--------------+ |BA |mv ./. |mv ./.|mv ./.|mv ./.|mv ./.| |I |10010-R-, |10010-R-, |10010-R-, |10011-R-, |10011-R-, | | |00100-r- |00110-r- |1s000-r-,n |00000000,n |1s000000,mn | | |5 |6 |7 |10 |12 | +-----------+----------+-----------+------------+------------+--------------+ |(N) |mvw ./. |mvw ./.|mvw ./.|mvw ./.|mvw ./.| |(bp+N) |11100001, |11100001, |11100001, |11110001, |11110001, | |(px+N) |00100-r-,N|00110-r-,N |1s000-r-,Nn |00000000,Nn |1s000000,Nmn | |(bp+px) |7 |10 |9 |12 |14 | +-----------+----------+-----------+------------+------------+--------------+ |[LMN] | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----------+----------+-----------+------------+------------+--------------+ |[X] | | | | | | |[Y] | | | | | | |[U] | | | | | | |[S] | | | | | | +-----------+----------+-----------+------------+------------+--------------+ |[X++] | | | | | | |[Y++] | | | | | | |[U++] | | | | | | |[S++] | | | | | | +-----------+----------+-----------+------------+------------+--------------+ |[--X] | | | | | | |[--Y] | | | | | | |[--U] | | | | | | |[--S] | | | | | | +-----------+----------+-----------+------------+------------+--------------+ |[X+/-N] | | | | | | |[Y+/-N] | | | | | | |[U+/-N] | | | | | | |[S+/-N] | | | | | | +-----------+----------+-----------+------------+------------+--------------+ |[(N)] | | | | | | |[(bp+/-N)] | | | | | | |[(px+/-N)] | | | | | | |[(bp+px)] | | | | | | +-----------+--+-------+-----------+------------+------------+--------------+ |[(M)+/-N] | | | | | | |[(bp+/-M)+/-N]| | | | | | |[(px+/-M)+/-N]| | | | | | |[(bp+px)+/-N) | | | | | | +--------------+-------+-----------+------------+------------+--------------+ 3 Byte Transmission Command No. 1 +-----------+-----------+-----------+------------+------------+----------+ | Source|lmn |x |(n) |[lmn] |[x] | | | |y |(bp+/-n) | |[y] | | | |u |(px+/-n) | |[u] | | | |s |(py+/-n) | |[s] | | | | |(bp+px) | | | |Destination| | |(bp+py) | | | +-----------+-----------+-----------+------------+------------+----------+ |X |mv ./.|mv ./.|mv ./.|mv ./. |mv ./.| |Y |00001-R-, |11111101, |10000-R-,n |10001-R-,nml|10010=R=, | |U |nml |0-R-0-r- | | |00000-r- | |S |4 |2 |5 |8 |6 | +-----------+-----------+-----------+------------+------------+----------+ |(N) |mvp ./.|mv ./.|mvp ./.|mvp ./.|mvp ./.| |(bp+N) |11011100, |10100-r-,N |11001010,Nn |11010010, |11100010, | |(px+N) |Nnml | | |Nnml |00000-r-,N| |(bp+px) |5 |5 |10 |9 |8 | +-----------+-----------+-----------+------------+------------+----------+ |[LMN] | |mv ./.|mvp ./.| | | | | |10101-r-, |11011010, | | | | | |NML |NMLn | | | |7 |8 | +-----------+-----------+-----------+------------+-- |[X] | |mv ./.|mvp ./.| |[Y] | |10110=r=, |11101010, | s is excluded for =r= |[U] | |00000-R- |00000-R-,n | S is excluded for =R= |[S] | |6 |8 | +-----------+-----------+-----------+------------+-- |[X++] | |mv ./.|mvp ./.| |[Y++] | |10110=r=, |11101010, | |[U++] | |00100-R- |00100-R-,n | |[S++] | |7 |9 | +-----------+-----------+-----------+------------+-- |[--X] | |mv ./.|mvp ./.| |[--Y] | |10110=r=, |11101010, | |[--U] | |00110-R- |00110-R-,n | |[--S] | |8 |10 | +-----------+-----------+-----------+------------+-- |[X+/-N] | |mv ./.|mvp ./.| |[Y+/-N] | |10110=r=, |11101010, | |[U+/-N] | |1s000-R-,N |1s000-R-,nN | |[S+/-N] | |8 |10 | +-----------+-----------+-----------+------------+-- |[(N)] | |mv ./.|mvp ./.| |[(bp+/-N)] | |10111=r=, |11111010, | |[(px+/-N)] | |00000000,N |00000000,Nn | |[(bp+px)] | |11 |13 | +-----------+--+--------+-----------+------------+-- |[(M)+/-N] | |mv ./.|mvp ./.| |[(bp+/-M)+/-N]| |10111=r=, |11111010, | |[(px+/-M)+/-N]| |1s000000,MN|1s000000,MnN| |[(bp+px)+/-N) | |13 |15 | +--------------+--------+-----------+------------+-- 3 Byte Transmission Command No. 2 +-----------+----------+-----------+------------+------------+--------------+ | Source|[x++] |[--x] |[x+/-n] |[(n)] |[(m)+/-n] | | |[y++] |[--y] |[y+/-n] |[(bp+/-n)] |[(bp+/-m)+/-n]| | |[u++] |[--u] |[u+/-n] |[(px+/-n)] |[(px+/-m)+/-n]| | |[s++] |[--s] |[s+/-n] |[(py+/-n)] |[(py+/-m)+/-n]| | | | | |[(bp+px)] |[(bp+px)+/-n] | |Destination| | | |[(bp+py)] |[(bp+py)+/-n] | +-----------+----------+-----------+------------+------------+--------------+ |X |mv ./. |mv ./.|mv ./.|mv ./.|mv ./.| |Y |10010=R=, |10010=R=, |10010=R=, |10011=R=, |10011-R-, | |U |00100-r- |00110-r- |1s000-r-,n |00000000,n |1s000000,mn | |S |7 |8 |8 |11 |13 | +-----------+----------+-----------+------------+------------+--------------+ |(N) |mvp ./. |mvp ./.|mvp ./.|mvp ./.|mvp ./.| |(bp+N) |11100010, |11100010, |11100010, |11110010, |11110010, | |(px+N) |00100-r-,N|00110-r-,N |1s000-r-,Nn |00000000,Nn |1s000000,Nmn | |(bp+px) |9 |10 |10 |13 |15 | +-----------+----------+-----------+------------+------------+--------------+ |[LMN] | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----------+----------+-----------+------------+------------+--------------+ |[X] | | | | | | |[Y] | | | | |[U] | | | | |[S] | | | | +-----------+----------+-----------+------------+-- |[X++] | | | | |[Y++] | | | | S is excluded for =R= |[U++] | | | | |[S++] | | | | +-----------+----------+-----------+------------+-- |[--X] | | | | |[--Y] | | | | |[--U] | | | | |[--S] | | | | +-----------+----------+-----------+------------+-- |[X+/-N] | | | | |[Y+/-N] | | | | |[U+/-N] | | | | |[S+/-N] | | | | +-----------+----------+-----------+------------+-- |[(N)] | | | | |[(bp+/-N)] | | | | |[(px+/-N)] | | | | |[(bp+px)] | | | | +-----------+--+-------+-----------+------------+-- |[(M)+/-N] | | | | |[(bp+/-M)+/-N]| | | | |[(px+/-M)+/-N]| | | | |[(bp+px)+/-N) | | | | +--------------+-------+-----------+------------+-- Block Transmission Command +-----------+---------------+---------+----------+----------+-----------+ | Source|(n) |[lmn] |[x++] |[--x] |[x+/-n] | | |(bp+/-n) | |[y++] |[--y] |[y+/-n] | | |(px+/-n) | |[u++] |[--u] |[u+/-n] | | |(py+/-n) | |[s++] |[--s] |[s+/-n] | | |(bp+px) | | | | | |Destination|(bp+py) | | | | | +-----------+---------------+---------+----------+----------+-----------+ |(N) |mvl/mvld ./.|mvl ./.|mvl ./.|mvl ./.|mvl ./.| |(bp+N) |11001011,Nn/ |11010011,|11100011, |11100011, |01010110, | |(px+N) |11001111,Nn |Nnml |00100-r-,N|00110-r-,N|1s000-r-,Nn| |(bp+px) |5+2xi |6+2xi |5+2xi |7+2xi |5+2xi | +-----------+---------------+---------+----------+----------+-----------+ |[LMN] |mvl ./.| | | | | | |11011011, | | | | | | |NMLn | | |6+2xi | +-----------+---------------+-- |[X++] |mvl ./.| |[Y++] |11101011, | |[U++] |00100-R-,n | +-----------+------------+--------------+ |[S++] |5+2xi | | Source|[(n)] |[(m)+/-n] | +-----------+---------------+-- | |[(bp+/-n)] |[(bp+/-m)+/-n]| |[--X] |mvl ./.| | |[(px+/-n)] |[(px+/-m)+/-n]| |[--Y] |11101011, | | |[(py+/-n)] |[(py+/-m)+/-n]| |[--U] |00110-R-,n | | |[(bp+px)] |[(bp+px)+/-n] | |[--S] |7+2xi | |Destination|[(bp+py)] |[(bp+py)+/-n] | +-----------+---------------+-- +-----------+------------+--------------+ |[X+/-N] |mvl ./.| |(N) |mvl ./.|mvl ./.| |[Y+/-N] |01011110, | |(bp+N) |11110011, |11110011, | |[U+/-N] |1s000-R-,nN | |(px+N) |00000000,Nn |1s000000,Nmn | |[S+/-N] |5+2xi | |(bp+px) |10+2xi |12+2xi | +-----------+---------------+-- +-----------+------------+--------------+ |[(N)] |mvl ./.| | | | | |[(bp+/-N)] |11111011, | | | | | |[(px+/-N)] |00000000,Nn | |[(bp+px)] |10+2xi | +-----------+--+------------+-- |[(M)+/-N] |mvl ./.| |[(bp+/-M)+/-N]|11111011, | |[(px+/-M)+/-N]|1s000000,MnN| |[(bp+px)+/-N) |12+2xi | +--------------+------------+-- Transmission Command Between a and b +-----------+----------+-----------+ | Source|a |b | | | | | |Destination| | | +-----------+----------+-----------+ |A | |mv ./.| | | |01110100 | | | | | | | |1 | +-----------+----------+-----------+ |B |mv ./.| | | |01110101 | | | | | | | |1 | | +-----------+----------+-----------+ Exchange Command +-----------+-----------+-----------+------------+-----------------------+ | Source|a |ba |x |(n) | | |b |i |y |(bp+/-n) | | | | |u |(px+/-n) | | | | |s |(py+/-n) | | | | | |(bp+px) | |Destination| | | |(bp+py) | +-----------+-----------+-----------+------------+-----------------------+ |A |ex ./.| | | | |B |11011101 | | | | | | | | | | | |3 | | | | +-----------+-----------+-----------+------------+-----------------------+ |BA | |ex ./.| | | |I | |11101101, | | | | | |0-R-0-r- | | | | | |4 | | | +-----------+-----------+-----------+------------+-----------------------+ |X | | |ex ./.| | |Y | | |11101101, | | |U | | |0-R-0-r- | | |S | | |4 | | +-----------+-----------+-----------+------------+------------+----------+ |(N) | | | |ex ./.|exw ./.| |(bp+/-N) | | | |11000000,Nn |11000001, | |(px+/-N) | | | | |Nn | |(bp+px) | | | |7 |10 | | | | | +------------+----------+ | | | | |exp ./.|exl ./.| | | | | |11000010,Nn |11000011, | | | | | | |Nn | | | | | |13 |5+3xi | +-----------+-----------+-----------+------------+------------+----------+ Dyadic Operation No.1 (Add/Subtract Command) +-----------+------------+---------------+--+--+--+-------------+ | Source|n |a |il|ba|x |(n) | | | | | |i |y |(bp+/-n) | | | | | | |u |(px+/-n) | | | | | | |s |(py+/-n) | | | | | | | |(bp+px) | |Destination| | | | | |(bp+py) | +-----------+------------+---------------+--+--+--+-------------+ |A |add/sub c/z|add/sub c/z| | |add/sub c/z| | |01000000,n/ |01000110,0-R-0-r-/| | |01000010,n/ | | |01001000,n |01001110,0-R-0-r- | | |01001010,n | | |3 |3 | | |4 | | +------------+ | | +-------------+ | |adc/sbc c/z| | | |adc/sbc c/z| | |01010000,n/ | | | |01010010,n/ | | |01011000,n | | | |01011010,n | | |3 | | | |4 | +-----------+------------+ +--+--+-------------+ |IL | | | | | | +-----------+------------+------------------+--+--+-------------+ |BA | |add/sub c/z| | | |I | |01000100,0-R-0-r-/ | | | | | |01001100,0-R-0-r- | | | | | |5 | | | +-----------+------------+---------------------+--+-------------+ |X | |add/sub c/z| | |Y | |01000101,0-R-0-r-/ | | |U | |01001101,0-R-0-r- | | |S | |7 | | +-----------+------------+---------------+--+--+--+-------------+ |(N) |add/sub c/z|add/sub c/z| | | | | |(bp+/-N) |01000001,Nn/|01000011,N/ | | | | | |(px+/-N) |01001001,Nn |01001011,N | | | | | |(bp+px) |4 |4 | | | | | | +------------+---------------+ | | | | | |adc/sbc c/z|adc/sbc c/z| | | | | | |01010001,Nn/|01010011,N/ | | | | | | |01011001,Nn |01011011,N | | | | | | |4 |4 | | | | | | +------------+---------------+ | | +-------------+ | | |adcl/sbcl c/z| | | |adcl/sbcl c/z| | | |01010101,N/ | | | |01010100,Nn/ | | | |01011101,N | | | |01011100,Nn | | | |4+i | | | |5+2xi | | | +---------------+ | | +-------------+ | | |dadl/dsbl c/z| | | |dadl/dsbl c/z| | | |11000101,N/ | | | |11010100,Nn/ | | | |11010101,N | | | |11010100,Nn | | | |4+i | | | |5+2xi | +-----------+------------+---------------+--+--+--+-------------+ Dyadic Operation No.2 (Logical Operation Command) +-----------+--------------+--------------+--------------+ | Source|n |a |(n) | | | | |(bp+/-n) | | | | |(px+/-n) | | | | |(py+/-n) | | | | |(bp+px) | |Destination| | |(bp+py) | +-----------+--------------+--------------+--------------+ |A |and/or.xor ./z| |and/or/xor ./z| | |01110000,n/ | |01110111,n/ | | |01111000,n/ | |01111111,n/ | | |01101000,n | |01101111,n | | |3 | |4 | +-----------+--------------+--------------+--------------+ |(N) |and/or/xor ./z|and/or/xor ./z|and/or/xor ./z| |(bp+/-N) |01110001,Nn/ |01110011,n/ |01110110,Nn/ | |(px+/-N) |01111001,Nn/ |01111011,n/ |01111110,Nn/ | |(bp+px) |01101001,Nn |01101011,n |01101110,Nn | | |4 |4 |6 | +-----------+--------------+--------------+--------------+ |[LMN] |and/or/xor ./z| | | | |01110010,NMLn/| | | | |01111010,NMLn/| | | | |01101010,NMLn | | | | |7 | | | +-----------+--------------+--------------+--------------+ Dyadic Operation No.3 (Pointer Add Command) +-----------+-----------+----------+ | Source|n |a | | | | | |Destination| | | +-----------+-----------+----------+ |(N) |pmdf ./.|pmdf ./.| |(bp+/-N) |01000111,Nn|01010111,N| |(px+/-N) | | | |(bp+px) |4 |4 | +-----------+-----------+----------+ Dyadic Operation No.4 (Compare Command) +-----------+-----------+-----------+-----------+------------+------------+ | Source|n |a |ba |x |(n) | | | | |i |y |(bp+/-n) | | | | | |u |(px+/-n) | | | | | |s |(py+/-n) | | | | | | |(bp+px) | |Destination| | | | |(bp+py) | +-----------+-----------+-----------+-----------+------------+------------+ |A |cmp c/z| | | | | | |01100001,Nn| | | | | | | | | | | | | |3 | | | | | +-----------+-----------+-----------+-----------+------------+------------+ |(N) |cmp c/z|cmp c/z| | |cmp c/z| |(bp+/-N) |01100001,Nn|01100011,N | | |10110111,Nn | |(px+/-N) | | | | | | |(bp+px) |4 |4 | | |6 | | +-----------+-----------+-----------+------------+------------+ | | | |cmpw c/z| |cmpw c/z| | | | |11010110, | |11000110,Nn | | | | |00000-r-,N | | | | | | |7 | |8 | | +-----------+-----------+-----------+------------+------------+ | | | | |cmpp c/z|cmpp c/z| | | | | |11010111, |11000111,Nn | | | | | |00000-r-,N | | | | | | |9 |10 | +-----------+-----------+-----------+-----------+------------+------------+ |[LMN] |cmp c/z| | | | | | |01100010, | | | | | | |NMLn | | | | | | |6 | | | | | +-----------+-----------+-----------+-----------+------------+------------+ Dyadic Operation No.5 (Test Command) +-----------+-----------+----------+ | Source|n |a | | | | | |Destination| | | +-----------+-----------+----------+ |a |test ./z| | | |01100100,n | | | | | | | |3 | | +-----------+-----------+----------+ |(N) |test ./z|test ./z| |(bp+/-N) |01100101,Nn|01100111,N| |(px+/-N) | | | |(bp+px) |4 |4 | +-----------+-----------+----------+ |[LMN] |test ./z| | | |01100110, | | | |NMLn | | | |6 | | +-----------+-----------+----------+ Monadic Operation +-----------+-----------+-----------+-----------+------------+-------------+ | Operation| digital |increment/ | | | digital | | | exchange | decrement | rotate | shift | shift | |Operand | | | | | | +-----------+-----------+-----------+-----------+------------+-------------+ |a |swap ./z|inc/dec ./z|ror/rol c/z|shr/shl c/z| | | |11101110 |01101100, |11100100/ |11110100/ | | | | |00000-r-/ |11100110 |11110110 | | | |3 |01111100, |2 |2 | | +-----------+-----------+00000-r- +-----------+------------+-------------+ |il | | | | | | |ba i | | | | | | |x y u s | | | | | | | | |3 | | | | +-----------+-----------+-----------+-----------+------------+-------------+ |(n) | |inc/dec ./z|ror/rol c/z|shr/shl c/z|dsrl/dsll ./z| |(bp+/-n) | |01101101,n/|11100101,n/|11110101,n/ |11111100,n/ | |(px+/-n) | |01111101,n/|11100111,n |11110111,n |11101100,n | |(bp+px) | |3 |3 |3 |4+i | +-----------+-----------+-----------+-----------+------------+-------------+ C FLAG Control Command +-----------+-----------+ | Set | Reset | +-----------+-----------+ |sc 1/.|rc 0/.| |10010111 |10011111 | | | | |1 |1 | +-----------+-----------+ PUSH POP Command +-----------+-----------+-----------+-----------+------------+-------------+ | |f |imr |a |ba |x | | | | |il |i |y | +-----------+-----------+-----------+-----------+------------+-------------+ |u-stack |pushu ./.|pushu ./.|pushu ./.|pushu ./.|pushu ./. | | |00101110 |00101111 |00101-r- |00101-r- |00101-r- | | push| | | | | | | |3 |3 |3 |4 |5 | | --+-----------+-----------+-----------+------------+-------------+ | |popu c/z|popu ./.|popu ./.|popu ./.|popu ./. | | pop |00111110 |00111111 |00111-r- |00111-r- |00111-r- | | | | | | | | | |2 |2 |a:2/il:3 |3 |4 | +-----------+-----------+-----------+-----------+------------+-------------+ |s-stack |pushs ./.|pushs |pushs | | |01001111 | | | | push| |mv[--s],imr| mv [--s],r | | |3 | | | | --+-----------+-----------+--------------------------------------+ | |pops |pops |pops | | pop |01011111 | | | | | |mv | mv r,[s++] | | |2 | imr,[s++]| | +-----------+-----------+-----------+--------------------------------------+ JUMP Command +-----------+-----------+-----------+-----------+----------+----------+ | Source|+n |-n |mn |x |(n) | | | | |lmn |y |(bp+/-n) | | | | | |u |(px+/-n) | |Destination| | | |s |(bp+px) | +-----------+-----------+-----------+-----------+----------+----------+ |Near |jr ./.|jr ./.|jp ./.| | | | |00010010,n |00010011,n |00000010,nm| | | | always| | | | | | | |3 |3 |4 | | | | ---+-----------+-----------+-----------+----------+----------+ | |jrz ./.|jrz ./.|jpz ./.| | | | |00011000,n |00011001,n |00010100,nm| | | | zero | | | | | | | |j:3/nj:2 |j:3/nj:2 |j:4/nj:3 | | | | ---+-----------+-----------+-----------+----------+----------+ | |jrnz ./.|jrnz ./.|jpnz ./.| | | | |00011010,n |00011011,n |00010101,nm| | | | non-zero| | | | | | | |j:3/nj:2 |j:3/nj:2 |j:4/nj:3 | | | | ---+-----------+-----------+-----------+----------+----------+ | |jrc ./.|jrc ./.|jpc ./.| | | | |00011100,n |00011101,n |00010110,nm| | | | carry | | | | | | | |j:3/nj:2 |j:3/nj:2 |j:3/nj:2 | | | | ---+-----------+-----------+-----------+----------+----------+ | |jrnc ./.|jrnc ./.|jpnc ./.| | | | |00011110,n |00011111,n |00010111,nm| | | | non-carry| | | | | | | |j:3/nj:2 |j:3/nj:2 |j:4/nj:3 | | | +-----------+-----------+-----------+-----------+----------+----------+ |Far | | |jpf ./.|jp ./.|jp ./.| | | | |00000011, |00010001, |00010000,n| | | | |nml |00000-r- | | | | | |5 |4 |6 | +-----------+-----------+-----------+-----------+----------+----------+ CALL RETURN command +-----------+-----------+----------+ | |call mn |return | | | lmn | | | | | | +-----------+-----------+----------+ |Near |call ./.|retf ./.| | |00000100,nm|00000110 | | | | | | |6 |4 | +-----------+-----------+----------+ |Far |callf ./.|retf ./.| | |00000101, |00000111 | | |nml | | | |8 |5 | +-----------+-----------+----------+ RESET INTERRUPT Command +-----------+-----------+----------+ |reset |interrupt |return | | | | interrupt| +-----------+-----------+----------+ |reset ./.|int ./.|reti ./.| |11111111 |11111110 |00000001 | | | | | |6 |12 |7 | +-----------+-----------+----------+ CPU Control Command +-----------+-----------+-----------+-----------+----------+ |wait |non- |timer |halt |off | | | operation | clear | | | +-----------+-----------+-----------+-----------+----------+ |wait |nop ./.|tcl ./.|halt ./.|off ./.| |11101111 |00000000 |11001110 |11011110 |11011111 | | | | |(When pass-|(When | |1+i |1 |1 |ing:2) |passing:2)| +-----------+-----------+-----------+-----------+----------+ PRE-BYTE (Internal Memory Addressing Mode Setting Byte) +-----------+-----------+-----------+-----------+----------+ |2nd operand|(n) |(bp+/-n) |(py+/-n) |(bp+py) | | | | | | | |1st operand| | * | | | +-----------+-----------+-----------+-----------+----------+ |(N) |- ./.|- ./.|- ./.|- ./.| | |00110010 |00110000 |00110011 |00110001 | | | | | | | | |1 |1 |1 |1 | +-----------+-----------+-----------+-----------+----------+ |(bp+/-N) |- ./.| |- ./.|- ./.| | |00100010 | |00100011 |00100001 | | | | | | | | |1 | |1 |1 | +-----------+-----------+-----------+-----------+----------+ |(px+/-N) |- ./.|- ./.|- ./.|- ./.| | |00110110 |00110100 |00110111 |00110101 | | | | | | | | |1 |1 |1 |1 | +-----------+-----------+-----------+-----------+----------+ |(bp+px) |- ./.|- ./.|- ./.|- ./.| | |00100110 |00100100 |00100111 |00100101 | | | | | | | | |1 |1 |1 |1 | +-----------+-----------+-----------+-----------+----------+ *) When the number of operands for the internal memory is only one, the assembler generates PRE-BYTE shown in the column marked with * above, regardless of whether the operand is the first or second one. -- ----------------------------------------------------------------------------- Andrew Woods | Centre for Marine Science and Technology, | Curtin University of Technology, _--_|\ | GPO Box U1987, Perth W.A. 6001, AUSTRALIA. / \ | Internet: WOODS_AJ@cc.curtin.edu.au -->\_.--._/ | Bitnet: WOODS_AJ%cc.curtin.edu.au@cunyvm.bitnet Perth v | UUCP: uunet!munnari.oz!cc.curtin.edu.au!WOODS_AJ ----------------------------------------------------------------------------- 【5】 参考資料 シャープ ハイパー関数プログラムカードPA-9C3取扱説明書 シャープ CE-151D プログラムBASICカード開発マニュアル シャープ PC-E500取扱説明書 工学社 PC-E550*PC-1490U活用研究 工学社 ポケコンジャーナル 1988年1月号〜1994年5月号 その他 出所不明の資料のコピー各種