#11 Article 541 Posted at 1987/10/30 04:37:22 by アルルカン (MAP475) [PRG.NL3]

Subject: NLOADER3 ブンリ プログラム ダス

ダウンロードしたファイルからNLOADRE3のデータを分離するプログラムです。
N88BASIC用ですが、ファイル関係の変更で、どの機種でも使えると思います。
最初の64個の色テーブルが128文字の1行なのを利用しています。
128文字の文字列が全てNLOADRE3のデータならデータとして読み始めます。
途中でERS回(このプログラムでは5回)異常なデータが続いた場合中断します。
ファイル名は最後に見付けたアーティクルの番号で拡張子がNL3になります。
ときたまばかをやります。(実際#496と#497の所でどじりました)
お使いになる方は、ちゃんと監視してあげてください。

                                        MAP475 アルルカン

P.S.コンパイルして使うことをおすすめします。(インタープリタは遅い)

100  '
110  '
120  '
130 DEFINT A-Z
140 DIM N(255) ,D(10000)
150 FOR I=0 TO 255:N(I)=-1:NEXT
160 P=0
170 FOR I=&H20 TO &H7E:N(I)=P:P=P+1:NEXT
180 FOR I=&HA0 TO &HDF:N(I)=P:P=P+1:NEXT
190 N(&HFD)=P:P=P+1:N(&HFE)=P
200 ERS=5
210  '
220  '
230 INPUT "FILE NAME = ",SF$
240 OPEN SF$ FOR INPUT AS #1
250 WHILE NOT EOF(1)
260   LINE INPUT #1,D$
270   IF LEFT$(D$,7)="Article" THEN GOSUB 320:GOTO 290
280   IF LEN(D$)=128 THEN GOSUB 370
290 WEND
300 CLOSE
310 END
320  '
330  '
340 F$=MID$(STR$(VAL(MID$(D$,8))),2)
350 PRINT "Article "+F$
360 RETURN
370 '
380 '
390 PRINT "Found ";F$+".NL3  ";
400 GOSUB 470:IF ER>0 THEN PRINT"Err":RETURN
410 DT$=D$
420 GOSUB 540
430 IF ER=ERS THEN PRINT"Err":RETURN
440 GOSUB 680
450 PRINT"End"
460 RETURN
470 '
480 ER=0
490 FOR I=1 TO 128 STEP 2
500   A=N(ASC(MID$(D$,I  ,1))):IF A=-1 THEN ER=1
510   A=N(ASC(MID$(D$,I+1,1))):IF A=-1 THEN ER=1
520 NEXT
530 RETURN
540 '
550 PRINT "Check  ";
560 P=0 : ER=0 :K=0
570 WHILE NOT(P>=16000 OR ER=ERS)
580   GOSUB 630
590   IF N<&H40 THEN P=P+1:GOTO 610
600   GOSUB 630:P=P+N+2
610 WEND
620 RETURN
630 '
640 ER=0
650 IF ER<>ERS THEN A=ASC(INPUT$(1,1)):N=N(A):IF N=-1 THEN ER=ER+1:GOTO 650
660 K=K+1:D(K)=A
670 RETURN
680 '
690 '
700 PRINT "Write  ";
710 OPEN F$+".NL3" FOR OUTPUT AS #2
720   PRINT #2,DT$;
730   FOR I=1 TO K:PRINT #2,CHR$(D(I));:NEXT
740 CLOSE #2
750 RETURN