DECLARE SUB displayit () DECLARE SUB newstring () DECLARE SUB start () DIM SHARED adr DIM SHARED maxlen start 2 PRINT " " displayit PRINT " " PRINT "1 - to enter new string" PRINT "2 - to quit" a$ = INPUT$(1) SELECT CASE a$ CASE "1" newstring CASE "2" SYSTEM CASE ELSE PRINT "unrecognized command" END SELECT GOTO 2 SUB displayit PRINT "Current CMOS contains: "; OUT &H70, adr l = INP(&H71) IF l > maxlen THEN PRINT "": GOTO 1 COLOR 0, 15 FOR a = 1 TO l OUT &H70, adr + a PRINT CHR$(INP(&H71)); NEXT a COLOR 7, 0 PRINT " " 1 END SUB SUB newstring PRINT " max length |" + SPACE$(maxlen) + "|" INPUT "Enter new string:", a$ IF LEN(a$) > maxlen THEN PRINT "too long, max"; maxlen: GOTO 3 OUT &H70, adr OUT &H71, LEN(a$) FOR b = 1 TO LEN(a$) c = ASC(RIGHT$(LEFT$(a$, b), 1)) OUT &H70, adr + b OUT &H71, c NEXT b 3 END SUB SUB start adr = 83 maxlen = 8 CLS PRINT "Svjatoslav Agejenko" PRINT "svjatoslav@svjatoslav.eu" PRINT "2002.10.07" PRINT " " PRINT "Utility to store max"; maxlen; "character long string in CMOS memory." PRINT "beginning CMOS address: 0x"; HEX$(adr) END SUB