10000 '********************************************************** 10010 ' 10020 'VERTEX STANDARD VX-7 10030 'クローンデータ読み出しプログラム Ver1.00 (Sep 22 2002) 10040 ' 10050 'Copyright by Heian Software Engineering 10060 '(C)2002 H.S.E. Allrights reserved. 10070 ' 10080 '********************************************************** 10090 ' 10100 ' 10110 ' 10120 ' 10130 ' 10140 ' 10150 *START 10160 CLEAR 10170 DEFINT A-Z 10180 WIDTH 80,25:CONSOLE 0,25,1,1:COLOR 7,0,0,7,2:CLS 2 10190 ' 10200 RX.BUFF.SIZE=32000:'受信バッファサイズ 10210 DISP.SKIP.N=200:'表示スキップ点 10220 ' 10230 COMPORT.NAME$="COM1:N81NN":'通信ポートファイルディスクリプタ 10240 COMPORT.SPEED=8:'通信速度 8:19200,0:SPEEDコマンドによる 10250 ' 10260 GOTO *MAIN 10270 ' 10280 'HEX.CHR$ 10290 GOTO *MAIN 10300 *READ.HEX.CHR 10310 DIM HEX.CHR$(255) 10320 RESTORE *READ.HEX.CHR 10330 FOR READ.HEX.CHR.W=0 TO 255:READ HEX.CHR$(READ.HEX.CHR.W):NEXT 10340 DATA 00,01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F 10350 DATA 10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F 10360 DATA 20,21,22,23,24,25,26,27,28,29,2A,2B,2C,2D,2E,2F 10370 DATA 30,31,32,33,34,35,36,37,38,39,3A,3B,3C,3D,3E,3F 10380 DATA 40,41,42,43,44,45,46,47,48,49,4A,4B,4C,4D,4E,4F 10390 DATA 50,51,52,53,54,55,56,57,58,59,5A,5B,5C,5D,5E,5F 10400 DATA 60,61,62,63,64,65,66,67,68,69,6A,6B,6C,6D,6E,6F 10410 DATA 70,71,72,73,74,75,76,77,78,79,7A,7B,7C,7D,7E,7F 10420 DATA 80,81,82,83,84,85,86,87,88,89,8A,8B,8C,8D,8E,8F 10430 DATA 90,91,92,93,94,95,96,97,98,99,9A,9B,9C,9D,9E,9F 10440 DATA A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,AA,AB,AC,AD,AE,AF 10450 DATA B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,BA,BB,BC,BD,BE,BF 10460 DATA C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,CA,CB,CC,CD,CE,CF 10470 DATA D0,D1,D2,D3,D4,D5,D6,D7,D8,D9,DA,DB,DC,DD,DE,DF 10480 DATA E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,EA,EB,EC,ED,EE,EF 10490 DATA F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,FA,FB,FC,FD,FE,FF 10500 RETURN 10510 ' 10520 *RX.BUFF.INIT 10530 DIM RX.BUFF(RX.BUFF.SIZE-1) 10540 GOSUB *RX.BUFF.CLEAR 10550 RETURN 10560 ' 10570 *RX.BUFF.CLEAR 10580 G.RX.BUFF.RP=0:'読み出しポインタ 10590 G.RX.BUFF.WP=0:'書き込みポインタ 10600 G.RX.BUFF.N=0 :'バッファ内データ数 10610 G.RX.BUFF.OV=0:'バッファオーバーフロー 10620 G.RX.BUFF.EM=0:'バッファ内エンプティ 10630 RETURN 10640 ' 10650 *RX.BUFF.WRITE 10660 IF G.RX.BUFF.N>=RX.BUFF.SIZE THEN G.RX.BUFF.OV=-1:RETURN 10670 RX.BUFF(G.RX.BUFF.WP)=G.RX.WRITE.DATA 10680 G.RX.BUFF.WP=(G.RX.BUFF.WP+1) MOD RX.BUFF.SIZE 10690 G.RX.BUFF.N=G.RX.BUFF.N+1 10700 G.RX.BUFF.OV=0 10710 RETURN 10720 ' 10730 *RX.BUFF.READ 10740 IF G.RX.BUFF.N=0 THEN G.RX.BUFF.EM=-1:RETURN 10750 G.RX.READ.DATA=RX.BUFF(G.RX.BUFF.RP) 10760 G.RX.BUFF.RP=(G.RX.BUFF.RP+1) MOD RX.BUFF.SIZE 10770 G.RX.BUFF.N=G.RX.BUFF.N-1 10780 G.RX.BUFF.EM=0 10790 RETURN 10800 ' 10810 ' 10820 *COMPORT.INIT 10830 OPEN COMPORT.NAME$ AS #1 10840 IF COMPORT.SPEED=0 THEN GOTO *COMPORT.INIT.1000 10850 OUT &H75,COMPORT.SPEED MOD 256 10860 OUT &H75,COMPORT.SPEED \ 256 10870 *COMPORT.INIT.1000 10880 G.COMPORT.ERROR=0 10890 ON COM GOSUB *COMPORT.INT 10900 RETURN 10910 ' 10920 *COMPORT.INT 10930 *COMPORT.INT.1000 10940 IF LOC(1)=0 THEN RETURN 10950 G.RX.WRITE.DATA=ASC(INPUT$(1,1)) 10960 GOSUB *RX.BUFF.WRITE 10970 IF G.COMPORT.ERROR=0 THEN G.COMPORT.ERROR=G.RX.BUFF.OV 10980 GOTO *COMPORT.INT.1000 10990 ' 11000 ' 11010 *STOP.INT 11020 IF G.COMPORT.ERROR<>0 THEN PRINT #2,"**エラー**" 11030 COM OFF 11040 CLOSE 11050 COLOR 7 11060 END 11070 ' 11080 ' 11090 *MAIN 11100 INPUT "出力(ログ)ファイル名:",OUT.FILE.NAME$ 11110 GOSUB *READ.HEX.CHR 11120 GOSUB *RX.BUFF.INIT 11130 GOSUB *COMPORT.INIT 11140 ON STOP GOSUB *STOP.INT 11150 STOP ON:COM ON 11160 ' 11170 *MAIN.1000 11180 COM OFF 11190 CLOSE 2 11200 OPEN OUT.FILE.NAME$ FOR OUTPUT AS #2 11210 OFFSET.ADRS=0 11220 GOSUB *RX.BUFF.CLEAR 11230 COM ON 11240 PRINT:PRINT "--準備OK--" 11250 ' 11260 *MAIN.1500 11270 COM STOP:GOSUB *RX.BUFF.READ:COM ON 11280 IF G.COMPORT.ERROR<>0 THEN COLOR 2 11290 IF G.RX.BUFF.EM=-1 THEN GOTO *MAIN.2000 11300 OUTPUT.STR$= HEX.CHR$(OFFSET.ADRS \ 256)+HEX.CHR$(OFFSET.ADRS MOD 256)+" : "+HEX.CHR$(G.RX.READ.DATA) 11310 PRINT #2,OUTPUT.STR$ 11320 IF DISP.SKIP.N=>G.RX.BUFF.N THEN PRINT OUTPUT.STR$ 11330 OFFSET.ADRS=OFFSET.ADRS+1 11340 *MAIN.2000 11350 K$=INKEY$ 11360 IF K$="" THEN GOTO 11270 11370 IF K$=CHR$(0) THEN GOTO *MAIN.1000 11380 PRINT #1,K$; 11390 GOTO *MAIN.1500