Vol.787 17.Jan.2020

Chromeでホームページを設定 PasoconMiniPC8001(4)〜モニタと機械語

C Chromeでホームページを設定

by fjk

 スマホのChromeで好きなページをホームページしたいのに、ホームページボタンそのものが表示されない場合がある。
そんな時は強制的にホームページボタンを表示させることができる。

1.ホームページボタンを強制的に表示させる
@ Chromeブラウザのアドレスに「chrome://flags」と入力する。
A 表示されたメニューより“ForceEnableHomePageButton”を「Serchflages」で検索。
B ForceEnableHomePageButtoのプルダウンより「Enable」を選択
C 画面下部の「RELAUNCH NOW」をタップしchromeを終了する。
D chromeを再起動すると”ホームページボタン”が表示される。
2.ホームページの設定
@ chromeの右上にある「メニューアイコン」(縦に3つ並んだ点)をタップ。
A 表示されたメニューより「設定」をタップ。
B 設定より「ホームページ」をタップ。
C ホームページの編集より「該当ページのURL」を入力し「保存」をタップ。
E chromeのホームページボタンに設定したページが設定される。」


P PasoconMiniPC8001(4) 〜モニタと機械語

by fjk

 PC8001には直接機械語を扱う場合に使用するモニタ機能がある。モニタモードでは、PC8001のメモリ内容の確認・書き換え、データを疑似テープに格納・読み込み、機械語の実行などができる。
 モニタモードに入るにはBASICモードで”MON“と入力すると、プロンプトが”*”に変わって、モニタモードになる。モニタモードからBASICモードに戻るには、“ctrl+B“を入力。。
モニタモードの起動画面 メモリダンプ画面

【モニタモードのコマンド】

@ ダンプメモリ(メモリー内容を画面に表示)
  D [表示開始アドレス][,表示終了アドレス]
ダンプの途中で表示を止めたい場合は「ESC」キー、中止したいときは「STOP」キー
A 機械語ユーザプログラムの実行
  G [実行開始アドレス],[ブレークポイントアドレス#1][,ブレークポイントアドレス#2]
ブレークポイントに指定したアドレスでプログラムが停止。コマンドのみを入力した場合、最後に停止したブレークポイントからプログラムを再開する。
B 機械語の(テープから)読み込み
  L
ファイル名・ファイル属性はMEDIAのページで設定。
C メモリーへデータのセット(書き込み)
  S [開始アドレス]
「スペース」キーで次の番地、「DEL」または「ctrl+H」で一つ前の番地、16進以外の数値(キー)を入力したときはモニターに戻る。
D テストメモリ
  TM
メモリの良否をチェックするコマンドで、昔のメモリは信頼性が低かったので準備されたもので、パソコンミニでは必要ない。
E 機械語の(テープへ)保存
  W セーブ開始アドレス、セーブ終了アドレス
ファイル名・ファイル属性はMEDIAのページで設定

【機械語とBASIC】

 1.BASICで使用するメモリエリアを”CLEAR“文の「メモリの上限」で指定する。
  (メモリ上限を指定する場合、「文字列領域の大きさ」は省略できない【要確認】)
 2.上限エリア以降のメモリに機械語プログラムを書き込む。
 3.機械語からBASICに戻るにはRET命令(C9)を実行。(呼び出されたBASICの次の行へ戻る)

(機械語の設定と実行例)
    100  CLEAR 500,&HDFFF  	:' 機械語プログラムエリアの確保(機械語エリアの1番地前を指定)
    110  DEF USR=&HE000		;' 機械語の開始アドレスを指定
      ***  *****
    500  A=USR(B)		:' 機械語を実行。Bは引数、Aは戻り値(AとBは同じ型) 
      ***  *****

機械語で処理したデータをBASICに戻すには引数の値を書き換えることで、USR関数の値として返すことができる(引数の値も変わる)。ただし、文字列型変数はその長さを変えてはいけない。

【機械語用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関数の引数】

BASICから機械語に引数を渡す場合、機械語側ではレジスタAの内容で引数の型を得る。さらに引数の格納アドレスはHLレジスタ(数値型変数)またはDEレジスタ(文字型変数)に格納。

Aレジスタの値と引数の型 ※ 倍精度実数型で間違いがありましたので修正しました(2/22)
 
Aレジスタの値変数の型記号
2バイト整数型
文字列型
単精度実数型
倍精度実数型

引数による値の渡され方 ※ 倍精度実数型で間違いがありましたので修正しました(2/22)

【機械語で文字列の英小文字を英大文字に変換】

@ プログラムはBASICで記述しており、機械語コードをDATA文から読み取り、メモリに格納し、USR関数で実行している。
 なお、DJNZ命令を使う場合、行番号10110以降は後半のプログラムを使用して下さい。
A ‘*以降は機械語のリストで(BASICでは無視される)、;以降はアセンブラのコメント文。この部分はそのままZ80アセンブラで利用可。
B JR、DJNZ命令で相対ジャンプ数(e)の計算は、命令のある番地を$とすると、
   e=(ジャンプ先adr)−$−2
文字列の大文字への変換
●機械語で文字列の英小文字を英大文字に変換する(レジスタの保護は行っていない)
 DJNZ無しmashn1.cmt(zip) 、 DJNZ利用mashn2.cmt(zip)
 (zipファイルを展開し、cmtファイルをminiPC8001のPCMフォルダーにコピー)
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
※上記の赤字エリアの機械語は、PC8001のモニターサブルーチン(ピンク)を使うと1行で済む。モニターサブルーチン不使用時は、CALL文の所(ピンク)に機械語(赤字)を入力後、ジャンプオフセットも再計算し、修正すること!。緑字はコメントなので入力しなくても良い。


Chromeでホームページを設定 PasoconMiniPC8001(4)〜モニタと機械語