This is the software listing for a sign that will display four lines of text. CLS : PRINT "Printer port sign, Copyright 1999 BY Robert J Davis" 'INPUT "Use Printer Port Number: ", lpt 'Hardcoded to lpt2 for higher speed - needed for a 486. 'Make these changes for using other printer ports; IF lpt = 2 THEN dout = &H378: cout = &H37A: cin = &H379 IF lpt = 1 THEN dout = &H3BC: cout = &H3BE: cin = &H3BD IF lpt = 3 THEN dout = &H278: cout = &H27A: cin = &H279 PRINT "Press q to quit displaying sign ----------"; "" INPUT "What do you want line 1 to say? ", line1$ INPUT "What do you want line 2 to say? ", line2$ INPUT "What do you want line 3 to say? ", line3$ INPUT "What do you want line 4 to say? ", line4$ new = 1 getline: IF new > 300 THEN new = 1 IF new = 1 THEN message$ = line1$ IF new = 100 THEN message$ = line2$ IF new = 200 THEN message$ = line3$ IF new = 300 THEN message$ = line4$ DIM array, byte(50) FOR l = 1 TO 10 letter$ = MID$(message$, l, 1) letter$ = UCASE$(letter$) SELECT CASE letter$ CASE IS = "A": RESTORE a CASE IS = "B": RESTORE b CASE IS = "C": RESTORE c CASE IS = "D": RESTORE d CASE IS = "E": RESTORE e CASE IS = "F": RESTORE f CASE IS = "G": RESTORE g CASE IS = "H": RESTORE h CASE IS = "I": RESTORE i CASE IS = "J": RESTORE j CASE IS = "K": RESTORE k CASE IS = "L": RESTORE l CASE IS = "M": RESTORE m CASE IS = "N": RESTORE n CASE IS = "O": RESTORE O CASE IS = "P": RESTORE p CASE IS = "Q": RESTORE q CASE IS = "R": RESTORE r CASE IS = "S": RESTORE s CASE IS = "T": RESTORE t CASE IS = "U": RESTORE u CASE IS = "V": RESTORE v CASE IS = "W": RESTORE w CASE IS = "X": RESTORE x CASE IS = "Y": RESTORE y CASE IS = "Z": RESTORE z CASE IS = "1": RESTORE 1 CASE IS = "2": RESTORE 2 CASE IS = "3": RESTORE 3 CASE IS = "4": RESTORE 4 CASE IS = "5": RESTORE 5 CASE IS = "6": RESTORE 6 CASE IS = "7": RESTORE 7 CASE IS = "8": RESTORE 8 CASE IS = "9": RESTORE 9 CASE IS = "0": RESTORE O CASE IS = "-": RESTORE minus CASE IS = "+": RESTORE plus CASE IS = "=": RESTORE equal CASE IS = "<": RESTORE less CASE IS = ">": RESTORE great CASE IS = "#": RESTORE num CASE IS = "^": RESTORE up CASE IS = "~": RESTORE down CASE IS = "?": RESTORE ques CASE IS = "*": RESTORE star CASE IS = "!": RESTORE excl CASE IS = " ": RESTORE blank CASE IS = ":": RESTORE colon CASE ELSE: RESTORE blank END SELECT READ byte(0 + l) READ byte(10 + l) READ byte(20 + l) READ byte(30 + l) READ byte(40 + l) NEXT l start: IF INKEY$ = "q" THEN END OUT &H37A, 7: OUT &H37A, 3 'reset FOR a = 1 TO 50 OUT &H378, byte(a) IF a MOD 10 = 0 THEN OUT &H37A, 2: OUT &H37A, 0 'next column FOR t = 1 TO 50: NEXT t 'delay to display (50 = 486) OUT &H37A, 2: OUT &H37A, 0 'next column END IF OUT &H37A, 3: OUT &H37A, 2 'next byte NEXT a new = new + 1 IF new MOD 100 = 0 THEN GOTO getline GOTO start END a: DATA 003,237,238,237,003 b: DATA 000,118,118,118,137 c: DATA 129,126,126,126,189 d: DATA 000,126,126,126,129 e: DATA 000,118,118,118,126 f: DATA 000,246,246,246,254 g: DATA 129,126,126,094,157 h: DATA 000,247,247,247,000 i: DATA 255,126,000,126,255 j: DATA 159,127,127,127,128 k: DATA 000,231,219,189,126 l: DATA 000,127,127,127,127 m: DATA 000,253,251,253,000 n: DATA 000,249,231,159,000 O: DATA 129,126,126,126,129 p: DATA 000,246,246,246,249 q: DATA 129,126,126,062,001 r: DATA 000,230,214,182,121 s: DATA 121,118,118,118,142 t: DATA 254,254,000,254,254 u: DATA 128,127,127,127,128 v: DATA 240,207,063,207,240 w: DATA 192,063,207,063,192 x: DATA 126,145,231,145,126 y: DATA 252,243,015,243,252 z: DATA 030,078,102,114,120 1 : DATA 255,125,000,127,255 2 : DATA 030,110,110,110,113 3 : DATA 118,118,118,118,137 4 : DATA 240,247,247,000,247 5 : DATA 112,118,118,118,142 6 : DATA 129,118,118,118,142 7 : DATA 254,254,254,014,240 8 : DATA 137,118,118,118,137 9 : DATA 249,246,246,054,193 star: DATA 213,227,128,227,213 excl: DATA 255,064,064,255,255 blank: DATA 255,255,255,255,255 great: DATA 255,190,221,235,247 less: DATA 255,247,235,221,190 equal: DATA 255,235,235,235,255 up: DATA 247,251,253,251,247 down: DATA 247,239,223,239,247 minus: DATA 247,247,247,247,247 plus: DATA 247,247,193,247,247 num: DATA 235,193,235,193,235 ques: DATA 254,078,238,238,241 colon: DATA 255,153,153,255,255 This is the software listing for a sign that displays a countdown to midnight. This version was written for and tested on New Years eve December 31 1999. Note that much of the code is the same as the previous version. CLS : PRINT "Printer port sign, Copyright 1999 BY Robert J Davis" PRINT "press q to quit" 'INPUT "Use Printer Port Number: ", lpt 'Hardcoded to lpt2 for higher speed - needed for a 486. 'Make these changes for using other printer ports; IF lpt = 2 THEN dout = &H378: cout = &H37A: cin = &H379 IF lpt = 1 THEN dout = &H3BC: cout = &H3BE: cin = &H3BD IF lpt = 3 THEN dout = &H278: cout = &H27A: cin = &H279 newtime: new = 1 hours$ = STR$(23 - VAL(MID$(TIME$, 1, 2))) hours$ = MID$(hours$, 2, 2) IF VAL(hours$) < 10 THEN hours$ = "0" + hours$ minutes$ = STR$(59 - VAL(MID$(TIME$, 4, 2))) minutes$ = MID$(minutes$, 2, 2) IF VAL(minutes$) < 10 THEN minutes$ = "0" + minutes$ seconds$ = STR$(59 - VAL(MID$(TIME$, 7, 2))) seconds$ = MID$(seconds$, 2, 2) IF VAL(seconds$) < 10 THEN seconds$ = "0" + seconds$ message$ = " " + hours$ + ":" + minutes$ + ":" + seconds$ IF hours$ = "00" AND minutes$ = "00" THEN IF seconds$ = "59" OR seconds$ = "58" THEN message$ = "* HAPPY *" IF seconds$ = "57" OR seconds$ = "56" THEN message$ = " NEW YEAR" END IF LOCATE 3, 2: PRINT "TIME: " + TIME$ PRINT "COUNT:" + message$ seconds$ = MID$(TIME$, 7, 2) DIM array, byte(50) FOR l = 1 TO 10 letter$ = MID$(message$, l, 1) letter$ = UCASE$(letter$) SELECT CASE letter$ CASE IS = "A": RESTORE a CASE IS = "B": RESTORE b CASE IS = "C": RESTORE c CASE IS = "D": RESTORE d CASE IS = "E": RESTORE e CASE IS = "F": RESTORE f CASE IS = "G": RESTORE g CASE IS = "H": RESTORE h CASE IS = "I": RESTORE i CASE IS = "J": RESTORE j CASE IS = "K": RESTORE k CASE IS = "L": RESTORE l CASE IS = "M": RESTORE m CASE IS = "N": RESTORE n CASE IS = "O": RESTORE O CASE IS = "P": RESTORE p CASE IS = "Q": RESTORE q CASE IS = "R": RESTORE r CASE IS = "S": RESTORE s CASE IS = "T": RESTORE t CASE IS = "U": RESTORE u CASE IS = "V": RESTORE v CASE IS = "W": RESTORE w CASE IS = "X": RESTORE x CASE IS = "Y": RESTORE y CASE IS = "Z": RESTORE z CASE IS = "1": RESTORE 1 CASE IS = "2": RESTORE 2 CASE IS = "3": RESTORE 3 CASE IS = "4": RESTORE 4 CASE IS = "5": RESTORE 5 CASE IS = "6": RESTORE 6 CASE IS = "7": RESTORE 7 CASE IS = "8": RESTORE 8 CASE IS = "9": RESTORE 9 CASE IS = "0": RESTORE O CASE IS = "-": RESTORE minus CASE IS = "+": RESTORE plus CASE IS = "=": RESTORE equal CASE IS = "<": RESTORE less CASE IS = ">": RESTORE great CASE IS = "#": RESTORE num CASE IS = "^": RESTORE up CASE IS = "~": RESTORE down CASE IS = "?": RESTORE ques CASE IS = "*": RESTORE star CASE IS = "!": RESTORE excl CASE IS = " ": RESTORE blank CASE IS = ":": RESTORE colon CASE ELSE: RESTORE blank END SELECT READ byte(0 + l) READ byte(10 + l) READ byte(20 + l) READ byte(30 + l) READ byte(40 + l) NEXT l start: IF INKEY$ = "q" THEN END OUT &H37A, 7: OUT &H37A, 3 'reset FOR a = 1 TO 50 OUT &H378, byte(a) IF a MOD 10 = 0 THEN OUT &H37A, 2: OUT &H37A, 0 'next column FOR t = 1 TO 300: NEXT t 'delay to display (50 = 486) OUT &H37A, 2: OUT &H37A, 0 'next column END IF OUT &H37A, 3: OUT &H37A, 2 'next byte NEXT a IF seconds$ <> MID$(TIME$, 7, 2) THEN GOTO newtime GOTO start END a: DATA 003,237,238,237,003 b: DATA 000,118,118,118,137 c: DATA 129,126,126,126,189 d: DATA 000,126,126,126,129 e: DATA 000,118,118,118,126 f: DATA 000,246,246,246,254 g: DATA 129,126,126,094,157 h: DATA 000,247,247,247,000 i: DATA 255,126,000,126,255 j: DATA 159,127,127,127,128 k: DATA 000,231,219,189,126 l: DATA 000,127,127,127,127 m: DATA 000,253,251,253,000 n: DATA 000,249,231,159,000 O: DATA 129,126,126,126,129 p: DATA 000,246,246,246,249 q: DATA 129,126,126,062,001 r: DATA 000,230,214,182,121 s: DATA 121,118,118,118,142 t: DATA 254,254,000,254,254 u: DATA 128,127,127,127,128 v: DATA 240,207,063,207,240 w: DATA 192,063,207,063,192 x: DATA 126,145,231,145,126 y: DATA 252,243,015,243,252 z: DATA 030,078,102,114,120 1 : DATA 255,125,000,127,255 2 : DATA 030,110,110,110,113 3 : DATA 118,118,118,118,137 4 : DATA 240,247,247,000,247 5 : DATA 112,118,118,118,142 6 : DATA 129,118,118,118,142 7 : DATA 254,254,254,014,240 8 : DATA 137,118,118,118,137 9 : DATA 249,246,246,054,193 star: DATA 213,227,128,227,213 excl: DATA 255,064,064,255,255 blank: DATA 255,255,255,255,255 great: DATA 255,190,221,235,247 less: DATA 255,247,235,221,190 equal: DATA 255,235,235,235,255 up: DATA 247,251,253,251,247 down: DATA 247,239,223,239,247 minus: DATA 247,247,247,247,247 plus: DATA 247,247,193,247,247 num: DATA 235,193,235,193,235 ques: DATA 254,078,238,238,241 colon: DATA 255,153,153,255,255