Listing of file='CONVRT.BAS;01' on disk='vmedia/agilis-sector.ccvf'
0 PLOT 12,6,6:PRINT "USE WITH CARE ON A SINGLE DISK SYSTEM. BACK-UP YOUR DATA FILE.":PRINT 1 PRINT "PROGRAM TO CONVERT STANDARD TEXT FILES TO COMPUWRITER FILES":PRINT 2 PRINT :PRINT " BY C HENNIG 81 11 16":PRINT :PRINT 3 PRINT "LAST EDIT 81 11 23":PRINT 4 DIM HX$(15):FOR I= 0 TO 15:READ HX$(I):NEXT I 5 HIMEM= PEEK (32940)+ PEEK (32941)* 256:IF HIMEM< (65535- (12* 128))THEN FOR I= 1 TO 4:CHK= CHK+ PEEK (HIMEM+ I):NEXT I 6 IF CHK= 386 GOTO 10 7 HIMEM= HIMEM- (128* 12+ 6):DEC= HIMEM:GOSUB 30000:POKE 32940,LO:POKE 32941,HI:CLEAR 512 8 HIMEM= PEEK (32940)+ PEEK (32941)* 256:FOR I= 1 TO 4:POKE HIMEM+ I,ASC (MID$ ("Carl",I,1)):NEXT I 10 CLEAR 512:DIM HX$(15),SFPB(127),FIL(22) 12 RESTORE 11240 13 FOR I= 0 TO 15:READ HX$(I):NEXT I 15 SBUF= (PEEK (32940)+ PEEK (32941)* 256)+ 5:DEC= SBUF:GOSUB 11260:SBUF$= HX$+ "" 20 BSIZE= 1535:DEC= BSIZE:GOSUB 11260:BSIZE$= HX$+ "" 30 WAYT= 0:V1= 0:V2= 0:EOF$= CHR$ (26):SRC= 1:POKE 33289,128 100 BUF= 33053:PTR= 1:SIZE= 0 120 INPUT "FILE TO BE CONVERTED >";N1$:N1$= LEFT$ (N1$,9) 121 IF LEN (N1$)< 9 THEN PRINT "COMPLETE NAME WITH SPACES & NO PERIOD":GOTO 120 130 INPUT "SOURCE DRV. >";DDRV$:INPUT "DESTINATION DRV. >";SDRV$:IF SD$= DD$THEN WAYT= 1 133 IF WAYT THEN PRINT "":INPUT "INSERT SCRIBE DATA DISK & PRESS RETURN.";IN$ 135 DRV$= SDRV$:DEC= 0:GOSUB 10380:GOSUB 10680:REM GET SCRIBE FPB 137 IF WAYT THEN INPUT "INSERT SOURCE FILE DISK & PRESS RETURN.";IN$ 140 DBLK= 0:DEC= 0:DRV$= DDRV$:GOSUB 10380:REM READ 150 PAGE= 33- SFPB(1):SPAGE= PAGE 155 REM ALL VARS PRECEDED W/AN "S" ARE RELATED TO SCRIBE FILES 157 REM NXTBLK=SSBLK:REM FIRST TEXT BLOCK FOR SCRIBE 160 MAXDBLK= PEEK (BUF+ 1) 180 EOF= 1:GOSUB 41000:REM GET CURRENT NAME & ENTRY 190 IF EOF THEN PRINT "FILE "N1$", NOT FOUND":END 350 GOSUB 10340:IF DIRFULL< = 0THEN PRINT "DIRECTORY FULL":GOTO 820 460 CR$= CHR$ (13):LF$= CHR$ (10) 480 NCHAR= 0 490 FIL(10)= FIL(10)+ 1:REM INC VERS# 500 XBLK= FIL(11)+ FIL(12)* 256:REM SOURCE SBLK 505 XDSIZ= FIL(13)+ FIL(14)* 256:REM SOURCE SIZE 510 XFLBC= FIL(15) 515 PRINT "BUFFER STARTS @ ";SBUF$" FOR "BSIZE$" BYTES.":EOF= 0:TNCHAR= 0:SIZE= 0:INC= 0 520 FOR I= XBLK TO XBLK+ XDSIZ- 1 525 DRV$= DDRV$:DEC= I:GOSUB 10380:REM READ BLK 530 GOSUB 44000:REM GET ASCHAR 540 : 550 IF EOF GOTO 570 560 NEXT I:REM END OF SOURCE FILE 570 EOF= 1:PRINT "END OF LAST BLOCK":FOR I= TNC TO BSIZE:POKE SBUF+ I,03:NEXT I:REM FILL BUFF TO EOPAGE 575 GOSUB 46000:REM DUMP REMAINDER 595 PRINT "" 600 REM UPDATE SCRIBE FPB 610 SFPB(0)= SFPB(0)+ 1:FIL= 0 620 FOR I= 2 TO 34 630 IF SFB(I)= 0 THEN FOR J= 0 TO PAGE- 1:SFPB(I+ J)= FIL+ 1:NEXT J:GOTO 653 640 FIL= SFPB(I) 650 NEXT I 653 FOR I= 0 TO 127:POKE BUF+ I,SFPB(I):NEXT I 655 DRV$= SDR$:DEC= 0:GOSUB 11180 657 IF WAYT THEN PRINT "":INPUT "INSERT SCRIBE DATA DISK & PRESS RETURN.";IN$ 660 DRV$= SDRV$:DEC= SFPB(0):GOSUB 10380:REM READ FILE # FPB 670 POKE BUF,(PEEK (BUF) OR 128):REM SET VALID FILE 680 FOR I= 1 TO 9 690 POKE BUF+ I,FIL(I) 700 NEXT I 705 POKE BUF+ 51,SPAGE:POKE BUF + 53,PAGE- 1 710 POKE BUF+ I,29:REM END OF NAME MARK 720 POKE BUF+ 36,ASC ("?"):POKE BUF+ 37,29 730 FOR I= 0 TO 127:PRINT PEEK (BUF+ I);:NEXT 740 DEC= SFPB(0):GOSUB 11180:REM WRITE FIL FPB 750 IF WAYT THEN INPUT "INSERT SOURCE FILE DISK & PRESS RETURN.";IN$ 990 PRINT "DONE!!!" 999 END 10000 REM DUMP SBUF 10005 IF WAYT THEN PRINT "":INPUT "INSERT SCRIBE DATA DISK & PRESS RETURN.";IN$ 10010 DRV$= SDRV$:DEC= PAGE* 12:GOSUB 11260:BLK$= HX$+ "" 10020 PLOT 27,4:PRINT "WRITE ";DRV$;":";BLK$;" ";SBUF$;" ";BSIZE$:PLOT 27,27 10030 NCHAR= 0:TNC= 0 10280 PRINT "DISK PAGE #";PAGE;" @ ";BLK$ 10300 IF SFPB(1)< = 0 THEN PRINT "DISK FULL":END :REM TRY TO RECOVER 10310 IF WAYT THEN INPUT "INSERT SOURCE FILE DISK & PRESS RETURN.";IN$ 10320 RETURN 10340 REM DIRFULL: 10360 DIRFULL= (((MAXDBLK+ 1)* 6)- (DBLK* 6+ ENTRY))- 1:RETURN 10380 REM READ: 10400 GOSUB 11260:PRINT HX$ 10420 PLOT 27,4:PRINT "READ ";DRV$;":";HX$;" 811D 80":PLOT 27,27 10440 RETURN 10680 REM SCRIBE FPB MUST BE IN BUF 10700 FOR I= 0 TO 127 10720 SFPB(I)= PEEK (BUF+ I) 10730 NEXT I 10820 RETURN 11180 REM WRITEBUF: 11190 IF WAYT THEN PRINT "":INPUT "INSERT SCRIBE DATA DISK & PRESS RETURN.";IN$ 11200 GOSUB 11260:PLOT 27,4:PRINT "WRITE ";DRV$;":";HX$;" 811D 80":PLOT 27,27 11210 IF WAYT THEN INPUT "INSERT SOURCE FILE DISK & PRESS RETURN.";IN$ 11220 RETURN 11240 DATA 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 11250 REM HEX CONVERSION 11260 HX$= "":T= INT (DEC/ 4096):GOSUB 11420 11280 DEC= DEC- T* 4096 11300 T= INT (DEC/ 256):GOSUB 11420 11320 DEC= DEC- T* 256 11340 T= INT (DEC/ 16):GOSUB 11420 11360 DEC= DEC- T* 16 11380 T= DEC:GOSUB 11420 11400 RETURN 11420 HX$= HX$+ HX$(T):RETURN 12000 REM FILL DIR BUF WITH N FPB 12010 PTR= PTR+ 21* ENTRY 12020 FOR I= 0 TO 20 12030 POKE BUF+ PTR,FIL(I) 12040 PTR= PTR+ 1 12050 NEXT I 12060 RETURN 30000 REM SEPARATE INTO LO & HI BYTES 30010 HI= INT (DEC/ 256):LO= DEC- HI* 256 30020 RETURN 40000 REM POKE DEC values into DBUF 40010 POKE BUF+ PTR+ EPTR,DEC:EPTR= EPTR+ 1 40020 RETURN 41000 REM READ DIR FOR NAME$ 41005 FOUND= 0:EOF= 1:REM END OF DIR, FILE NOT FOUND 41010 FOR J1= 0 TO MAXDBLK 41030 D0BLK= PEEK (BUF):REM CURRENT DIR BLK 41040 PTR= 1 41050 FOR ENTRY= 0 TO 5 41060 ATR= PEEK (BUF+ PTR+ 1):REM 1 = ATR byte. 41070 GOSUB 50000:REM SCAN FOR VERSION # & NAME 41075 IF FOUND THEN GOSUB 42000:EOF= 0:REM GET FILE SPECS 41080 IF ATR= 1 GOTO 41150 41090 PTR= PTR+ 21 41100 NEXT ENTRY 41110 DBLK= DBLK+ 1:IF DBLK< MAXBLK THEN DEC= DBLK:GOSUB 10380:REM READ BLK 41120 NEXT J1:EOF= 1 41150 RETURN 42000 REM GET FILE PARM BLKS 42010 FOR I= 0 TO 20 42020 FIL(I)= PEEK (BUF+ PTR+ I+ 1) 42030 NEXT I 42035 FIL(I)= PEEK (BUF):REM CURRENT DIR BLK 42037 FIL(I+ 1)= ENTRY:REM CURRENT FILE ENTRY 42040 RETURN 44000 REM GET CHARS FROM BUF, PLACE IN SBUF 44005 T= 0 44010 FOR J= BUF TO BUF+ 127 44015 T= PEEK (J):IF (T= 10) OR (T= 0) GOTO 44025:REM STRIP LF 44020 POKE SBUF+ TNCHAR,T:TNC= TNC+ 1 44023 IF TNC= BSIZE- 1 THEN GOSUB 46000:REM SET PAGE # & DUMP BUFFER 44025 IF SRC THEN IF T= 26 THEN EOF= 1:PRINT "END OF SOURCE FILE":GOTO 44050 44030 NEXT J 44050 RETURN 46000 REM ADD COMPU WRITER PAGE # 46005 SFPB(1)= SFPB(1)- 1:DEC= 33- SFPB(1):IF EOF THEN DEC= 0:PRINT " LAST PAGE OF FILE 46010 GOSUB 30000:POKE SBUF+ BSIZE- 1,LO:POKE SBUF+ BSIZE,HI 46020 GOSUB 10000:PAGE= PAGE+ 1 46030 RETURN 50000 REM SCAN FOR NAME 50010 FOUND= 0:T$= "":TEMP= BUF+ PTR+ 2:FOR JJ= TEMP TO TEMP+ 8 50020 T$= T$+ CHR$ (PEEK (JJ)) 50030 NEXT JJ 50040 IF N1$= T$THEN V1= PEEK (JJ):PRINT "";T$;";";V1:FOUND= 1 50060 RETURN