Compucolor.org – Virtual Media

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