87 GOTO 566
89 AA = AA + 1
90 IF AA > AB GOTO 106
92 AC = AD
93 AE$ = MID$(AF$, AA, 1)
94 AD = ASC(AE$)
95 IF AD >= 32 THEN RETURN
96 IF AD = 09 GOTO 102
98 PRINT #AG, AH; " " ; AF$
99 PRINT #AG, AH; " Control Character "; AD; " Found in Input Line at "; AA
100 RETURN
102 AE$ = CHR$(32)
103 AD = 32
104 RETURN
106 AD = -1
107 AE$ = CHR$(64)
108 RETURN
114 AI$ = AE$
115 GOSUB 89
116 IF AD < 0 THEN RETURN
117 IF AD >= 65 AND AD <= 90 GOTO 128
118 IF AD >= 97 AND AD <= 122 GOTO 126
119 IF AD >= 48 AND AD <= 57 GOTO 129
120 IF AD = 95 GOTO 130
121 IF AD = 64 GOTO 130
122 IF AD = 36 GOTO 131
124 RETURN
126 AD = AD - ( 97 - 65 )
127 AE$ = CHR$(AD)
128 REM
129 REM
130 REM
131 REM
132 AI$ = AI$ + AE$
134 IF AD = 36 THEN AC = AD : GOSUB 89 : RETURN
135 GOTO 115
141 AJ$ = AE$
142 AK = 0
143 GOSUB 89
145 IF AD <= 0 GOTO 215
146 AJ$ = AJ$ + AE$
147 IF AD = 32 THEN AK = 0
148 IF AK = 1 GOTO 150
149 IF AD = 88 OR AD = 120 GOTO 155
150 IF AD <> 34 GOTO 143
152 GOSUB 89
153 RETURN
155 GOSUB 89
156 IF AD <= 0 GOTO 215
157 IF AD = 34 GOTO 162
158 IF AD >= 65 AND AD <= 90 GOTO 166
159 IF AD >= 97 AND AD <= 122 GOTO 166
160 IF AD = 95 GOTO 166
161 GOTO 143
162 AJ$ = AJ$ + AE$
163 GOSUB 89
164 RETURN
166 AL = AA
167 AM$ = AE$
168 GOSUB 114
170 IF AC <> 36 GOTO 204
171 FOR AN = AO TO AP
172 IF AI$ = AQ$(AN,AR) GOTO 188
173 NEXT AN
177 AP = AP + 1
178 IF AP > AT THEN PRINT #AG, " VARIABLE_NAMES_MAX_COUNT Exceeded" : STOP
180 AQ$(AP,AR) = AI$
181 AQ$(AP,AU) = "Pending"
183 GOSUB 218
185 AQ$(AP,AU) = AV$ + "$"
186 AN = AP
188 IF ASC(AQ$(AN,AU)) = 34 GOTO 198
192 AJ$ = AJ$ + AQ$(AN,AU)
193 GOTO 143
198 AW = LEN(AJ$) - 1
199 AJ$ = LEFT$(AJ$,AW)
200 AX = LEN(AQ$(AN,AU)) - 2
201 AJ$ = AJ$ + MID$(AQ$(AN,AU),2,AX)
202 GOTO 143
204 AA = AL
205 AE$ = AM$
206 AK = 1
207 AJ$ = AJ$ + AE$
210 GOTO 143
212 GOSUB 89
213 RETURN
215 PRINT #AG, AH ; " ERROR - Missing end of Quoted String " ; AJ$
216 AY = AY + 1
217 RETURN
218 AV$ = CHR$(AZ) + CHR$(BA)
220 BA = BA + 1
221 IF BA <= 90 GOTO 228
222 BA = 65
224 AZ = AZ + 1
225 IF AZ <= 90 GOTO 228
226 AZ = 65 : REM
228 FOR BB = BC TO BD
229 IF AV$ = BE$(BB) GOTO 218
230 NEXT BB
232 RETURN
236 BG = 0
237 BH = LEN(AI$)
238 FOR BI = 1 TO BH
240 BJ$ = MID$(AI$, BI, 1)
241 BK = ASC(BJ$)
243 IF BK >= 48 AND BK <= 57 GOTO 249
244 IF BK = 46 OR BK = 43 OR BK = 45 GOTO 249
245 IF BK = 69 OR BK = 101 GOTO 249
247 RETURN : REM
249 NEXT BI
250 BG = 1
251 RETURN
254 BL$ = STR$(AH)
256 BM = LEN(BL$) - 1
257 BN$ = MID$(BL$, 2, BM)
258 RETURN
260 LINE INPUT #BO, AF$
262 AA = 0
263 AC = 64
264 BP = 0
265 BQ = 0
266 BR = 0
268 IF BS = 2 THEN PRINT AH ;
269 BT = EOF(BO)
271 IF BT = -1 GOTO 512
272 AB = LEN(AF$)
273 IF AB = 0 GOTO 304
282 GOSUB 89
283 IF AD = 35 GOTO 294
284 IF AD = 32 GOTO 306
285 IF AD = 39 GOTO 292
287 IF AD >= 65 AND AD <= 90 GOTO 308
288 IF AD >= 97 AND AD <= 122 GOTO 308
289 IF AD >= 48 AND AD <= 57 GOTO 308
290 IF AD = 95 GOTO 308
292 ON BS GOTO 503, 509
294 IF INSTR(2, AF$, "LIST_ON") <> 0 THEN BU = 1
295 IF INSTR(2, AF$, "LIST_OFF") <> 0 THEN BU = 0
297 IF INSTR(2, AF$, "XREF_ON") <> 0 THEN BV = 1
298 IF INSTR(2, AF$, "XREF_OFF") <> 0 THEN BV = 0
300 IF INSTR(2, AF$, "CONSTANT") <> 0 THEN BP = 1 : GOTO 306
304 ON BS GOTO 503, 509
306 ON BS GOTO 503, 335
308 GOSUB 114
309 BR = 1
311 IF AC <> 36 GOTO 316
312 PRINT #AG, "WARNING - '$' SHOULD NOT BE USED IN LABELS " ; AI$
313 PRINT "WARNING - '$' SHOULD NOT BE USED IN LABELS " ; AI$
314 BW = BW + 1
316 IF BS = 2 GOTO 335
318 FOR BX = BY TO BZ
319 IF AI$ = CA$(BX,CB) GOTO 331
320 NEXT BX
322 BZ = BZ + 1
323 IF BZ > CC THEN PRINT #AG, " LINE_LABEL_MAX_COUNT Exceeded" : STOP
325 CA$(BZ,CB) = AI$
326 GOSUB 254
327 CA$(BZ,CD) = BN$
328 IF BV = 1 THEN PRINT #CE, " "; 2; " "; BN$; " "; AI$
329 GOTO 503
331 PRINT #AG, AH ; " ERROR - DUPLICATE LINE LABEL  = " ; AI$
332 AY = AY + 1
333 GOTO 503
335 GOSUB 254
336 CF$ = BN$
337 CG$ = ""
338 CH = 0
339 CI = 0
341 IF AD < 0 GOTO 503
342 IF AD >= 65 AND AD <= 90 GOTO 359
343 IF AD >= 97 AND AD <= 122 GOTO 359
344 IF AD >= 48 AND AD <= 57 GOTO 359
345 IF AD = 95 GOTO 359
346 IF AD = 34 GOTO 447
347 IF AD = 38 GOTO 462
349 IF AD = 61 THEN CI = 1
352 IF AD = 32 AND AC = 32 GOTO 356
354 CF$ = CF$ + AE$
356 GOSUB 89
357 GOTO 341
359 BR = BR + 1
360 GOSUB 114
362 GOSUB 236
363 IF BG = 1 GOTO 426
365 FOR CJ = CK TO CL
366 IF AI$ = CM$(CJ) GOTO 399
367 NEXT CJ
369 FOR BX = BY TO BZ
370 IF AI$ = CA$(BX,AR) GOTO 421
371 NEXT BX
373 FOR AN = AO TO AP
374 IF AI$ = AQ$(AN,AR) GOTO 441
375 NEXT AN
378 AP = AP + 1
379 IF AP > AT THEN PRINT #AG, " VARIABLE_NAMES_MAX_COUNT Exceeded" : STOP
381 AQ$(AP,AR) = AI$
382 AQ$(AP,AU) = "Pending"
383 IF BP <> 1 GOTO 390
384 CG$ = AI$
385 CH = AP
386 IF BV = 1 THEN PRINT #CE, " "; 4; " "; BN$; " "; AI$
387 GOTO 341
390 GOSUB 218
392 AQ$(AP,AU) = AV$
393 AN = AP
394 IF BV = 1 THEN PRINT #CE, " "; 4; " "; BN$; " "; AI$
395 IF AC <> 36 GOTO 441
396 AQ$(AP,AU) = AV$ + "$"
397 GOTO 441
399 IF BV = 1 AND BQ = 0 THEN PRINT #CE, " "; 8; " "; BN$; " "; AI$
401 IF BQ = 1 GOTO 406
402 IF AI$ = "REM" GOTO 413
403 IF AI$ = "LET" GOTO 418
404 IF AI$ = "DATA" THEN BQ = 1
405 IF AI$ = "CONSTANT" GOTO 341
406 CF$ = CF$ + AI$
408 GOTO 341
413 IF BR = 1 GOTO 509
414 CF$ = CF$ + "REM"
415 GOTO 503
418 IF AD = 32 GOTO 356
419 GOTO 341
421 IF BV = 1 THEN PRINT #CE, " "; 3; " "; BN$; " "; CA$(BX,CD)
423 CF$ = CF$ + CA$(BX,CD)
424 GOTO 341
426 IF BP <> 1 GOTO 438
427 IF CH = 0 GOTO 438
428 IF CI <> 1 GOTO 438
430 CN$ = ""
431 IF AC = 45 THEN CN$ = "-"
432 IF AC = 43 THEN CN$ = "+"
434 AQ$(CH,AU) = CN$ + AI$
435 GOTO 341
438 CF$ = CF$ + AI$
439 GOTO 341
441 IF BP = 1 GOTO 341
442 IF BV = 1 THEN PRINT #CE, " "; 5; " "; BN$; " "; AI$
444 CF$ = CF$ + AQ$(AN,AU)
445 GOTO 341
447 GOSUB 141
448 IF BP <> 1 GOTO 457
449 IF CH = 0 GOTO 457
450 IF CI <> 1 GOTO 457
452 AQ$(CH,AU) = AJ$
453 GOTO 341
457 CF$ = CF$ + AJ$
458 GOTO 341
462 CO$ = AE$
464 GOSUB 89
465 CO$ = CO$ + AE$
467 CP = 0
468 CQ = 0
469 IF AD = 72 OR AD = 104 THEN CP = 1
470 IF AD = 79 OR AD = 111 THEN CQ = 1
471 IF CP = 0 AND CQ = 0 GOTO 498
473 GOSUB 89
475 IF AD >= 65 AND AD <= 70 GOTO 487
476 IF AD >= 97 AND AD <= 102 GOTO 484
477 IF AD >= 48 AND AD <= 55 GOTO 495
478 IF AD >= 56 AND AD <= 57 GOTO 487
481 CF$ = CF$ + CO$
482 GOTO 341
484 AD = AD - ( 97 - 65 )
485 AE$ = CHR$(AD)
487 CO$ = CO$ + AE$
488 IF CP = 1 GOTO 473
490 PRINT #AG, "WARNING - Invalid Octal Number " ; CO$
491 PRINT "WARNING - Invalid Octal Number " ; CO$
492 BW = BW + 1
493 GOTO 503
495 CO$ = CO$ + AE$
496 GOTO 473
498 PRINT #AG, "WARNING - '&' Not followed by 'H' or 'O' " ; CO$
499 PRINT "WARNING - '&' Not followed by 'H' or 'O' " ; CO$
500 BW = BW + 1
503 IF BS = 1 AND BU = 1 THEN PRINT #AG, AH ; AF$
505 IF BP = 1 GOTO 509
507 IF BS = 2 THEN PRINT #CR, CF$
509 AH = AH + 1
510 GOTO 260
512 CS = AH - 1
513 PRINT #AG, "Urbane Pass "; BS; " Done, Lines = "; CS
514 PRINT "Urbane Pass "; BS; " Done, Lines = "; CS
516 IF BS = 2 GOTO 631
519 PRINT #AG, " MEM = " ; MEM
520 PRINT " MEM = " ; MEM
522 DIM CM$(200)
523 CT = 200
524 CK = 1
525 CL = 0
527 READ CU$
528 IF CU$ = "\" GOTO 533
529 CL = CL + 1
530 CM$(CL) = CU$
531 GOTO 527
533 DIM BE$(10)
534 CV = 10
535 BC = 1
536 BD = 0
538 READ CW$
539 IF CW$ = "\" GOTO 544
540 BD = BD + 1
541 BE$(BD) = CW$
542 GOTO 538
544 DIM AQ$(150,2)
545 AT = 150
546 AO = 1
547 AP = 0
548 AR = 1
549 AU = 2
551 AZ = 65
552 BA = 65
554 BS = 2
555 AH = 1
556 BT = 0
557 PRINT #AG, " ---------PASS 2 STARTING------"
558 PRINT " ---------PASS 2 STARTING------"
559 CLOSE BO
561 OPEN "I", #1, "UBN_IN.TXT"
563 GOTO 260
566 FILES 4, 100
567 PCLEAR 1
568 CLEAR 8500
569 PRINT "Urbane Starting - Urbane 1.060202 RC0"
570 PRINT " MEM = " ; MEM
572 BS = 1
573 AH = 1
575 AY = 0
576 BW = 0
578 CX$ = CHR$(34)
580 BU = 0
581 BV = 0
582 BO = 1
583 CR = 2
584 AG = 3
585 CE = 4
587 OPEN "I", #1, "UBN_IN.TXT"
589 OPEN "O", #2, "UBN_OUT.TXT"
591 OPEN "O", #3, "UBN_LST.TXT"
593 OPEN "O", #4, "UBN_XRF.TXT"
595 DIM CA$(100,2)
596 CC = 100
597 BY = 1
598 BZ = 0
599 CB = 1
600 CD = 2
602 PRINT #AG, " "; "Urbane 1.060202 RC0 - Tandy Color Computer 3 Disk Extended Color Basic Preprocessor."
603 PRINT #CE, " "; 1; " "; 0; " "; "Urbane 1.060202 RC0 - Tandy Color Computer 3 Disk Extended Color Basic Preprocessor."
605 PRINT #AG, " MEM = " ; MEM
606 GOTO 260
609 DATA REM
610 DATA ATTR,AUDIO,BACKUP,CIRCLE,CLEAR,CLOAD,CLOADM,CLOSE,CLS,COLOR,CONSTANT,CONT,COPY,CSAVE
611 DATA CSAVEM,DATA,DEF,DEFUSR,DEL,DIM,DIR,DLOAD,DRAW,DRIVE,DSKI$,DSKINI,DSKO$,EDIT
612 DATA END,EXEC,FIELD,FILES,FN,FOR,GET,GOSUB
613 DATA GOTO,HBUFF,HCIRCLE,HCLS,HCOLOR,HDRAW,HGET,HLINE,HPAINT,HPRINT,HPUT,HRESET
614 DATA HSCREEN,HSET,HSTAT,IF,INPUT,KILL,LET,LINE,LIST,LLIST,LOCATE,LPOKE,LOAD,LOADM,LSET,MERGE
615 DATA MOTOR,NEW,NEXT,OLD,ON,OPEN,PAINT,PALETTE,PCLEAR,PCLS,PCOPY,PLAY,PMODE,POKE,PRESET,PRINT
616 DATA PSET,PUT,READ,RENAME,RENUM,RESET,RSET,RESTORE,RESUME,RETURN,RUN,SAVE,SAVEM,SCREEN
617 DATA SET,SKIPF,SOUND,STOP,TO,TROFF,TRON,WIDTH,WRITE,UNLOAD,VERIFY
618 DATA MEM,TIMER,AND,NOT,OR,ELSE,STEP,FREE,AS,BRK,ERR,CMP,RGB,USING
619 DATA ERROR,FREE,OFF,TAB,USING,THEN,TO,G,BF,B,R,A,"?"
620 DATA AS,BF,OR,PI
623 DATA ABS,ASC,ATN,BUTTON,CHR$,COS,CVN,EOF,ERLIN,ERNO,EXP,FIX,HEX$,HPOINT,INKEY$,INSTR,INT
624 DATA JOYSTK,LEFT$,LEN,LOC,LOF,LOG,LPEEK,MID$,MKN$,PEEK,POINT,POS,PPOINT,RIGHT$,RND,SGN,SIN
625 DATA STRING$,STR$,SQR,TAN,USR,VAL,VARPTR
626 DATA "\"
629 DATA AS,BF,FN,IF,ON,OR,PI,TO,"\"
631 PRINT #AG, " MEM = " ; MEM
632 PRINT " MEM = " ; MEM
634 PRINT "Urbane Done, Errors = " ; AY ; " Warnings = "; BW ; " Lines = " ; CS ; "Line Label Count = " ; BZ ; " Variables Count = " ; AP
635 PRINT #AG, "Urbane Done, Errors = " ; AY ; " Warnings = "; BW ; " Lines = " ; CS ; "Line Label Count = " ; BZ ; " Variables Count = " ; AP
636 CLOSE BO
637 CLOSE CR
638 CLOSE AG
639 CLOSE CE
641 END