ドコモのFOMAおよびiモード携帯(3G)は2026年3月31日(火)でサービスが終了する。そのせいか、P-01Gを利用する人にドコモからスマホに変更するように勧める電話がよくかかってくる。まだ終了までに日があるので「そのうちに」と断っていたが、カタログでは判らない最近の情報を一度訊いておこうと思って、ドコモショップで「機種変更の相談」を予約した。
最近の機種は?、料金は?、ガラホは?・・。@国産機種、A電池の持ち、Bおサイフ携帯、CLINEが使える、DOTG(USBホスト機能)、E金額・・とメモって、ドコモショップに出かけた。
電池の持ちが良いガラホも選択候補としていたが、「(LINEなどの)スマホ用のアプリはドコモの取り扱いではないので、ガラホで全て使えるかどうかは判らない」と回答され、ガラホは諦めた。
そこで、電池容量が4000mAhと最も大きいSharpのAquosSence3(SH-02M)を勧められ、条件の@ABCは満足し、DのOTGは不明、Eはキャンペーンで本体価格11,000円、はじめてスマホ割で月1,000円引き(ギガライト、12ケ月)と提示され、キャンペーンのきかない他機種(数万円〜)との差が大きく、相談のつもりだったが、安価なAquosを購入することにした。後日、OTG機能が必要なUSBキーボードによるキー入力、USBメモリの読み書き、DJI_FlyによるMavicMiniの操縦もできました(「OTG機能が使える」とメーカーQ&Aにあるが、アプリによって対応しない場合もあるようです)。
機種変更手続きは、旧ガラケー内のEdyとSuicaに残金があり、「機種変更後に使えなくなる可能性がある」(後日、機種変更後にもEdyが使えることを確認)と言われたので、変更手続きを中断し、念のためスーパーとコンビニに行ってEdyとSuicaを買い物ゲームのように使い切り(実際には数円残)、その後ドコモショップに戻り、再び機種変更手続きを行ったため、朝から夕方までかかった。
機種変更時のついでにDカードを申し込み、スマホの支払いをDカードで行うことにした(月170円の料金割引とDポイントもゲットできる)。画面の保護シールの貼り付けは店員にお願いした(やはりプロの仕事は綺麗)が、Google設定、おサイフ携帯の設定、電話帳や写真の引っ越し、・・等の電話機能以外の設定作業はユーザが行うことになっており、ドコモの新人店員に指示されながら行った。
AquosSence3(167g)はiPhon(177g〜)よりは軽いが、旧ガラケー(122g)に比べて重く、サイズも大きく(147x70x8.9mm)、胸ポケットにはやっと入るサイズである。そこで、落下防止のため首賭けストラップを付けたいので、ストラップが取り付け可能なケースPALLET(LEPLUS、\2,180)を電気屋さんで購入した。さらに画面の保護が薄いフイルムだけなので、手帳型のケース(ラスタバナナ、\1,950、サイドマグネット式)も購入した。手帳型のケースにはカード収納ポケットもあり、さらに横置きスタンドにもなり便利である(小さいポケットには入らないので、ケースを使い分け)。これで、スマホがポケットから抜けて落ちても安心である。
電話帳や電話を使えることを店頭で確認し、帰宅途中のコンビニで電子マネーをチャージし、自宅の戻った。自宅では、スーパーセキュリティZERO(ソースネクスト)、さらに、PlayストアからLINE、MS-Office、Jolteをインストールし、いずれのソフトも問題なく動作することを確認した。
ちなみに、AUの3Gは2022年3月末、ソフトバンクの3Gは2024年1月下旬にサービスを終了する。
最大5%のポイントが還元されるキャッシュレス・ポイント還元事業は2020年6月30日で終了したが、新たに、キャスレス決済で最大25%のポイントが還元される「マイナポイント」が2020年9月1日からスタートする(2021年3月31日まで。8月31日までの利用は対象外)。還元金額の上限は5,000円だが、d払いでは5500円、SuicaやauPayでは6,000円、WAONでは7,000円まで「+サービス」で還元される。
マイナポイントを利用するには「マイナンバーカード」を使って、「マイナポイントを予約」し、利用する「キャシュレス決済サービス」(ポイントもここに振り込まれる)を選択する必要がある。詳細は総務省のマイナンバーカードのページを参照。
マイナポイントの申し込みは2020年7月1日から開始しており、マイナンバーカードを持っていない人は。まず「マイナンバーカード交付申請書」を使って、マイナンバーカードを取得する必要がある。
マイナポイントの申し込み手続きは、スマホ、パソコン、マイナポイント手続きスポット(コンビニなど)で行うことができる。スマホの場合は対応機種をホームページで確認できる。パソコンの場合はマイナンバーカードに対応するICカードリーダーが必要。手続きスポットはHPで検索できる。申し込み手続き時には、マイナンバーカードの暗証番号および決済サービスIDなどが必要となる。
マイナンバーと決済サービスIDの番号はどちらも1回しか利用(登録)できないので、未利用(登録)のマイナンバーと決済サービスIDを使うことで、家族(子供)のものも(代理で)申請できる。
機械語はDumpListEditerでアセンブルできるが、小さな変更でも、一々パソコンに戻るのは面倒である。そこで、PC8001上でハンドアセンブルの手助け用として、1行入力毎に変換するZ80アセンブラをBASICで作成した。
ORG | :格納開始アドレスを指定 | (使用例:org e000h) | EQU または = | :ラベル(変数)の定義 | (使用例:label = d123h) | DB | :1バイトデータ | (使用例:db 4) | DW | :2バイトデータ | (使用例:dw 5678h) | END | :アセンブルの終了[未定義のラベル処理を行う] |
アセンブル処理中 | ラベルを使うと・・ |
10 '*======================* 20 '* Z80 Assembler * 30 '*======================* 100 DEFINT A-Z:WIDTH 80 110 DEF FNL(A)=A AND 255 :'Get Low Byte 120 DEF FNH(A)=(A/256)AND 255 :'Get High Byte 130 DIM VG(26),OU$(26),VQ(67),VT(138) 140 ZA=&H6010:ZB=32:ZN=0:ZU=ZB 150 DIM ZL(ZB),ZM(ZB),OW$(ZB) 188 ZG=0 :'for Debug 0:off,1:on(No_Poke),2:on 189 KEY2,"(IX+":KEY3,"(IY+" 190 GOTO 1010 198'===== Subroutins 199'*Ck_dec: 200 IF LEN(OT$)=0 THEN 2910 202 FOR I=1 TO LEN(OT$) 204 VN=ASC(MID$(OT$,I,1)):IF VN<&H30 OR VN>&H39 THEN 2930 206 NEXT:VE=0:RETURN 209'*Get_Num: 210 GOSUB 200:IF VE>0 THEN IF LEFT$(OT$,1)="0" OR VE=1 THEN 2930 ELSE 2200:'->*Label 212 ZZ!=VAL(OT$):IF ZZ!<-32768! OR ZZ!>65535! THEN 2930 214 IF ZZ!>32767! THEN VD=INT(ZZ!-65536!) ELSE VD=INT(ZZ!) 216 RETURN 219'*Ck_Hex: 220 FOR I=1 TO LEN(OH$) 222 VN=ASC(MID$(OH$,I,1)):IF VN<&H30 OR VN>&H46 OR(VN>&H39 AND VN<&H41)THEN 2930 224 NEXT:VE=0:RETURN 229'*Get_Hex: 230 IF RIGHT$(OT$,1)="H" THEN OH$=LEFT$(OT$,LEN(OT$)-1) ELSE 210 232 GOSUB 220:IF VE>0 THEN 2200:'->*Label 234 IF LEFT$(OT$,1)="0" AND LEN(OH$)>1 THEN OH$=MID$(OH$,2) 236 IF LEN(OH$)>4 THEN 2930 ELSE VD=VAL("&H"+OH$):RETURN 239'*Rmv_Bal: 240 IF LEFT$(OT$,1)="(" AND RIGHT$(OT$,1)=")" THEN OT$=MID$(OT$,2,LEN(OT$)-2) ELSE VE=3 242 RETURN 249'*Get_Dsp: 250 GOSUB 240:VN=INSTR(OT$,"+"):IF VN>0 THEN OT$=MID$(OT$,VN+1):GOTO 230 ELSE 2930 259'*Get_def: 260 VN=INSTR(OT$,"+"):IF VN>0 THEN OT$=MID$(OT$,VN+1):GOTO 230 262 VN=INSTR(OT$,"-"):IF VN>0 THEN OT$=MID$(OT$,VN+1):GOSUB 230:VD=-VD:RETURN 266 GOSUB 230:IF VE>0 THEN RETURN ELSE VD=VD-ZA-2:RETURN 269'*Get_BNm: 270 GOSUB 240:IF VE>0 THEN RETURN ELSE 230 279'*Set_1By: 280 V(VI)=VM:VI=VI+1:V(VI)=FNL(VD):RETURN 289'*Set_M2W: 290 V(VI)=VM 294'*Set_2Wd: 295 VI=VI+1:V(VI)=FNL(VD):VI=VI+1:V(VI)=FNH(VD):RETURN 298'==== Except LD Command 299'[0]*No_Opl: 300 IF LEN(O$(2))>0 THEN 2930 ELSE IF(VH AND &H40)>0 THEN V(VI)=&HED:VI=VI+1 305 V(VI)=VM:RETURN 309'[20]*CB_r 310 OT$=O2$:GOSUB 630:IF VB<0 THEN 2930 312 V(VI)=&HCB:VI=VI+1:V(VI)=VM+VB:RETURN 319'[1]*ddd: 320 OT$=O2$:GOSUB 630:IF VB>=0 THEN V(VI)=VM+VB*8:RETURN ELSE 2930 329'[2]*sss: 330 OT$=O2$:GOTO 345 339'[3]*A_sss: 340 IF O$(2)="A" THEN OT$=O3$ ELSE 2930 344'*: 345 GOSUB 630:IF VB<0 THEN 2930 ELSE V(VI)=VM+VB:RETURN 349'[4]*_n: 350 OT$=O$(2):GOTO 365 359'[5]*A_n 360 IF O$(2)="A" THEN OT$=O$(3)ELSE 2930 364'*: 365 GOSUB 230:IF VE=0 THEN 280 ELSE 2930 369'[6]*rp: 370 OT$=O2$:GOSUB 640:GOTO 395 379'[7]*qq: 380 OT$=O2$:GOSUB 650:GOTO 395 389'[8]*H_rp: 390 IF O$(2)="HL" THEN OT$=O3$:GOSUB 640 ELSE 2930 392 IF (VH AND &H40)>0 THEN V(VI)=&HED:VI=VI+1 394'*: 395 IF VB<0 THEN 2930 ELSE V(VI)=VM+VB*16:RETURN 399'[9]*aa 400 OT$=O$(2):GOSUB 230:IF VE=0 THEN 290 ELSE 2930 409'[A]*e: 410 OT$=O$(2):GOSUB 260:IF VD<-128 OR VD>127 THEN 2940 ELSE V(VI)=VM:VI=VI+1:V(VI)=VD:RETURN 419'[B]*ccc: 420 OT$=O2$:GOSUB 680:IF VB>=0 THEN V(VI)=VM+VB*8:RETURN ELSE 2930 429'[C]*ccc_aa: 430 OT$=O2$:GOSUB 680:IF VB<0 THEN 2930 432 OT$=O$(3):GOSUB 230:IF VE>0 THEN 2930 ELSE V(VI)=VM+VB*8:GOTO 295 439'[D]*cc_e: 440 OT$=O2$:GOSUB 680:IF VB<0 OR VB>3 THEN 2930 ELSE OT$=O$(3):GOSUB 260:IF VE>0 THEN RETURN 442 IF VD<-128 OR VD>127 THEN 2940 ELSE V(VI)=VM+VB*8:VI=VI+1:V(VI)=VD:RETURN 449'[E]*nH: 450 OT$=O2$:GOSUB 670:IF VB>=0 THEN V(VI)=VM+VB*8:RETURN ELSE 2930 459'[F]*(HL): 460 IF O$(2)="(HL)" THEN V(VI)=VM:RETURN ELSE 2930 469'[10]*xy: 470 OT$=O2$:GOSUB 690:IF VB<0 THEN 2930 ELSE V(VI)=&HDD+VB*32:VI=VI+1:V(VI)=VM:RETURN 479'[11]*xy_rXY: 480 OT$=O2$:GOSUB 690:IF VB<0 THEN 2930 ELSE VC=VB 482 IF O2$=O3$ THEN VB=3 ELSE OT$=O3$:GOSUB 645:IF VB<0 THEN 2930 484 V(VI)=&HDD+VC*32:VI=VI+1:V(VI)=VM+VB*16:RETURN 489'[12]*(xy): 490 OT$=O2$:GOSUB 695:IF VB<0 THEN 2930 ELSE V(VI)=&HDD+VB*32:VI=VI+1:V(VI)=VM:RETURN 499'[13]*(xy+d): 500 OT$=O2$:GOSUB 695:IF VB<0 THEN 2930 ELSE OT$=O$(2) 504'*: 505 GOSUB 250:IF VD<0 OR VD>255 THEN 2940 506 V(VI)=&HDD+VB*32:VI=VI+1:IF (VH AND &H40)>0 THEN V(I)=&HCB:VI=VI+1 507 V(VI)=VM:VI=VI+1:V(VI)=VD:RETURN 509'[14]*A,(xy+d): 510 IF O$(2)<>"A" THEN 2930 ELSE OT$=O3$:GOSUB 695:IF VB<0 THEN 2930 ELSE OT$=O$(3):GOTO 505 519'[15]*ddd(C: 520 IF O$(3)<>"(C)" THEN 2930 ELSE OT$=O2$:GOSUB 635:IF VB<0 THEN 2930 524 V(VI)=&HED:VI=VI+1:V(VI)=VM+VB*8:RETURN 529'[16]*A,(n): 530 IF O$(2)<>"A" THEN 2930 ELSE OT$=O$(3):GOSUB 270:IF VE>0 THEN RETURN 532 IF VD<0 OR VD>255 THEN 2940 ELSE 280 539'[17]*(C),sss: 540 IF O$(2)<>"(C)" THEN 2930 542 OT$=O3$:GOSUB 635:IF VB<0 THEN 2930 ELSE V(VI)=&HED:VI=VI+1:V(VI)=VM+VB*8:RETURN 549'[18]*(n),A: 550 IF O$(3)<>"A" THEN 2930 ELSE OT$=O$(2):GOSUB 270:IF VE>0 THEN RETURN 552 IF VD<0 OR VD>255 THEN 2940 ELSE 280 559'[19]*b,rrr: 560 OT$=O3$:GOSUB 630:IF VB<0 THEN 2930 ELSE OT$=O$(2):GOSUB 230:IF VE>0 THEN RETURN 562 IF VD<0 OR VD>7 THEN 2930 ELSE V(VI)=&HCB:VI=VI+1:V(VI)=VM+VD*8+VB:RETURN 569'[1A]*b,(xy): 570 OT$=O3$:GOSUB 695:IF VB<0 THEN 2930 ELSE OT$=O$(2):GOSUB 230:IF VE>0 THEN RETURN 572 IF VD<0 OR VD>7 THEN 2930 ELSE VC=VD:OT$=O$(3):GOSUB 250:IF VD<0 OR VD>255 THEN 2940 575 V(VI)=&HDD+VB*32:VI=VI+1:V(VI)=&HCB:VI=VI+1:V(VI)=VD:VI=VI+1:V(VI)=VM+VC*8:RETURN 579'[1B]*m: 580 OT$=O2$:GOSUB 660:IF VB<0 THEN 2930 ELSE V(VI)=&HED:VI=VI+1:V(VI)=VM+VB*8:RETURN 589'[1C]*DE,HL: 590 IF O$(2)="DE" AND O$(3)="HL" THEN V(VI)=VM:RETURN ELSE 2930 599'[1D]*AF,AF: 600 IF O$(2)="AF" AND O$(3)="AF'" THEN V(VI)=VM:RETURN ELSE 2930 609'[1E]*(SP),HL: 610 IF O$(2)="(SP)" AND O$(3)="HL" THEN V(VI)=VM:RETURN ELSE 2930 619'[1F]*(SP),xy: 620 IF O$(2)<>"(SP)" THEN 2930 622 OT$=O3$:GOSUB 690:IF VB<0 THEN 2930 ELSE V(VI)=&HDD+VB*32:VI=VI+1:V(VI)=VM:RETURN 630 VB=(INSTR("B__C__D__E__H__L__(HLA__",OT$)-1)/3:RETURN :'*Ck_Reg 635 VB=(INSTR("B__C__D__E__H__L__***A__",OT$)-1)/3:RETURN :'*Ck_Rg2 640 VB=(INSTR("BC_DE_HL_SP_",OT$)-1)/3:RETURN :'*Ck_RgP 645 VB=(INSTR("BC_DE_***SP_",OT$)-1)/3:RETURN :'*Ck_RgX 650 VB=(INSTR("BC_DE_HL_AF_",OT$)-1)/3:RETURN :'*Ck_RgAF 655 VB=(INSTR("(BC(DE",OT$)-1)/3:RETURN :'*Ck_IdRg 660 VB=(INSTR("0__1__***2__",OT$)-1)/3:RETURN :'*Ck_IM 670 VB=(INSTR("00H08H10H18H20H28H30H38H",OT$)-1)/3:RETURN :'*Ck_RST 680 VB=(INSTR("NZ_Z__NC_C__PO_PE_P__M__",OT$)-1)/3:RETURN :'*Ck_Cnd 690 VB=(INSTR("IX_IY_",OT$)-1)/3:RETURN :'*Ck_Ixy 695 VB=(INSTR("(IX(IY",OT$)-1)/3:RETURN :'*Ck_Ixy 700' ===== LD Command 709'[21]*dd-ss: 710 OT$=O3$:GOSUB 630:IF VB<0 THEN 2930 ELSE VC=VB 712 OT$=O2$:GOSUB 630:IF VB<0 OR (VB=6 AND VC=6) THEN 2930 ELSE V(VI)=VM+VB*8+VC:RETURN 719'[22]*ddd-n: 720 OT$=O2$:GOSUB 630:IF VB<0 OR LEFT$(O$(3),1)="(" THEN 2930 722 OT$=O$(3):GOSUB 230:IF VE>0 THEN 2930 724 IF VD<0 OR VD>255 THEN 2930 ELSE V(VI)=VM+VB*8:VI=VI+1:V(VI)=VD:RETURN 729'[23]*d-(xy: 730 OT$=O3$:GOSUB 695:IF VB<0 THEN 2930 ELSE VC=VB 732 OT$=O2$:GOSUB 630:IF VB<0 THEN 2930 ELSE IF VB=6 THEN 2935 734 OT$=O$(3):GOSUB 250:IF VE>0 THEN RETURN ELSE IF VD<0 OR VD>255 THEN 2930 736 V(VI)=&HDD+VC*32:VI=VI+1:V(VI)=VM+VB*8:VI=VI+1:V(VI)=VD:RETURN 739'[24]*A-(bd: 740 IF O$(2)<>"A" THEN 2930 ELSE OT$=O3$:GOSUB 655:IF VB<0 THEN 2930 ELSE V(VI)=VM+VB*16:RETURN 749'[25]*A-(aa: 750 IF O$(2)<>"A" THEN 2930 ELSE OT$=O$(3):GOSUB 270:IF VE>0 THEN 2930 ELSE 290 759'[26]*pp-nn: 760 OT$=O2$:GOSUB 640:IF VB<0 OR LEFT$(O$(3),1)="(" THEN 2930 762 OT$=O$(3):GOSUB 230:IF VE>0 THEN 2930 ELSE V(VI)=VM+VB*16:GOTO 295 769'[27]*pp(aa: 770 OT$=O2$:GOSUB 645:IF VB<0 THEN 2930 772 OT$=O$(3):GOSUB 270:IF VE>0 THEN 2930 ELSE V(VI)=&HED:VI=VI+1:V(VI)=VM+VB*16:GOTO 295 779'[28]*HL(aa: 780 IF O$(2)<>"HL" THEN 2930 ELSE OT$=O$(3):GOSUB 270:IF VE>0 THEN 2930 ELSE 290 789'[29]*SP-HL: 790 IF O$(2)="SP" AND O$(3)="HL" THEN V(VI)=VM:RETURN ELSE 2930 799'[2A]*SP-xy: 800 IF O$(2)<>"SP" THEN 2930 802 OT$=O3$:GOSUB 690:IF VB<0 THEN 2930 ELSE V(VI)=&HDD+VB*32:VI=VI+1:V(VI)=VM:RETURN 809'[2B}*(bd-A: 810 IF O$(3)<>"A" THEN 2930 ELSE OT$=O2$:GOSUB 655:IF VB<0 THEN 2930 ELSE V(VI)=VM+VB*16:RETURN 819'[2C]*(aa-A: 820 IF O$(3)<>"A" THEN 2930 ELSE OT$=O$(2):GOSUB 270:IF VE>0 THEN 2930 ELSE 290 829'[2D]*(aa-H: 830 IF O$(3)<>"HL" THEN 2930 ELSE OT$=O$(2):GOSUB 270:IF VE>0 THEN 2930 ELSE 290 839'[2E]*(aa-p: 840 OT$=O3$:GOSUB 645:IF VB<0 THEN 2930 842 OT$=O$(2):GOSUB 270:IF VE>0 THEN 2930 ELSE V(VI)=&HED:VI=VI+1:V(VI)=VM+VB*16:GOTO 295 849'[2F]*(aaxy: 850 OT$=O3$:GOSUB 690:IF VB<0 THEN 2930 ELSE OT$=O$(2):GOSUB 270:GOTO 875 859'[30]*xy-nn: 860 OT$=O2$:GOSUB 690:IF VB<0 THEN 2930 ELSE OT$=O$(3):GOSUB 230:GOTO 875 869'[31]*xy(aa: 870 OT$=O2$:GOSUB 690:IF VB<0 THEN 2930 ELSE OT$=O$(3):GOSUB 270 874'*: 875 IF VE=0 THEN V(VI)=&HDD+VB*32:VI=VI+1:GOTO 290 ELSE 2930 879'[32]*(xy-s: 880 OT$=O2$:GOSUB 695:IF VB<0 THEN 2930 ELSE VC=VB:OT$=O3$:GOSUB 630:IF VB<0 THEN 2930 884 IF VB=6 THEN 2935 ELSE OT$=O$(2):GOSUB 250:IF VE>0 THEN RETURN 886 IF VD<0 OR VD>255 THEN 2940 888 V(VI)=&HDD+VC*32:VI=VI+1:V(VI)=VM+VB:VI=VI+1:V(VI)=VD:RETURN 889'[33]*(xy-n: 890 OT$=O2$:GOSUB 695:IF VB<0 THEN 2930 ELSE OT$=O$(3):VL=1:GOSUB 230:IF VE>0 THEN RETURN 892 IF VD<0 OR VD>255 THEN 2940 ELSE VC=VD 894 OT$=O$(2):VL=0:GOSUB 250:IF VE>0 THEN RETURN 896 IF VD<0 OR VD>255 THEN 2940 898 V(VI)=&HDD+VB*32:VI=VI+1:V(VI)=VM:VI=VI+1:V(VI)=VD:VI=VI+1:V(VI)=VC:RETURN 899'[34]*A-I: 900 IF O$(2)="A" AND O$(3)="I" THEN 940 ELSE 2930 909'[35]*A-R: 910 IF O$(2)="A" AND O$(3)="R" THEN 940 ELSE 2930 919'[36]*I-A: 920 IF O$(2)="I" AND O$(3)="A" THEN 940 ELSE 2930 929'[37]*R-A: 930 IF O$(2)="R" AND O$(3)="A" THEN 940 ELSE 2930 939'*ExED 940 V(VI)=&HED:VI=VI+1:V(VI)=VM:RETURN 949'*To_Lowr: 950 FOR I=1 TO LEN(OL$) 952 VN=ASC(MID$(OL$,I,1)):IF VN>&H60 AND VN<&H7B THEN MID$(OL$,I,1)=CHR$(VN-&H20) 955 NEXT:RETURN 959'*Get_Op: 960 IF VS=LEN(OL$) THEN O$(VJ)=MID$(OL$,VP,VS-VP+1):RETURN 962 O$(VJ)=MID$(OL$,VP,VS-VP):VS=VS+1:VP=VS 964'*Sp_Skip: 965 VN=ASC(MID$(OL$,VS,1)):IF VN=&H20 OR VN=&H09 THEN VS=VS+1:GOTO 965 ELSE VP=VS:RETURN 969'*Spt_Ln: 970 FOR I=0 to 9:O$(I)="":NEXT 972 VS=INSTR(OL$,":"):IF VS>0 THEN O$(0)=LEFT$(OL$,VS-1):VS=VS+1 ELSE VS=1 974 GOSUB 965:VJ=1:VP=VS 979'*Spt_Lp: 980 OH$=MID$(OL$,VS,1):IF OH$=";" OR VS=LEN(OL$) THEN GOSUB 960:GOTO 985 982 IF OH$="," OR OH$=" " THEN GOSUB 960 ELSE VS=VS+1:GOTO 980 983 IF VJ<10 THEN VJ=VJ+1:GOTO 980 984'*Spt_Ext: 985 IF O$(2)="EQU" OR O$(2)="=" THEN FOR I=0 TO 8:O$(I)=O$(I+1):NEXT 986 IF ZG>1 THEN print ".";O$(0);".";O$(1);".";O$(2);".";O$(3);".":'----------- for Debug 988 RETURN 989'*Spt_Wd: 990 O1$=LEFT$(O$(1)+"____",4):O2$=LEFT$(O$(2)+"___",3):O3$=LEFT$(O$(3)+"___",3):RETURN 1000'===== Start Asm 1009'*Init_Asm: 1010 GOSUB 3080:GOSUB 3360:GOSUB 3510 1099'*Main: 1100 PRINT"#";:GOSUB 2600:LINEINPUT "[Asm]? ";OL$:IF LEN(OL$)=0 THEN 1100 |
1105 IF OL$="!" THEN END 1110 IF OL$="L" THEN GOSUB 2300:GOTO 1100 :'*Print Lable List 1120 GOSUB 950:GOSUB 970:GOSUB 990 :'*ToLower,*SepLn,*SetWd 1130 GOSUB 3010:IF VE>0 THEN 1150 :'*GetCmdTabl 1140 IF VR>67 THEN 1300 1145 IF VR=30 THEN GOSUB 3310 ELSE GOSUB 3210 :'Exc.Asm. 1150 IF VE>0 THEN GOSUB 2900:GOTO 1100 :'Print Error 1160 IF LEN(O$(0))>0 THEN GOSUB 2100 :'Label Set 1170 GOSUB 2650:GOSUB 2700:GOTO 1100 :'Print Result & Set Data 1299'*Pseudo: 1300 ON VR-67 GOSUB 1400,1600,1600,1700,1800,1900 1310 IF VE>0 THEN 1150 1320 IF VR>70 AND VR<73 THEN 1170 ELSE 1100 1399'*ORG: 1400 OT$=O$(2):GOSUB 230:IF VE>0 THEN 2930 1410 ZA=VD:GOSUB 2600:PRINT:RETURN 1599'*EQU: 1600 OT$=O$(2):GOSUB 230:IF VE>0 THEN 2930 1610 OT$=O$(0):GOTO 2110 1699'*DB: 1700 OT$=O$(2):GOSUB 230:IF VE>0 THEN 2930 ELSE V(VI)=FNL(VD):V(0)=VI:RETURN 1799'*DW: 1800 OT$=O$(2):GOSUB 230:IF VE>0 THEN 2930 ELSE V(VI)=FNL(VD):VI=VI+1:V(VI)=FNH(VD):V(0)=VI:RETURN 1899'*END: 1900 GOTO 2400 2000 '===== Label 2009'*Sch_Lbl: 2010 FOR ZI=0 TO ZN 2020 IF OW$(ZI)=OT$ THEN ZE=0:RETURN 2030 NEXT:ZE=6:RETURN 2099'*Set_Lbl: 2100 OT$=O$(0):VD=ZA 2105'* 2110 Z=LEN(OT$):IF Z>6 OR Z<3 THEN 2990 :'*Er_Bad 2120 GOSUB 2010:IF ZE=0 THEN 2980 :'*Er_Dup 2130 IF ZN<ZU THEN ZN=ZN+1:OW$(ZN)=OT$:ZL(ZN)=VD:RETURN ELSE 2970:'*Er_Ovr 2199'*Sh&St_ULbl: 2200 Z=LEN(OT$):IF Z>6 OR Z<3 THEN 2990 :'*Er_Bad 2210 GOSUB 2010:IF ZE=0 THEN VD=ZL(ZI):ZM(ZI)=ZM(ZI)+1:VE=0:RETURN 2220 IF ZU=ZN THEN 2970 ELSE OW$(ZU)=OT$:ZL(ZU)=ZA :'*Er_Ovr 2230 IF VZ=&H33 THEN Z=2+VL:ZM(ZU)=1:GOTO 2270 :'VL=0:Op2/VL=1:Op3,1byte 2240 OQ$=right$("__"+hex$(VZ),2):VD=0 2250 IF INSTR("__4__5_16_18_22",OQ$)>0 THEN Z=1:ZM(ZU)=1:GOTO 2270 :'Op1,1byte 2252 IF INSTR("_13_14_1A_23_32",OQ$)>0 THEN Z=2:ZM(ZU)=1:GOTO 2270 :'Op2,1byte 2254 IF INSTR("_27_2E_2F_30_31",OQ$)>0 THEN Z=2:ZM(ZU)=2:GOTO 2270 :'Op2,2byte 2256 IF INSTR("__A__D",OQ$)>0 THEN VD=ZA+2:Z=1:ZM(ZU)=3:GOTO 2270 ;'Op1,Ofset 2258 IF INSTR("__9_12_25_26_28_2C_2D",OQ$)>0 THEN Z=1:ZM(ZU)=2 :'Op1,2Byte 2270 ZL(ZU)=ZL(ZU)+Z:ZU=ZU-1 2280 VE=0:OO$="":RETURN 2299'*Lst_Lbl: 2300 PRINT"---- Defined Labels ----":FOR Z=1 TO ZN:GOSUB 2350:NEXT 2310 PRINT"---- Undefined Labels --":FOR Z=ZB TO ZU+1 STEP -1:GOSUB 2350:NEXT 2320 RETURN 2349'* 2350 PRINT OW$(Z);":";TAB(10);RIGHT$("000"+HEX$(ZL(Z)),4);"H";TAB(16);ZM(Z):RETURN 2399'*Rst_Lbl: 2400 IF ZU=ZB THEN RETURN 2410 FOR ZJ=ZB TO ZU+1 STEP -1:ZF=0 2420 FOR ZI=1 TO ZN 2430 IF OW$(ZJ)=OW$(ZI) THEN ZF=1:ZQ=ZL(ZI):ZR=ZL(ZJ):GOSUB 2500 2440 NEXT ZI: 2450 IF ZF=0 THEN GOSUB 2960:PRINT "[";OW$(ZJ);"]=???" 2460 NEXT ZJ 2470 RETURN 2499'*Set_Lbl_Dat: 2500 IF ZM(ZJ)=0 THEN RETURN 2502 PRINT RIGHT$("000"+HEX$(ZR),4);": "; 2504 ON ZM(ZJ) GOSUB 2510,2520,2530 2506 ZM(ZJ)=0:ZM(ZI)=ZM(ZI)+1:PRINT:RETURN 2509'* 2510 ZD=ZQ:PRINT RIGHT$("0"+HEX$(FNL(ZQ)),2);:IF ZG=0 THEN POKE ZR,FNL(ZQ) 2515 RETURN 2519'* 2520 GOSUB 2510:PRINT RIGHT$("0"+HEX$(FNH(ZQ)),2);:IF ZG=0 THEN POKE ZR+1,FNH(ZQ) 2525 RETURN 2529'* 2530 ZD=ZQ-ZR-1:IF ZD<-128 OR ZD>127 THEN 2940 2532 PRINT FNL(ZD);:IF ZG=0 THEN POKE ZR,FNL(ZD) 2535 RETURN 2599'*Prt_Data: 2600 PRINT RIGHT$("000"+HEX$(ZA),4);" ";:RETURN 2650 GOSUB 2600:FOR I=1 TO V(0):PRINT RIGHT$("0"+HEX$(V(I)),2);:NEXT:PRINT:RETURN 2699'*Set_Data: 2700 FOR I=1 TO V(0) 2710 IF ZG=0 THEN POKE ZA,FNL(V(I)) 2720 ZA=ZA+1 2730 NEXT:RETURN 2899'*Errors: 2900 BEEP:PRINT "*** ";OO$;" !!":RETURN 2910 VE=1:OO$="Syntacs Error":RETURN 2920 VE=2:OO$="No Operation":RETURN 2930 VE=3:OO$="Bad Operand":RETURN 2935 GOSUB 2930:VE=13:RETURN 2940 VE=4:OO$="Out of Range":RETURN 2950 VE=5:OO$="Too Many Operand":RETURN 2960 VE=6:OO$="Undefined Label":RETURN 2970 VE=7:OO$="Too Many Lables":RETURN 2980 VE=8:OO$="Duplicated Name":RETURN 2990 VE=9:OO$="Bad Label Name":RETURN 3000 '===== Tables 3009'*Get_CmTbl: 3010 VE=0:VA=INSTR("ORG_EQU_=___DB__DW__END_",O1$):IF VA>0 THEN VR=67+(VA+3)/4:RETURN 3020 VA=ASC(O1$)-&H40: IF VG(VA)=0 THEN 2920 3030 VB=INSTR(OU$(VA),O1$):IF VB=0 THEN 2920 ELSE VB=(VB-1)/4 3040 VR=VG(VA)+VB 3045 IF ZG>1 THEN print "VR:";VR;O1$;",";O2$;",";O3$:'------- for Debug 3050 RETURN 3079'*Init_CmTbl: 3080 RESTORE 3101:FOR I=1 TO 26:READ VG(I),OU$(I):NEXT:RETURN 3100'* VG(VA) 3101 DATA 1,"ADC_ADD_AND_" 3102 DATA 4,"BIT_" 3103 DATA 5,"CALLCCF_CP__CPD_CPDRCPI_CPIRCPL_" 3104 DATA 13,"DAA_DEC_DI__DJNZ" 3105 DATA 17,"EI__EX__EXX_" 3106 DATA 0,"" :'F 3107 DATA 0,"" :'G 3108 DATA 20,"HALT" 3109 DATA 21,"IM__IN__INC_IND_INDRINI_INIR" 3110 DATA 28,"JP__JR__" 3111 DATA 0,"" :'K 3112 DATA 30,"LD__LDD_LDDRLDI_LDIR" 3113 DATA 0,"" :'M 3114 DATA 35,"NEG_NOP_" 3115 DATA 37,"OR__OTDROUIROUT_OUTDOUTI" 3116 DATA 43,"POP_PUSH" 3117 DATA 0,"" :'Q 3118 DATA 45,"RES_RET_RETIRETNRL__RLA_RLC_RLCARLD_RR__RRA_RRC_RRCARRD_RST_" 3119 DATA 60,"SBC_SCF_SET_SLA_SRA_SRL_SUB_" 3120 DATA 0,"" :'T 3121 DATA 0,"" :'U 3122 DATA 0,"" :'V 3123 DATA 0,"" :'W 3124 DATA 67,"XOR_" 3125 DATA 0,"" :'Y 3126 DATA 0,"" :'Z 3189'-------- for Debug 3190 IF ZG>1 THEN print "VK,VZ,VW:";VK;", ";right$("0"+hex$(VZ),2);"H, ";right$("000"+hex$(VW),4);"H, VE:";VE 3192 RETURN 3200'*Asm_Jmp: ---- Except LD Command 3210 VK=VQ(VR) 3219'*Asm_Lp: 3220 GOSUB 3380:VI=1:VE=0 3230 ON VZ+1 GOSUB 300,320,330,340,350,360,370,380,390,400,410,420,430,440,450,460,470,480,490,500,510,520,530,540,550,560,570,580,590,600,610,620,310 3235 GOSUB 3190 3240 IF VE=0 THEN V(0)=VI:RETURN 3250 IF VE=3 AND VF>0 THEN VK=VK+1:GOTO 3220 ELSE RETURN 3300'*AsLd_Jp: ----- LD Command 3310 OT$=O2$:GOSUB 630:IF VB>=0 THEN VK=57 ELSE IF LEFT$(O2$,1)="(" THEN VK=64 ELSE VK=71 3319'*AsLd_Lp: 3320 GOSUB 3380:VI=1:VE=0 3330 ON VZ-32 GOSUB 710,720,730,740,750,760,770,780,790,800,810,820,830,840,850,860,870,880,890,900,910,920,930 3335 GOSUB 3190 3340 IF VE=0 THEN V(0)=VI:RETURN 3345 IF VE>10 THEN VE=VE-10:RETURN 3350 IF VE=3 AND VF>0 THEN VK=VK+1:GOTO 3320 ELSE RETURN 3359'*Init_AsTbl: 3360 RESTORE 3400:FOR I=1 TO 67:READ VQ(I):NEXT:RETURN 3379'*Asm_Sep: 3380 VW=VT(VK):VM=FNL(VW):VH=FNH(VW):VF=VH AND &H80:VZ=VH AND &H3F:RETURN 3399'* VQ(VR) 3400 DATA 1, 5, 10, 13, 15, 17, 18, 21, 22, 23, 24, 25, 26, 27, 31, 32, 33, 34, 38, 39 3410 DATA 40, 41, 43, 47, 48, 49, 50, 51, 55, 57, 80, 81, 82, 83, 84, 85, 86, 89, 90, 91 3420 DATA 93, 94, 95, 97, 99,101,103,104,105,107,108,110,111,112,114,115,117,118,119,120 3430 DATA 124,125,127,129,131,133,136 3500'*Init_OpTbl: 3510 RESTORE 3601:FOR VK=1 TO 138:READ VT(VK):NEXT:RETURN 3600'* VT(VK) VR VK 3601 DATA &H8388,&H948E,&H85CE,&H484E :' 1, 1 ADC A.sss/A,(xy+d)/A,n/HL,rp 3602 DATA &H8380,&H9486,&H85C6,&H8809,&H1109 :' 2, 5 ADD A,sss/A,(xy+d)/A,n/HL,rp/rx,rx 3603 DATA &H82A0,&H93A6,&H04D6 :' 3, 10 AND sss/(xy+d)/n 3604 DATA &H9940,&H5A46 :' 4, 13 BIT b.sss/b,(xy+d) 3605 DATA &H8CC4,&H09CD :' 5, 15 CALL cc.aa/aa 3606 DATA &H003F :' 6, 17 CCF * 3607 DATA &H82B8,&H93BE,&H04FE :' 7, 18 CP ss/(xy+d)/n 3608 DATA &H40A9 :' 8, 21 CPD * 3609 DATA &H40B9 :' 9, 22 CPDR * 3610 DATA &H40A1 :'10, 23 CPI * 3611 DATA &H40B1 :'11, 24 CPIR * 3612 DATA &H002F :'12, 25 CPL * 3613 DATA &H0027 :'13, 26 DAA * 3614 DATA &H8105,&H860B,&H9335,&H102B :'14, 27 DEC ddd/rp/(xy+d)/xy 3615 DATA &H00F3 :'15, 31 DI * 3616 DATA &H0A10 :'16, 32 DJNZ * 3617 DATA &H00FB :'17, 33 EI * 3618 DATA &H9CEB,&H9D08,&H9EE3,&H1FE3 :'18, 34 EX DE,HL/AF,AF'/(SP)HL/(SP),xy 3619 DATA &H00D9 :'19, 38 EXX * 3620 DATA &H0076 :'20, 39 HALT * 3621 DATA &H5B44 :'21, 40 IM m 3622 DATA &HD540,&H16DB :'22, 41 IN r,(C)/A,(n) 3623 DATA &H8104,&H8603,&H9334,&H1023 :'23, 43 INC ddd/rp/(xy+d)/xy 3624 DATA &H40AA :'24, 47 IND * 3625 DATA &H40BA :'25, 48 INDR * 3626 DATA &H40A2 :'26, 49 INI * 3627 DATA &H40B2 :'27, 50 INIR * 3628 DATA &H8CC2,&H8FE9,&H92E9,&H09C3 :'28, 51 JP cc,aa/(HL)/(xy)/aa 3629 DATA &H8D20,&H0A18 :'29, 55 JR cc,e/e 3630 DATA &HA140,&HF457,&HF55F :'30, 57 LD ddd,sss/A,I/A,R/ 3631 DATA &HA40A,&HA346,&HA53A,&H2206 :' 60 LD A,(bd)/dd,(xy)/A,(aa)/dd,n 3632 DATA &HAB02 :'( 64 LD (bd),A/ 3633 DATA &HB270,&HB336 :' 65 LD (xy),sss/(xy),n/ 3634 DATA &HAC32,&HAD22,&HAE43,&H2F22 :' 67 LD (aa),A/(aa),HL/(aa),pp/(aa),xy 3635 DATA &HA9F9,&HAAF9,&HA601,&HA82A,&HA74B :'* 71 LD SP,HL/SP,xy/rp,nn/HL,(aa)/pp,(aa)/ 3636 DATA &HB12A,&HB021 :' 76 LD xy,(aa)/xy,nn/ 3637 DATA &HF647,&H774F :' 78 LD I,A/R,A 3638 DATA &H40A8 :'31, 80 LDD * 3639 DATA &H40B8 :'32, 81 LDDR * 3640 DATA &H40A0 :'33, 82 LDI * 3641 DATA &H40B0 :'34, 83 LDIR * 3642 DATA &H4044 :'35, 84 NEG * 3643 DATA &H0000 :'36, 85 NOP * 3644 DATA &H82B0,&H93B6,&H04F6 :'37, 86 OR sss/(xy+d)/n 3645 DATA &H40BB :'38, 89 OTDR * 3646 DATA &H40B3 :'39, 90 OUIR * 3647 DATA &HD741,&H18D3 :'40, 91 OUT (C),sss/(n),A 3648 DATA &H40AB :'41, 93 OUTD * 3649 DATA &H40A3 :'42, 94 OUTI * 3650 DATA &H87C1,&H10E1 :'43, 95 POP pp/xy 3651 DATA &H87C5,&H10E5 :'44, 97 PUSH pp/xy 3652 DATA &H9980,&H5A86 :'45, 99 RES b,r/b,(xy+d) 3653 DATA &H8BC0,&H00C9 :'46,101 RET cc/* 3654 DATA &H404D :'47,103 RETI * 3655 DATA &H4045 :'48,104 RETN * 3656 DATA &HA010,&H5316 :'49,105 RL r/(xy+d) 3657 DATA &H0017 :'50,107 RLA * 3658 DATA &HA000,&H5306 :'51,108 RLC r/(xy+d) 3659 DATA &H0007 :'52,110 RLCA * 3660 DATA &H406F :'53,111 RLD * 3661 DATA &HA018,&H531E :'54,112 RR r/(xy+d) 3662 DATA &H001F :'55,114 RRA * 3663 DATA &HA008,&H530E :'56,115 RRC r/(xy+d) 3664 DATA &H000F :'57,117 RRCA * 3665 DATA &H4067 :'58,118 RRD * 3666 DATA &H0EC7 :'59,119 RST nH 3667 DATA &H8398,&H939E,&H85DE,&H4842 :'60,120 SBC A,sss/A,(xy+d)/A,n/HL,rp 3668 DATA &H0037 :'61,124 SCF * 3669 DATA &H99C0,&H5AC6 :'62,125 SET n,r/n.(xy+d) 3670 DATA &HA020,&H5326 :'63,127 SLA r/(xy+d) 3671 DATA &HA028,&H532E :'64,129 SRA r/(xy+d) 3672 DATA &HA038,&H533E :'65,131 SRL r/(xy+d) 3673 DATA &H8290,&H9396,&H04E6 :'66,133 SUB sss/(xy+d)/n 3674 DATA &H82A8,&H939E,&H04EE :'67,136 XOR sss/(xy+d)/n |