DECLARE SUB BIGBRDR () DECLARE SUB BORDER () DECLARE SUB CALCBITS (value AS INTEGER, bits AS STRING) DECLARE SUB SHOWBIG (bits AS STRING) DECLARE SUB SHOWBITS (bits AS STRING) CONST BLUE = 1 CONST BLACK = 0 CONST WHITE = 7 CONST HIWHITE = 15 'HIGH INTENSITY WHITE CONST YELLOW = 14 DIM SHARED hourbits AS STRING DIM SHARED minbits AS STRING DIM SHARED secbits AS STRING DIM SHARED hours AS INTEGER DIM SHARED mins AS INTEGER DIM SHARED secs AS INTEGER DIM SHARED onbit AS STRING DIM SHARED offbit AS STRING DIM SHARED bigonbit AS STRING DIM SHARED bigoffbit AS STRING DIM timestring AS STRING DIM newtimestring AS STRING DIM hourstring AS STRING DIM minstring AS STRING DIM secstring AS STRING DIM cursorx AS INTEGER DIM cursory AS INTEGER DIM formatflag AS INTEGER DIM kbhit AS STRING DIM F1 AS STRING REM Û is 219 REM ° is 176 onbit = STRING$(5, 219) offbit = STRING$(5, 176) bigonbit = STRING$(7, 219) bigoffbit = STRING$(7, 176) F1 = CHR$(0) + CHR$(59) formatflag = 1 cursorx = 21 cursory = 37 SCREEN 0, 1 COLOR HIWHITE, BLUE CLS BIGBRDR COLOR YELLOW, BLUE kbhit = INKEY$ WHILE kbhit = "" OR kbhit = F1 DO newtimestring = TIME$ LOOP UNTIL timestring <> newtimestring OR INKEY$ = "" OR INKEY$ = F1 timestring = newtimestring hourstring = LEFT$(timestring, 2) minstring = (MID$(timestring, 4, 2)) secstring = RIGHT$(timestring, 2) hours = VAL(hourstring) mins = VAL(minstring) secs = VAL(secstring) CALCBITS hours, hourbits CALCBITS mins, minbits CALCBITS secs, secbits IF kbhit = F1 THEN CLS IF formatflag = 0 THEN formatflag = 1 BIGBRDR ELSE formatflag = 0 BORDER END IF END IF IF formatflag = 0 THEN LOCATE 2, 14 SHOWBITS (hourbits) LOCATE 8, 14 SHOWBITS (minbits) LOCATE 14, 14 SHOWBITS (secbits) LOCATE cursorx, cursory PRINT SPC(3); USING "##"; hours; PRINT SPC(7); USING "##"; mins; PRINT SPC(7); USING "##"; secs LOCATE cursorx + 1, cursory PRINT SPC(3); IF LEN(HEX$(hours)) < 2 THEN PRINT SPC(1); PRINT HEX$(hours); PRINT SPC(7); IF LEN(HEX$(mins)) < 2 THEN PRINT SPC(1); PRINT HEX$(mins); PRINT SPC(7); IF LEN(HEX$(secs)) < 2 THEN PRINT SPC(1); PRINT HEX$(secs); LOCATE cursorx + 2, cursory PRINT SPC(3); IF LEN(OCT$(hours)) < 2 THEN PRINT SPC(1); PRINT OCT$(hours); PRINT SPC(7); IF LEN(OCT$(mins)) < 2 THEN PRINT SPC(1); PRINT OCT$(mins); PRINT SPC(7); IF LEN(OCT$(secs)) < 2 THEN PRINT SPC(1); PRINT OCT$(secs); LOCATE cursorx + 3, cursory PRINT hourbits; SPC(1); minbits; SPC(1); secbits; SPC(1); ELSE LOCATE 2, 6 SHOWBIG (hourbits) LOCATE 10, 6 SHOWBIG (minbits) LOCATE 18, 6 SHOWBIG (secbits) END IF kbhit = INKEY$ WEND COLOR WHITE, BLACK CLS SYSTEM SUB BIGBRDR DIM i AS INTEGER REM É IS 201 REM Í IS 205 REM » IS 187 REM º IS 186 REM È IS 200 REM ¼ IS 188 REM Ç IS 199 REM ¶ IS 182 REM Ä IS 196 COLOR HIWHITE, BLUE LOCATE 1, 1 PRINT CHR$(201); FOR i = 1 TO 32 PRINT CHR$(205); NEXT i PRINT " Binary Clock "; FOR i = 47 TO 78 PRINT CHR$(205); NEXT i PRINT CHR$(187); FOR i = 2 TO 24 LOCATE i, 1 PRINT CHR$(186); LOCATE i, 80 PRINT CHR$(186); NEXT i LOCATE 25, 1 PRINT CHR$(200); FOR i = 1 TO 33 PRINT CHR$(205); NEXT i PRINT " F1 = Zoom "; FOR i = 45 TO 78 PRINT CHR$(205); NEXT i PRINT CHR$(188); COLOR YELLOW, BLUE END SUB SUB BORDER DIM i AS INTEGER REM Ç IS 199 REM ¶ IS 182 REM Ä IS 196 BIGBRDR COLOR HIWHITE, BLUE LOCATE 19, 1 PRINT CHR$(199); FOR i = 1 TO 78 PRINT CHR$(196); NEXT i PRINT CHR$(182); cursorx = 20 cursory = 18 LOCATE cursorx, cursory PRINT " Hours Minutes Seconds"; LOCATE cursorx + 1, cursory PRINT "Decimal time : "; LOCATE cursorx + 2, cursory PRINT "Hexadecimal time :"; LOCATE cursorx + 3, cursory PRINT "Octal time :"; LOCATE cursorx + 4, cursory PRINT "Binary time :"; COLOR YELLOW, BLUE END SUB SUB CALCBITS (value AS INTEGER, bits AS STRING) DIM filter AS INTEGER DIM bit AS INTEGER DIM i AS INTEGER DIM localbits(1 TO 8) AS STRING bits = "" filter = 1 bit = 0 DO IF value AND filter THEN localbits(8 - bit) = "1" ELSE localbits(8 - bit) = "0" END IF bit = bit + 1 filter = filter * 2 LOOP WHILE bit < 8 FOR i = 1 TO 8 bits = bits + localbits(i) NEXT i END SUB SUB SHOWBIG (bits AS STRING) DIM i AS INTEGER, j AS INTEGER DIM x AS INTEGER, y AS INTEGER x = CSRLIN y = POS(0) FOR i = 1 TO 7 LOCATE x, y FOR j = 1 TO 8 IF MID$(bits, j, 1) = "1" THEN PRINT bigonbit; SPC(2); ELSE COLOR HIWHITE, BLUE PRINT bigoffbit; SPC(2); COLOR YELLOW, BLUE END IF NEXT j x = x + 1 NEXT i END SUB SUB SHOWBITS (bits AS STRING) DIM i AS INTEGER, j AS INTEGER DIM x AS INTEGER, y AS INTEGER x = CSRLIN y = POS(0) FOR i = 1 TO 5 LOCATE x, y FOR j = 1 TO 8 IF MID$(bits, j, 1) = "1" THEN PRINT onbit; SPC(2); ELSE COLOR HIWHITE, BLUE PRINT offbit; SPC(2); COLOR YELLOW, BLUE END IF NEXT j x = x + 1 NEXT i END SUB