70 lines
3.0 KiB
Plaintext
70 lines
3.0 KiB
Plaintext
REM CONSTANTS
|
|
100 TWO% = INT ( VAL ("2"))
|
|
REM NOT IS A "LOGICAL" OPERATOR, A NON-ARITHMETIC OPERATOR
|
|
110 UN% = NOT FALSE%
|
|
REM MSG$ = "PRESS CTRL+C THEN RETURN FOR END-OF-TEXT"
|
|
REM BUT NEED THE HIGH BIT SET, SO ASSIGN MSG$ THE TEDIOUS WAY
|
|
111 R$ = CHR$ ( INT ( VAL ("210")))
|
|
112 E$ = CHR$ ( INT ( VAL ("197")))
|
|
113 S$ = CHR$ ( INT ( VAL ("211")))
|
|
114 SPACE$ = CHR$ ( INT ( VAL ("160")))
|
|
115 C$ = CHR$ ( INT ( VAL ("195")))
|
|
116 T$ = CHR$ ( INT ( VAL ("212")))
|
|
117 N$ = CHR$ ( INT ( VAL ("206")))
|
|
118 F$ = CHR$ ( INT ( VAL ("198")))
|
|
119 HYPHEN$ = CHR$ ( INT ( VAL ("173")))
|
|
120 MSG$ = CHR$ ( INT ( VAL ("208"))) + R$ + E$ + S$ + S$ + SP$
|
|
121 MSG$ = MSG$ + C$ + T$ + R$ + CHR$ ( INT ( VAL ("204"))) + CHR$ ( INT ( VAL ("171"))) + C$ + SP$
|
|
122 MSG$ = MSG$ + T$ + CHR$ ( INT ( VAL ("200"))) + E$ + N$ + SP$
|
|
123 MSG$ = MSG$ + R$ + E$ + T$ + CHR$ ( INT ( VAL ("213"))) + R$ + N$ + SP$
|
|
124 MSG$ = MSG$ + F$ + CHR$ ( INT ( VAL ("207"))) + R$ + SP$
|
|
125 MSG$ = MSG$ + E$ + N$ + CHR$ ( INT ( VAL ("196"))) + HY$ + CHR$ ( INT ( VAL ("207"))) + F$ + HY$
|
|
126 MSG$ = MSG$ + T$ + E$ + CHR$ ( INT ( VAL ("216"))) + T$
|
|
REM OUTPUT THE MESSAGE TO THE TOP OF THE TEXT SCREEN
|
|
130 IT$ = "12345678901234567890123"
|
|
140 TEXT : HOME : VTAB TWO%: POKE 34,UN%
|
|
REM + IS A "STRING" OPERATOR, A NON-ARITHMETIC OPERATOR WHEN USED WITH STRINGS FOR CONCATENATION
|
|
150 IT$ = IT$ + "."
|
|
160 P% = INT ( VAL ("10" + STR$ ( LEN (IT$))))
|
|
170 POKE P%, INT ( ASC ( LEFT$ (MSG$,UN%)))
|
|
180 MSG$ = MID$ (MSG$,TWO%)
|
|
190 IF LEN (MSG$) GOTO 150
|
|
REM READ STDIN
|
|
200 ONERR GOTO 500"END OF DATA?
|
|
210 INPUT "";STD$
|
|
220 L% = INT ( LEN (STD$))
|
|
230 IF NOT L% GOTO 210"READ NEXT LINE IF EMPTY
|
|
250 IT$ = BIGGEST$
|
|
260 COMPARE$ = STD$
|
|
REM COMPARE WITH LONGEST STRING
|
|
270 IF INT ( LEN (COMPARE$)) GOTO 300"DECREMENT
|
|
280 IF INT ( LEN (IT$)) GOTO 210"READ NEXT LINE IF LESS THAN LONGEST STRING
|
|
REM EQUAL TO LONGEST STRING
|
|
290 RESULT$ = RESULT$ + CHR$ (INT ( VAL ("13"))) + STD$: GOTO 210"READ NEXT LINE
|
|
REM REMOVE A CHARACTER FROM BOTH IF THEY STILL HAVE LENGTH
|
|
300 IF INT ( LEN (IT$)) THEN IT$ = MID$ (IT$,TWO%):COMPARE$ = MID$ (COMPARE$,TWO%): GOTO 270"COMPARE AGAIN
|
|
REM GREATER THAN LONGEST STRING
|
|
310 BIGGEST$ = STD$
|
|
320 RESULT$ = BIGGEST$
|
|
330 GOTO 210"READ NEXT LINE
|
|
REM CATCH ERROR
|
|
500 POKE INT ( VAL ("216")),ZERO%
|
|
510 E% = INT ( PEEK ( INT ( VAL ("222"))))
|
|
REM CLEAR THE MESSAGE FROM THE TEXT SCREEN
|
|
520 V% = INT ( PEEK ( INT ( VAL ("37"))))
|
|
530 TEXT : VTAB UN%: CALL INT ( VAL ("-868"))
|
|
540 VTAB V%: CALL INT ( VAL ("-912"))
|
|
REM ERROR CODE 255
|
|
550 IT$ = "12345678901234567"
|
|
560 IT$ = IT$ + IT$ + IT$
|
|
570 IT$ = IT$ + IT$ + IT$ + IT$ + IT$
|
|
580 COMPARE$ = MID$ (IT$,UN%,E%)
|
|
REM COMPARE ERROR CODE WITH 255
|
|
590 IF INT ( LEN (COMPARE$)) GOTO 610"DECREMENT
|
|
600 RESUME
|
|
REM REMOVE A CHARACTER FROM THE ITERATOR
|
|
610 IT$ = MID$ (IT$,TWO%)
|
|
REM DONE? IF NOT DONE REMOVE A CHARACTER FROM THE ERROR CODE
|
|
620 IF INT ( LEN (IT$)) THEN COMPARE$ = MID$ (COMPARE$,TWO%): GOTO 590"COMPARE AGAIN
|
|
630 PRINT RESULT$
|