[Coco] Programming in BASIC YouTube series URBANE Version

Arthur Flexser flexser at fiu.edu
Fri Apr 29 23:44:28 EDT 2016


Thanks for the clarification.

It isn't entirely clear to me under what circumstances a new two-character
name starting with "AA" would be assigned.  Any time you detect a not
previously-used variable name in the source?  Any time a not
previously-used variable name is found that exceeds 2 characters in length?

I would think a good system would be to retain the first two characters
(converted to uppercase if necessary) as the new variable name when
possible, and only assign a new variable name starting with "AA" when doing
so would result in variable name duplication.  This would tend to make the
converted output somewhat more intelligible, which would be a minor plus.
If the original version is FOR I = 1 TO N, it would be a little weird to
convert it to FOR AA = 1 TO AB, in my opinion, instead of just leaving it
unchanged.

Art

On Fri, Apr 29, 2016 at 9:06 PM, Stephen H. Fischer <
SFischer1 at mindspring.com> wrote:

> I suggest that this post be read with the colorized "ubn_in.htm" in
> another window. I am not sure if using a monospaced font helps this.
>
> ----- Original Message -----
> From: "Arthur Flexser" <flexser at fiu.edu>
> To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
> Sent: Friday, April 29, 2016 5:09 PM
> Subject: Re: [Coco] Programming in BASIC YouTube series URBANE Version
>
>
> >I notice two changes from standard Basic in this:  no line numbers in most
> > lines, and where line numbers are used, they appear between underscores.
>
> '''             CHARACTERS IN COLUMN ONE
> '               "A-Za-z", "_", "0-9"   =    LINE LABLE
> '               "#"                    =    Urbane COMMAND
> '               " "                    =    NO LINE LABLE
> '               "'"                    =    COMMENT
> '               any other character    =    COMMENT
>
> >where line numbers are used, they appear between underscores.
>
> That is just my convention when converting an existing DECB program. I
> never wrote a conversion program but thought about one. the old line
> numbers might still work, I wondered even if an existing DECB program would
> work. But my idea was to get the noise out first.
>
> Look at the source for URBANE, it also is the language definition. I said
> some more words on: http://www.tandycoco.com/coco-forum/basic-ly-speaking
>
> > This is typed in (to a word processor?) by the user and saved as a data
> > file and then Urbane reads that data file and converts it, outputting the
> > conversion results to an Ascii file that standard Basic can load in?
>
> YES!
>
> I used Windows "CONTEX" programming editor with syntax coloring to write
> the program and I think Jeff's "PORT" utility to copy from a Windows file
> to a DECB disk. URBANE is a CoCo  2 program that will run on a CoCo 3 and
> yes handle CoCo 3 programs even if run on a CoCo 2. The input and output
> file names are fixed as well as the other files written. I used Jeff's CoCo
> 2 emulator after the switch from FLEX's basic was completed. The only way
> URBANE was possible was because version 1.0 was purchased by me when I got
> FLEX. I did not realize what I had purchased until I was stumped by the
> four string sorts to all four running on the same screen at the same time
> conversion. It just popped into my head after four days. How valiable are
> libraries of DECB subroutines?
>
> As the complete source is right there before your eyes, it can be changed
> and if someone found a bug they could fix it and never tell me about it.
> The only bug reported was really in the emulator used. That was discussed
> right here.
>
> > This example seems not to contain any long variable names.  How are such
> > long names converted to standard Basic variable names?  That is, what
> > method do you use to avoid the problem simple truncation would have in
> > cases where several long names start with the same beginning characters?
>
> The entire variable name is checked to see if it is a new one, several
> times I made a typo and had to examine the cross reference raw file to find
> the exact name I had used before. Some two character variables are not used.
>
> '               Illegal Two Character Variable Table    NOTE: "PI" is a
> variable that is NOT replaced
>                 DATA AS,BF,FN,IF,ON,OR,PI,TO,"\"
>
> > Allowing lowercase in variable names would be nice, if that is not
> already
> > a feature.
>
> The lowercase letters are converted to upper case  because DECB does not
> allow them. New two character names are assigned starting with "AA".
>
> GET_VLSTRING    VLSTRING$ = IN_LINE_CH$
> NEXT_VLSTRING_CH GOSUB GET_IN_LINE_CHAR
>                 IF IN_LINE_CH  <  NUM_0   THEN RETURN
>                 IF IN_LINE_CH  >= ASC_A_U AND IN_LINE_CH  <= ASC_Z_U GOTO
> VLSTRING_ADD_UPPER_ALPHA
>                 IF IN_LINE_CH  >= ASC_a_L AND IN_LINE_CH  <= ASC_z_L GOTO
> VLSTRING_ADD_LOWER_ALPHA
>                 IF IN_LINE_CH  >= ASC_0   AND IN_LINE_CH  <= ASC_9   GOTO
> VLSTRING_ADD_NUMBER
>                 IF IN_LINE_CH   = ASC_UNDERSCORE                     GOTO
> VLSTRING_ADD_SPECIAL
>                 IF IN_LINE_CH   = ASC_TILDE                          GOTO
> VLSTRING_ADD_SPECIAL
>                 IF IN_LINE_CH   = ASC_DOLLAR                         GOTO
> VLSTRING_ADD_DOLLAR
> '               REM Character Found that cannot be in Variable or line
> Label
>                 RETURN
>
> VLSTRING_ADD_LOWER_ALPHA IN_LINE_CH   = IN_LINE_CH  - ( ASC_a_L - ASC_A_U )
>                 IN_LINE_CH$ = CHR$(IN_LINE_CH)
> VLSTRING_ADD_UPPER_ALPHA  REM
> VLSTRING_ADD_NUMBER       REM
> VLSTRING_ADD_SPECIAL      REM
> VLSTRING_ADD_DOLLAR       REM
>                 VLSTRING$ = VLSTRING$ + IN_LINE_CH$
> '               If an "ASC_DOLLAR" is found, declare label or variable end
> found
>                 IF IN_LINE_CH  =  ASC_DOLLAR THEN LAST_CH = IN_LINE_CH :
> GOSUB GET_IN_LINE_CHAR : RETURN
>                 GOTO NEXT_VLSTRING_CH
>
> > Art
> >
> > On Fri, Apr 29, 2016 at 3:03 PM, Stephen H. Fischer <
> > SFischer1 at mindspring.com> wrote:
> >
> >> Agreed, but I cannot download files.
> >>
> >> Someone else would need to do it.
> >>
> >> But then the resulting post could not be sent to the mailing list as it
> >> would be too large.
> >>
> >> That's why zip files were invented.
> >>
> >> The dim witted (SOME only) that refuse to use facebook and
> >> tandycoco.com/coco-forum are locking themselves out of much that is
> good.
> >>
> >> I will see if a post of the converted Selection Sort does not break the
> >> mailing list limit.
> >>
> >> SHF
> >>
> >> ---------------------------------------------
> >> '********************
> >> '*                  *
> >> '*  SELECTION SORT  *
> >> '*                  *
> >> '********************
> >> '
> >>
> >> _1100_ ' GENERATE RANDOM DATA
> >> '      PMODE 4
> >> '      SCREEN 1,0
> >> '      DIM NO( 126 )
> >> '      PCLS 0
> >>
> >>        FOR I = 1 TO N
> >>        NO( I ) = INT( RND( 190 ) )
> >>        HLINE ( I * D, 190 ) - ( I * D, 190 -NO( I )), PSET
> >>        NEXT
> >>        HCOLOR 3,2: FOR I = 0 TO 80 STEP 16 : HPRINT(I,0)," SELECTION
> >> SORT.": NEXT I : HCOLOR 1,2
> >>        FOR J = N TO 1 STEP -1
> >>        LS = -1: SI = -1
> >>        FOR I=1 TO J:IF NO( I ) > LS THEN LS = NO( I ): SI =I: NEXT I
> ELSE
> >> NEXT I
> >>        GOSUB _1290_
> >>        TM = NO( J ) : NO( J ) = NO( SI ): NO( SI ) = TM
> >>        GOSUB _1320_
> >>        NEXT J
> >>        RETURN
> >>
> >> '      LINE DISPLAY SUBROUTINES
> >>
> >> _1290_ HLINE ( J * D, 190 ) - ( J * D, 0 ),PRESET
> >>        HLINE ( ( SI ) * D, 190 ) - (  ( SI ) * D, 0 ), PRESET
> >>        RETURN
> >> _1320_ HLINE ( J * D, 190 ) - ( J * D, 190 - NO( J ) ), PSET
> >>        HLINE ( ( SI ) * D, 190 ) - ( ( SI ) * D, 190 - NO( SI ) ), PSET
> >>        RETURN
>
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> https://pairlist5.pair.net/mailman/listinfo/coco
>


More information about the Coco mailing list