スマホのChromeで好きなページをホームページしたいのに、ホームページボタンそのものが表示されない場合がある。
そんな時は強制的にホームページボタンを表示させることができる。
PC8001には直接機械語を扱う場合に使用するモニタ機能がある。モニタモードでは、PC8001のメモリ内容の確認・書き換え、データを疑似テープに格納・読み込み、機械語の実行などができる。
モニタモードに入るにはBASICモードで”MON“と入力すると、プロンプトが”*”に変わって、モニタモードになる。モニタモードからBASICモードに戻るには、“ctrl+B“を入力。。
モニタモードの起動画面 | メモリダンプ画面 |
【モニタモードのコマンド】
【機械語とBASIC】
100 CLEAR 500,&HDFFF :' 機械語プログラムエリアの確保(機械語エリアの1番地前を指定) 110 DEF USR=&HE000 ;' 機械語の開始アドレスを指定 *** ***** 500 A=USR(B) :' 機械語を実行。Bは引数、Aは戻り値(AとBは同じ型) *** ***** |
【機械語用BASICステートメント】
CLEAR | CLEAR [文字領域の大きさ, メモリ上限] | |
変数を0又は空白にクリアし、文字領域の大きさ およびBASICユーザーメモリの上限を設定 |
CLEAR 500, 49151 CLEAR 700,&HDFFF | |
DEF USR | DEF USR[数字] = 番地 | |
機械語のユーザー・サブルーチンの開始 アドレスを定める |
DEF USR5 = &HE200 | |
USRn(x) | USR[数字](引数) |
ユーザーが定義したn番目の機械語ルーチンへ飛ぶ xは引数、n(0〜9)を省略するとn=0と見なされる |
X = USR5(A) USR2(A) |
【USR関数の引数】
Aレジスタの値 | 変数の型 | 記号 |
---|---|---|
2 | 2バイト整数型 | % |
3 | 文字列型 | $ |
4 | 単精度実数型 | ! |
8 | 倍精度実数型 | # |
【機械語で文字列の英小文字を英大文字に変換】
文字列の大文字への変換 |
100 '=== To Upper TEST 150 CLEAR 500,&HDFFF :' E000- free area 160 DEF USR = &HE000 200 AD = &HE000 210 RESTORE 10000 220 FOR I=0 TO 35 :' when use DJNZ : 26 230 READ D 240 POKE AD+I, D :' Set Mashine Code’ 250 NEXT 300 INPUT"strings";A$ 310 PRINT "A$:";A$;"->"; 320 B$ = USR(A$) 330 PRINT A$;" B$:";B$;" USR(A$):";USR(A$) 340 GOTO 300 10000 '=== Mashin Language Program Data 10005 '* AZUPCV EQU 5FC1H 10010 '* UPPER: ; ToUpper$(A$) 10020 DATA &HFE,&H03 :'* CP 03H ; string? 10030 DATA &HC0 :'* RET NZ ; parameter is not string 10040 DATA &HD5 :'* PUSH DE ; DE->IX 10050 DATA &HDD,&HE1 :'* POP IX ; IX: string descriptor 10060 DATA &HDD,&H7E,&H00 :'* LD A,(IX+0) ; get string length 10070 DATA &HDD,&H6E,&H01 :'* LD L,(IX+1) ; get string pointer LOW 10080 DATA &HDD,&H66,&H02 :'* LD H,(IX+2) ; get string pointer HIGH 10090 DATA &HB7 :'* OR A 10100 DATA &HC8 :'* RET Z ; length=0 then return 10110 '* UPP_LP: 10120 DATA &HF5 :'* PUSH AF ; save length (=Areg) 10130 DATA &H7E :'* LD A,(HL) ; get charcter 10140 DATA &HFE,&H61 :'* CP 61H ; cmp small "a" 10150 DATA &H38,&H07 :'* JR C,UPPR2 ; +7 10160 DATA &HFE,&H7B :'* CP 7BH ; cmp small "z" 10170 DATA &H30,&H03 :'* JR NC,UPPR2 ; +3 10180 DATA &HE6,&HDF :'* AND 0DFH ; bit5=0, mask(11011111B) 10190 DATA &H77 :'* LD (HL),A ; converted 10200 '* UPPR2: 10210 DATA &HF1 :'* POP AF ; return length 10220 DATA &H3D :'* DEC A ; string END? 10230 DATA &HC8 :'* RET Z ; finished? 10240 DATA &H23 :'* INC HL 10250 DATA &H18,&HED :'* JR UPP_LP ; -19 |
== DJNZ命令とPC8001のモニターサブルーチン(Areg→大文字変換)を使った場合 |
10110 DATA &H47 :'* LD B,A ; set loop counter 10120 :'* UPP_LP: 10130 DATA &H7E :'* LD A,(HL) ; get character 10140 DATA &HCD,&HC1,&H5F :'* CALL AZUPCV ; Call Monitor Subroutin ($5FC1) 10150 DATA &H77 :'* LD (HL),A ; converted 10160 DATA &H23 :'* INC HL 10170 DATA &H10,&HF8 :'* DJNZ UPP_LP ; -8 10180 DATA &HC9 :'* RET ; finished |