BZ80 Basic Program Filter for the Z88

See all articles from Update April 1996
Publication: Update Magazine
Pub Details: Update April 1996
Date: April 1996
Pages: 46

Have fun with this short BBCBASIC program for your Z88.

.J
NEW
10 *NAME BASICFLT
20 CLS
30 PRINT CHR$(1);"BZ80 BASIC Program Filter";CHR$(1);"B"
40 PRINT
50 INPUT "Input filename",I$
60 INPUT "Output filename",O$
70 I=OPENIN(I$)
80 O=OPENOUT(O$)
90 IF I=0 OR O=0 THEN PRINT "File error!":END
95 PRINT:N1=0:N2=0
100 PL=N1+256*N2:L=BGET#I:N1=BGET#I:N2=BGET#I
105 PRINT "Line ";N2*256+N1;", length ";L;
107 IF N1=10 OR N2=10 THEN GOSUB 500
108 IF L=10 GOSUB 250
110 BPUT#O,L:BPUT#O,N1:BPUT#O,N2
115 PRINT
120 IF L=0 THEN CLOSE#I:CLOSE#O:PRINT "Completed!!":END
125 L=L-3
130 B=BGET#I
135 L=L-1
140 IF B<>10 AND B<>13 THEN BPUT#O,B:GOTO 130
150 BPUT#O,13
155 IF L<>0 THEN PRINT "WARNING: Line length error!!":K=GET
160 GOTO 100
200 INPUT " - new line (or ENTER)",LX;
210 IF LX=0 THEN GOTO 240
220 N2=INT(LX/256)
230 N1=LX-256*N2
240 RETURN
250 LP=PTR#I:LL=7
260 B=BGET#I
265 LL=LL-1
270 IF B<>10 AND B<>13 THEN GOTO 260
280 IF LL<>0 THEN L=13:PRINT " - corrected to length 13";
290 PTR#I=LP
300 RETURN
500 IF N1=10 AND N2=10 THEN GOTO 200
510 IF (N1+N2*256)>PL THEN GOTO 200
520 IF N1=10 THEN N1=13
530 IF N2=10 THEN N2=13
540 PRINT " - corrected to line ";N1+256*N2;
550 RETURN

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.