[Coco] Program to convert Orchestra 90 ".ASC" files for use with the Orchestra 90 cartridge
Tony Jewell
tonyjewell at gmail.com
Sun Jun 12 17:28:07 EDT 2016
Oh, and on the off chance anyone needs it, I have a Perl script for
converting .ASC files into .CAS files that I wrote to load these files into
the Dragon version, although I presume it works on a Coco too. Drop me a
line if you want a copy!
And if anyone has a spare Orchestra cart, please, drop me a line too! I've
never used a real one, just the version we built that uses the Dragon's
internal DAC.
Cheers, Tony
On 12 June 2016 at 20:58, Barry Nelson <barry.nelson at amobiledevice.com>
wrote:
> Here is a C language version. It does not block to 100 byte blocks, but
> this does not seem to matter.
> o90cvn.c
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
>
> int main(int argc, char **argv)
> {
> FILE * in;
> FILE * out;
> char ibuf[101];
> char *p = ibuf;
> char obuf[101];
> int ln,pn;
>
> if (argc<3)
> {
> fprintf(stdout,"%s: Usage: %s input_file.asc
> output_file\n",argv[0],argv[0]);
> exit(1);
> }
> in=fopen(argv[1], "r");
> out=fopen(argv[2], "w");
> while (fgets(ibuf,100,in)!=NULL)
> {
> p=strchr(ibuf,'\n');
> if (p!=NULL)
> {
> *p='\0';
> }
> ln=strlen(ibuf);
> p=strchr(ibuf,'\r');
> if (p!=NULL)
> {
> *p='\0';
> }
> if (ln>strlen(ibuf))
> {
> fseek(in,strlen(ibuf)-ln+1,SEEK_CUR);
> }
> if (strlen(ibuf)>0)
> {
> printf("%s\n",ibuf);
> ln=strlen(ibuf);
> pn=31;
> while (strchr(ibuf,'/')!=NULL && ln>pn)
> {
> strncpy(obuf,ibuf,100);
> strncpy(obuf+pn+1,ibuf+pn,100);
> obuf[pn]=(char) 175;
> pn=pn+31;
> ln=ln+1;
> strncpy(ibuf,obuf,100);
> }
> strncpy(obuf,ibuf,100);
> obuf[0]=obuf[0]+128;
> fprintf(out,"%s",obuf);
> }
> }
> fclose(in);
> fclose(out);
> exit(0);
> }
>
> On Jun 11, 2016, at 7:00 PM, Barry Nelson <barry.nelson at amobiledevice.com>
> wrote:
>
> > There already is a BASIC09 version here:
> http://www.colorcomputerarchive.com/coco/Orchestra-90/readme.txt
> >
> >> Bill Pierce ooogalapasooo at aol.com
> >> Sat Jun 11 18:48:33 EDT 2016
> >>
> >> Thanks Barry, you beat me to it. Next we need a bulk renaming utility
> to strip the ".ASC" or ".MUS" from the file (really simple) and also
> capitalize any lower case named files.
> >> I may convert your code to OS9 as I about have my Orch90 player for OS9
> going. I've got to finish sorting out the flow of the "SCORE" function,
> then decide how I'm going to implement the tables.
> >> I've got some projects going on in the studio at the moment ($$) and
> don't have much time for Coco stuff.
> >>
> >> On Jun 11, 2016, at 6:31 PM, Barry Nelson <
> barry.nelson at amobiledevice.com> wrote:
> >>
> >>> I noticed this software was missing from the internet so I rewrote it.
> It converts ".ASC" Orchestra 90 files so that the Orchestra 90 CoCo
> cartridge can use them.
> >>>
> >>> 1 REM PROGRAM TO CONVERT ORCHESTRA "ASC" FILES TO A FORMAT READABLE BY
> THE ORCHESTRA 90 CARTRIDGE
> >>> 10 CLEAR 500:CLS
> >>> 20 INPUT "FILE FOR CONVERSION";F$
> >>> 25 REM CONSTRUCT OUTPUT FILE NAME, REMOVE .ASC EXTENSION, IF NO
> EXTENSION ADD -O
> >>> 30 E$="":P=INSTR(F$,"."):IF P=0 THEN P=LEN(F$)+1:E$="-O"
> >>> 40 O$=LEFT$(F$,P-1)
> >>> 45 REM OPEN INPUT AND OUTPUT FILES
> >>> 50 OPEN "I",1,F$:OPEN "O",2,O$+E$+"."
> >>> 55 REM CHECK FOR END OF INPUT FILE
> >>> 60 IF EOF(1) THEN GOTO 140
> >>> 65 REM GET A LINE OF INPUT
> >>> 70 LINE INPUT #1,N$
> >>> 75 REM IF THE LINE IS EMPTY, GET THE NEXT LINE
> >>> 80 IF LEN(N$)>0 THEN PRINT N$ ELSE 60
> >>> 85 REM SPLIT UP COMMENT LINES LONGER THAN 31 CHARACTERS
> >>> 90 LN=LEN(N$):PN=31
> >>> 100 IF LN-PN>0 AND INSTR(N$,"/")>0 THEN
> N$=LEFT$(N$,PN)+CHR$(175)+MID$(N$,PN+1):PN=PN+31:LN=LN+1:GOTO 100
> >>> 105 REM SET BIT 7 HI ON THE FIRST CHARACTER OF EACH LINE
> >>> 110 N$=CHR$(ASC(LEFT$(N$,1)) OR 128)+MID$(N$,2)
> >>> 115 REM WRITE OUT 100 CHARACTERS AT A TIME, NO CR OR LF
> >>> 120 OP$=OP$+N$:IF LEN(OP$)>100 THEN PRINT
> #2,LEFT$(OP$,100);:OP$=MID$(OP$,101)
> >>> 125 REM GET NEXT LINE
> >>> 130 GOTO 60
> >>> 135 REM CLOSE INPUT FILE
> >>> 140 CLOSE #1
> >>> 145 REM WRITE OUT LAST BLOCK OF 100 CHARACTERS, PADDING WITH SPACES
> >>> 150 OP$=LEFT$(OP$+STRING$(100,32),100):PRINT #2,OP$;
> >>> 155 REM CLOSE OUTPUT FILE
> >>> 160 CLOSE #2
> >>> 170 END
> >>
>
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> https://pairlist5.pair.net/mailman/listinfo/coco
>
More information about the Coco
mailing list