BASIC compiler/interpreter for PIC32MX/MZ-80K
Révision | 2ced74f682aa9b55220c38bd161f5f5d30e9304c (tree) |
---|---|
l'heure | 2019-01-05 08:51:44 |
Auteur | Katsumi <kmorimatsu@sour...> |
Commiter | Katsumi |
P32REG class ver 0.2
@@ -1,4 +1,4 @@ | ||
1 | -REM P32REG.BAS ver 0.1 | |
1 | +REM P32REG.BAS ver 0.2 | |
2 | 2 | REM Class P32REG for MachiKania Type Z/M |
3 | 3 | REM Prepare P32MX.S file containing |
4 | 4 | REM registor address information |
@@ -42,6 +42,15 @@ METHOD REGADR | ||
42 | 42 | print "Not initialized for ";RNAME$ |
43 | 43 | end |
44 | 44 | |
45 | +METHOD RDREG | |
46 | + RET=gosub(REGADR,args(1)) | |
47 | + return RET(0) | |
48 | + | |
49 | +METHOD WRREG | |
50 | + RET=gosub(REGADR,args(1)) | |
51 | + RET(0)=args(2) | |
52 | + return | |
53 | + | |
45 | 54 | LABEL FO |
46 | 55 | REM Buffer contains 128 + 512 bytes |
47 | 56 | dim FBUFF(159) |
@@ -1,6 +1,6 @@ | ||
1 | 1 | <クラス名およびバージョン> |
2 | 2 | P32REG |
3 | -ver 0.10 | |
3 | +ver 0.20 | |
4 | 4 | |
5 | 5 | <ファイル名> |
6 | 6 | P32REG.BAS |
@@ -25,13 +25,49 @@ REGADR(x$) | ||
25 | 25 | REGADR(x) |
26 | 26 | 整数値xで示される順番で登録されたレジスターのアドレスを返す。 |
27 | 27 | |
28 | +RDREG(x$) | |
29 | + 文字列x$で示されるレジスターから1ワード(32 bits)読み込み、返す。 | |
30 | + | |
31 | +RDREG(x) | |
32 | + 整数値xで示される順番で登録されたレジスターから1ワード(32 bits)読み込み、 | |
33 | + 返す。 | |
34 | + | |
35 | +WRREG(x$,y) | |
36 | + 文字列x$で示されるレジスターに、整数値yを書き込む。 | |
37 | + | |
38 | +WRREG(x,y) | |
39 | + 整数値xで示される順番で登録されたレジスターに、整数値yを書き込む。 | |
40 | + | |
28 | 41 | <使用例> |
29 | 42 | |
30 | -アドレス0に文字列を書き込み、読み出す例。最初の実行後、電源を切って再実行すると、 | |
31 | -同じ文字列が2回表示される。読み出し時の文字列ポインターの扱いに注意。 | |
43 | +LATA、LATB、PORTBの3つのレジスターの値を取り出し、表示する。 | |
32 | 44 | |
33 | 45 | USECLASS P32REG |
34 | 46 | R=NEW(P32REG,"LATA","LATB","PORTB") |
35 | 47 | print HEX$(R.REGADR("LATA")), |
36 | 48 | print HEX$(R.REGADR("LATB")), |
37 | 49 | print HEX$(R.REGADR("PORTB")), |
50 | + | |
51 | +<ヒント> | |
52 | + | |
53 | +メソッドの第一引数に文字列を利用すると、コードは分かりやすいですが、反面、実 | |
54 | +行速度は落ちます。また、RDREG/WRREGを利用する場合も、コードは分かりやすいです | |
55 | +が、実行速度は落ちます。 | |
56 | + | |
57 | +分かりやすいコードの例 | |
58 | + | |
59 | +USECLASS P32REG | |
60 | +R=NEW(P32REG,"PORTD") | |
61 | +WHILE 1 | |
62 | + PRINT R.RDREG("PORTD"), | |
63 | +WEND | |
64 | + | |
65 | +実行速度を重視したコードの例 | |
66 | + | |
67 | +USEVAR PORTD | |
68 | +USECLASS P32REG | |
69 | +R=NEW(P32REG,"PORTD") | |
70 | +PORTD=R.REGADR("PORTD") | |
71 | +WHILE 1 | |
72 | + PRINT PORTD(0), | |
73 | +WEND |