Bin-Star(Binary Star Watching)

Bin-Star(Binary Star Watching)

PR

Archives

2024.12
2024.11
2024.10
2024.09
2024.08

Comments

確かに@ Re:AliExpressから購入した2TB NGFF M.2 SSDがへん(その1)(01/21) どこかのパクリみたいなデザインですが、D…
teikokutyo@ Re:AliExpressから購入した2TB NGFF M.2 SSDがへん(その2)(01/21) はじめまして。 ちょうどアリエクでこのメ…
Rom_Ok @ Re[1]:AliExpressから購入した2TB NGFF M.2 SSDがへん(その2)(01/21) メイメイさんへ たいへんお返事が遅くな…
メイメイ@ Re:AliExpressから購入した2TB NGFF M.2 SSDがへん(その2)(01/21) お世話になります。 大変興味深く読ませて…
サトピー@ Re:フリップミラーにレデューサーレンズを組み込んだ(12/24) 初めまして。レデューサー組み込んで無事…
TN-Miyagiken@ T7250からT7800への交換 良い情報を有難うございました。当方NF70X…
Rom_Ok @ Re[1]:Pocket GPS PG-S1のRoll Over対策、Displayとバッテリーの交換(11/17) ホシミスト_3013さんへ ご無沙汰しており…
通りすがりです@ Re:天体観測用の赤色ライトは本当はマナー違反?(05/08) eikiさんのコメントは概ね正しいです。 …

Favorite Blog

夜空のブログ シャトル2308さん
ホシミスト3013の天… ホシミスト_3013さん
2022.05.06
XML
カテゴリ: 電子工作

以下にメインとなるバッチファイルの記述を示します。
適当なエディタで、テキスト編集し、ファイル名を"PRNCHK.BAT"として保存下さい。
このファイルを実行することになります。
パイプやリダイレクト外部callなど、MS-DOSのバッチファイルを書くのは結構たいへんでした。
日頃は、C言語をメインに使用するのですが、DEBUG.EXEの外部DOSコマンドを利用することで、バッチファイルだけでも、意外にも色々なことが出来ることを初めて知りました。
DEBUG.EXEにリダイレクトで渡すパラメーターは、一旦RSPの拡張子のテキストファイルに書き出していますが、40hなど、I/Oに指定している値は、単方向プリンタの設定で、この値を変更すれば9821シリーズやDOS/V機にも対応できます。レジスタの値等の情報は、​ 先人が情報を公開 ​されています。
ユーザーの操作は、choice.comとerrorlevel で判定しています。

if errorlevel X goto Yの構文は、はまりました。プログラミング言語では、if(errorlevel >=X){goto Y}に相当し、『以上』の判定だとは、全く思いつかず、ここで苦労しました。

その6では、サブルーチンとしてコールするバッチファイルを示します。

====================

@echo off
BREAK ON
REM ********************
REM STROBE OFF (Initialize)
REM ********************
echo Initialize PRN port
call STB_OF.BAT
echo o 40 00 > DATA.RSP
echo i 40 >> DATA.RSP
echo q >> DATA.RSP
debug < DATA.RSP > nul
echo Write 0x00(0b00000000)
echo Printer Port check script by Rom_Ok
pause
cls
REM ********************
REM Waiting operation
REM ********************
echo Printer Port check script by Rom_Ok
:START
echo ====================
echo Enter bit "0-7" to write PRN, "S" to toggle Strobe ON OFF, 
echo "B" to check PRN BUSY or "Q" to Quit
echo ====================
choice /C:01234567SBQ
if errorlevel 11 goto END
if errorlevel 10 goto CHK_BUSY
if errorlevel 9 goto STROBE
if errorlevel 8 goto WRI_0x80
if errorlevel 7 goto WRI_0x40
if errorlevel 6 goto WRI_0x20
if errorlevel 5 goto WRI_0x10
if errorlevel 4 goto WRI_0x08
if errorlevel 3 goto WRI_0x04
if errorlevel 2 goto WRI_0x02
if errorlevel 1 goto WRI_0x01
goto START
:WRI_0x01
call WT_BS_OF.BAT
echo o 40 01 > DATA.RSP
echo i 40 >> DATA.RSP
echo q >> DATA.RSP
debug < DATA.RSP > nul
echo Write 0x01(0b00000001)
goto NEGO_PRN
:WRI_0x02
call WT_BS_OF.BAT
echo o 40 02 > DATA.RSP
echo i 40 >> DATA.RSP
echo q >> DATA.RSP
debug < DATA.RSP > nul
echo Write 0x02(0b00000010)
goto NEGO_PRN
:WRI_0x04
call WT_BS_OF.BAT
echo o 40 04 > DATA.RSP
echo i 40 >> DATA.RSP
echo q >> DATA.RSP
debug < DATA.RSP > nul
echo Write 0x04(0b00000100)
goto NEGO_PRN
:WRI_0x08
call WT_BS_OF.BAT
echo o 40 08 > DATA.RSP
echo i 40 >> DATA.RSP
echo q >> DATA.RSP
debug < DATA.RSP > nul
echo Write 0x08(0b00001000)
goto NEGO_PRN
:WRI_0x10
call WT_BS_OF.BAT
echo o 40 10 > DATA.RSP
echo i 40 >> DATA.RSP
echo q >> DATA.RSP
debug < DATA.RSP > nul
echo Write 0x10(0b00010000)
goto NEGO_PRN
:WRI_0x20
call WT_BS_OF.BAT
echo o 40 20 > DATA.RSP
echo i 40 >> DATA.RSP
echo q >> DATA.RSP
debug < DATA.RSP > nul
echo Write 0x20(0b00100000)
goto NEGO_PRN
:WRI_0x40
call WT_BS_OF.BAT
echo o 40 40 > DATA.RSP
echo i 40 >> DATA.RSP
echo q >> DATA.RSP
debug < DATA.RSP > nul
echo Write 0x40(0b01000000)
goto NEGO_PRN
:WRI_0x80
call WT_BS_OF.BAT
echo o 40 80 > DATA.RSP
echo i 40 >> DATA.RSP
echo q >> DATA.RSP
debug < DATA.RSP > nul
echo Write 0x80(0b10000000)
goto NEGO_PRN
REM ********************
REM STROBE ON/OFF toggle
REM ********************
:STROBE
echo i 44 > DATA.RSP
echo q >> DATA.RSP
debug < DATA.RSP > RESULT.TXT
find "00" RESULT.TXT > nul
if errorlevel 1 goto STROB_ON
if errorlevel 0 goto STROB_OF
:STROB_ON
call STB_ON.BAT
goto START
:STROB_OF
call STB_OF.BAT
goto START
REM ********************
REM Check PRN BUSY status
REM ********************
:CHK_BUSY
call CHK_BS.BAT
goto START
REM ********************
REM Negotiation with PRN
REM ********************
:NEGO_PRN
call STB_ON.BAT
call WT_BS_ON.BAT
call STB_OF.BAT
call CHK_BS.BAT
goto START
:END





お気に入りの記事を「いいね!」で応援しよう

Last updated  2022.05.06 15:34:53
コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: