80 TEXT : HOME : INVERSE : PRINT " NUMBERS TO LETTERS ": NORMAL
90 PRINT : PRINT "BY MARK CRAVEN": PRINT : PRINT "COPYRIGHT 1987 BY MICROSPARC, INC."
100 VTAB 23: PRINT "RETURN TO CONTINUE...";: GET X$: POKE -16368,0: HOME
110 FOR I = 1 TO 9: READ TH$(I):H$(I) = TH$(I): NEXT
120 FOR I = 0 TO 9: READ T$(I): NEXT : REM TEENS
130 FOR I = 2 TO 9: READ T1$(I): NEXT : REM 'TENS'
140 HOME :S$ = "":S1$ = "":TH$ = "":H$ = "":T$ = "":T1$ = "": VTAB 4: PRINT "ENTER YOUR OWN NUMBER (-9999 TO +9999)": PRINT "OR RETURN FOR A RANDOM NUMBER": PRINT : PRINT
150 INPUT "";N$: IF N$ = "" THEN 230
160 IF LEFT$(N$,1) = "-" THEN S$ = "-":S1$ = "MINUS":N$ = MID$ (N$,2)
170 IF N$ = "0" THEN PRINT "THE NUMBER IS 0.":A$ = "ZERO": GOSUB 500: GOTO 390
180 FOR I = 1 TO LEN(N$): IF ASC( MID$ (N$,I,1)) <48 OR ASC( MID$ (N$,I,1)) >57 THEN CALL 65338: GOTO 140
190 NEXT I: IF LEN(N$) >4 THEN CALL 65338: GOTO 140
200 IF VAL(N$) = 0 THEN CALL 65338: GOTO 140
210 IF LEFT$(N$,1) = "0" THEN N$ = MID$ (N$,2): GOTO 210
220 GOTO 250
230 N% = INT(5000 * RND(1)): IF N% <1 THEN N% = 1
240 N$ = STR$(N%)
250 J = LEN(N$)
260 PRINT "THE NUMBER IS ";S$;N$: PRINT
270 CALL -958
280 ON J GOTO 370,320,300,290
290 TH$ = TH$( VAL( MID$ (N$,1,1))) +" THOUSAND": REM THOUSANDS NAME
300 IF MID$ (N$,J -2,1) = "0" THEN H$ = "": GOTO 320: REM NO HUNDREDS --GO TO 'TENS'
310 H$ = H$( VAL( MID$ (N$,J -2,1))) +" HUNDRED": REM NAME OF THE HUNDREDS NUMBER
320 IF MID$ (N$,J -1,1) = "0" THEN T$ = "": GOTO 370: REM NO 'TENS' VALUE
330 IF MID$ (N$,J -1,1) < >"1" THEN 350: REM SKIP THE 'TEENS'
340 T$ = T$( VAL( MID$ (N$,J,1))):U$ = "": GOTO 380: REM 'TEEN' VALUE --NO UNITS-PRINT IT OUT
350 T$ = T1$( VAL( MID$ (N$,J -1,1))): GOTO 370: REM THE TENS DIGIT THEN TO THE UNITS
360 IF MID$ (N$,J -1,1) = "0" THEN T$ = "": GOTO 380: REM NO 'TENS'-- DO UNITS
370 U$ = H$( VAL( MID$ (N$,J,1))): REM NAME OF UNITS DIGIT
380 A$ = S1$ +TH$ +H$ +T$ +U$: GOSUB 500
390 VTAB 23: PRINT "RETURN TO CONTINUE-ESCAPE TO QUIT";: GET X$: POKE -16368,0
400 IF X$ = CHR$(27) THEN END
410 GOTO 140
420 DATA " ONE"," TWO"," THREE"," FOUR"," FIVE"," SIX"," SEVEN"," EIGHT"," NINE": REM THOUSANDS, HUNDREDS AND UNITS
430 DATA " TEN"," ELEVEN"," TWELVE"," THIRTEEN"," FOURTEEN"," FIFTEEN"," SIXTEEN"," SEVENTEEN"," EIGHTEEN"," NINETEEN": REM TEENS
440 DATA " TWENTY"," THIRTY"," FORTY"," FIFTY"," SIXTY"," SEVENTY"," EIGHTY"," NINETY": REM 'TENS'
450 REM ******************
460 REM * *
470 REM * TEXT FORMATTER *
480 REM * *
490 REM ******************
500 IF NC = 0 THEN NC = 40:MC = 40
510 IF MC <NC THEN MC = MC +40: GOTO 510
520 LM = INT((MC -NC)/2) +1
530 IF LEFT$(A$,1) = " " THEN A$ = MID$ (A$,2): GOTO 530
540 IF LEN(A$) < = NC THEN 590
550 Y$ = A$: FOR J1 = NC +1 TO 1 STEP -1: IF MID$ (Y$,J1,1) = " " THEN 570
560 NEXT :J1 = NC +1
570 A$ = LEFT$(Y$,J1 -1): GOSUB 590: IF J1 >0 THEN A$ = MID$ (Y$,J1)
580 GOTO 530
590 HTAB LM: PRINT A$;: IF LEN(A$) < >MC THEN PRINT