DECLARE SUB ExeC (oof$) DECLARE SUB UnloadFont () DECLARE SUB LoadFont (f$) DECLARE SUB PRINT2 (t$, cv!) DECLARE SUB Font (t$, cl!) DECLARE SUB Errorr (Msg$) DECLARE FUNCTION ReadLn$ (ln!) DECLARE SUB Comport (Port$) DECLARE SUB ClrBot () DECLARE SUB Corr (n$) DECLARE SUB ReadKey (prm$, t$, chrs!, brd$, rd!) DECLARE FUNCTION GetPrmt$ (pt$) DIM SHARED ENV(1 TO 500) AS STRING DIM SHARED ENV1(1 TO 500) AS STRING DIM SHARED mxenv AS INTEGER DIM SHARED wt$ DIM SHARED LastTyped AS STRING DIM SHARED Lstln AS INTEGER DIM SHARED HRes AS INTEGER DIM SHARED txt(255) AS STRING DIM SHARED DFnt UnloadFont LoadFont "C:\ASCIN.FNT" SCREEN 12 HRes = 1 DFnt = 1 CONST ver$ = "1.00" Lstln = 30 PRINT PRINT2 " RK-DOS Version " + ver$, 15 PRINT ENV(1) = "$P$G" ENV1(1) = "PATH" mxenv = 1 wt$ = "C:\" nn = 0 10 ReadKey GetPrmt(ENV(1)), cmd$, 70, Msg$, nn cmd$ = LTRIM$(cmd$) IF cmd$ = "" GOTO 10 IF MID$(cmd$, 1, INSTR(cmd$, " ")) = "" THEN ff$ = cmd$: cmdlne$ = "" ELSE ff$ = MID$(cmd$, 1, INSTR(cmd$, " ") - 1): cmdlne$ = MID$(cmd$, INSTR(cmd$, " ") + 1, LEN(cmd$) - INSTR(cmd$, " ")) IF UCASE$(ff$) = "EXIT" THEN UnloadFont: END IF UCASE$(ff$) = "CLS" THEN CLS : GOTO 10 IF UCASE$(ff$) = "PROMPT" THEN ENV(1) = cmdlne$: GOTO 10 IF UCASE$(ff$) = "WAIT" THEN nn = 0: GOTO 10 IF UCASE$(ff$) = "NOWAIT" THEN IF cmdlne$ = "" THEN PRINT2 "Syntax: NOWAIT msg", 7: PRINT : GOTO 10 ELSE nn = 1: Corr cmdlne$: Msg$ = cmdlne$: GOTO 10 IF UCASE$(ff$) = "DOS" THEN IF cmdlne$ = "" THEN PRINT2 "Syntax: DOS dos_prog", 7: PRINT : GOTO 10 ELSE ClrBot: SHELL (cmdlne$): GOTO 10 IF UCASE$(ff$) = "COM_ON" THEN IF cmdlne$ = "" THEN PRINT2 "Syntax: COM_ON comport#", 7: PRINT : GOTO 10 ELSE Comport cmdlne$: GOTO 10 IF UCASE$(ff$) = "LINES" THEN IF cmdlne$ <> "" AND (VAL(cmdlne$) = 25 OR VAL(cmdlne$) = 43 OR VAL(cmdlne$) = 50) THEN WIDTH 80, VAL(cmdlne$): Lstln = VAL(cmdlne$): HRes = 0: GOTO 10 ELSE PRINT2 "Syntax: LINES {25,43,50}", 7: PRINT : GOTO 10 IF UCASE$(ff$) = "LOWRES" THEN Lstln = 25: SCREEN 0: HRes = 0: GOTO 10 IF UCASE$(ff$) = "HIRES" AND HRes = 0 THEN Lstln = 30: SCREEN 12: HRes = 1: GOTO 10 IF UCASE$(ff$) = "VER" AND HRes = 1 THEN PRINT2 "RK-DOS Version " + ver$, 15: PRINT : PRINT : GOTO 10 IF UCASE$(ff$) = "VER" AND HRes = 0 THEN COLOR 15, 1: PRINT "RK-DOS Version " + ver$: PRINT : COLOR 7, 0: GOTO 10 IF UCASE$(ff$) = "FONT" THEN IF cmdlne$ <> "" AND (cmdlne$ = "ON" OR cmdlne$ = "OFF") THEN ExeC cmdlne$: GOTO 10 ELSE PRINT2 "Syntax: FONT {ON,OFF}", 7: PRINT : GOTO 10 PRINT "Unkown command:"; ff$ PRINT GOTO 10 CMPRT: LINE INPUT #3, f1$ Errorr f1$ RETURN SUB ClrBot x% = CSRLIN: y% = POS(0) LOCATE Lstln, 1, 0 PRINT STRING$(80, 32); LOCATE x%, y%, 1 END SUB SUB Comport (Port$) f$ = "COM" + RTRIM$(LTRIM$(Port$)) + ":9600" OPEN f$ FOR RANDOM SHARED AS #3 COM(VAL(Port$)) ON ON COM(VAL(Port$)) GOSUB CMPRT END SUB SUB Corr (n$) lnn$ = UCASE$(MID$(n$, 1, 1)) FOR q = 2 TO LEN(n$) IF MID$(n$, q, 1) = " " OR MID$(n$, q, 1) = "ÿ" THEN lnn$ = lnn$ + " ": GOTO 122 IF MID$(n$, q, 1) <> "&" AND cptl = 0 THEN lnn$ = lnn$ + LCASE$(MID$(n$, q, 1)) IF cptl = 1 THEN lnn$ = lnn$ + UCASE$(MID$(n$, q, 1)): cptl = 0 IF MID$(n$, q, 1) = "." OR MID$(n$, q, 1) = "&" THEN cptl = 1 122 NEXT q n$ = lnn$ END SUB SUB Errorr (Msg$) IF HRes = 1 THEN EXIT SUB mxy = 19 x% = CSRLIN: y% = POS(0) IF LEN(Msg$) <= mxy THEN DO UNTIL LEN(Msg$) >= mxy + 1: Msg$ = " " + Msg$ + " ": LOOP IF INT(LEN(Msg$) / 2) * 2 = LEN(Msg$) THEN ELSE Msg$ = Msg$ + " " COLOR 0, 7: LOCATE 10, (40 - INT(LEN(Msg$) / 2)) - 4: PRINT "ÚÄÄ"; STRING$(LEN(Msg$), 196); "ÄÄ¿" COLOR 0, 7: LOCATE 11, (40 - INT(LEN(Msg$) / 2)) - 4: PRINT "³ "; STRING$(LEN(Msg$), 32); " ³" COLOR 0, 7: LOCATE 12, (40 - INT(LEN(Msg$) / 2)) - 4: PRINT "³ "; Msg$; " ³" COLOR 0, 7: LOCATE 13, (40 - INT(LEN(Msg$) / 2)) - 4: PRINT "³ "; STRING$(LEN(Msg$), 32); " ³" COLOR 0, 7: LOCATE 14, (40 - INT(LEN(Msg$) / 2)) - 4: PRINT "ÃÄÄ"; STRING$(LEN(Msg$), 196); "ÄÄ´" COLOR 0, 7: LOCATE 15, (40 - INT(LEN(Msg$) / 2)) - 4: PRINT "³ "; STRING$(INT((LEN(Msg$) - mxy) / 2), 32); : COLOR 15, 7: PRINT "<"; : COLOR 0, 7: PRINT " OK "; : COLOR 15, 7: PRINT ">"; : COLOR 0, 7: PRINT " < Help >"; STRING$(INT((LEN(Msg$) - mxy) / 2), 32); " ³" COLOR 0, 7: LOCATE 16, (40 - INT(LEN(Msg$) / 2)) - 4: PRINT "ÀÄÄ"; STRING$(LEN(Msg$), 196); "ÄÄÙ" LOCATE 15, (40 - INT(LEN(Msg$) / 2)) + 2 Top: i$ = INKEY$ IF i$ = "" THEN GOTO Top IF ASC(i$) = 9 AND mm = 0 THEN COLOR 0, 7: LOCATE 15, (40 - INT(LEN(Msg$) / 2)) - 4: PRINT "³ "; STRING$(INT((LEN(Msg$) - mxy) / 2), 32); : PRINT "< OK > "; : COLOR 15, 7: PRINT "<"; : COLOR 0, 7: PRINT " Help "; : COLOR 15, 7: PRINT ">"; : COLOR 0, 7: PRINT STRING$(INT((LEN(Msg$) - mxy) / 2), 32); " ³": mm = 1: LOCATE 15, (40 - INT(LEN(Msg$) / 2)) + 13: GOTO Top IF ASC(i$) = 9 AND mm = 1 THEN COLOR 0, 7: LOCATE 15, (40 - INT(LEN(Msg$) / 2)) - 4: PRINT "³ "; STRING$(INT((LEN(Msg$) - mxy) / 2), 32); : COLOR 15, 7: PRINT "<"; : COLOR 0, 7: PRINT " OK "; : COLOR 15, 7: PRINT ">"; : COLOR 0, 7: PRINT " < Help >"; STRING$(INT((LEN(Msg$) - mxy) / 2), 32); " ³": mm = 0: LOCATE 15, (40 - INT(LEN(Msg$) / 2)) + 2: GOTO Top IF ASC(i$) = 13 THEN ELSE GOTO Top LOCATE x%, y%: COLOR 7, 0 END SUB SUB ExeC (oof$) IF oof$ = "ON" THEN DFnt = 1 IF oof$ = "OFF" THEN DFnt = 0 END SUB SUB Font (t$, cl) IF cl = -1 THEN ELSE f$ = "C" + LTRIM$(RTRIM$(STR$(cl))): DRAW "X" + VARPTR$(f$) IF txt(32) = "" THEN LOCATE 1, 1: PRINT "System Error. Unable to continue.": END FOR qww = 1 TO LEN(t$) IF ASC(MID$(t$, qww, 1)) = 0 THEN DRAW "X" + VARPTR$(txt(32)) ELSE DRAW "X" + VARPTR$(txt(ASC(MID$(t$, qww, 1)))): DRAW "BL": GOTO 1011 1011 NEXT qww END SUB FUNCTION GetPrmt$ (pt$) FOR q = 1 TO LEN(pt$) IF MID$(pt$, q, 1) = "$" AND UCASE$(MID$(pt$, q + 1, 1)) = "P" THEN q = q + 1: mm$ = mm$ + wt$: GOTO nextl IF MID$(pt$, q, 1) = "$" AND UCASE$(MID$(pt$, q + 1, 1)) = "G" THEN q = q + 1: mm$ = mm$ + ">": GOTO nextl IF MID$(pt$, q, 1) = "$" AND UCASE$(MID$(pt$, q + 1, 1)) = "_" THEN q = q + 1: mm$ = mm$ + CHR$(13): GOTO nextl IF MID$(pt$, q, 1) = "$" AND UCASE$(MID$(pt$, q + 1, 1)) = "T" THEN q = q + 1: mm$ = mm$ + TIME$: GOTO nextl IF MID$(pt$, q, 1) = "$" AND UCASE$(MID$(pt$, q + 1, 1)) = "D" THEN q = q + 1: mm$ = mm$ + DATE$: GOTO nextl mm$ = mm$ + MID$(pt$, q, 1) nextl: NEXT q GetPrmt$ = mm$ END FUNCTION SUB LoadFont (f$) OPEN f$ FOR INPUT AS #1: t = 0 DO UNTIL EOF(1) OR t = 127 LINE INPUT #1, a$ txt(t) = a$ t = t + 1 LOOP CLOSE 1 END SUB SUB PRINT2 (t$, cv) IF HRes = 1 AND DFnt = 1 THEN ELSE GOTO 2111 x = -2: y = -2 IF x = -2 THEN x = (POS(0) * 8) - 7: g = -2 IF y = -2 THEN y = CSRLIN * 16: n = -2 d$ = "BM" + LTRIM$(RTRIM$(STR$(x))) + "," + LTRIM$(RTRIM$(STR$(y))) + " C" + LTRIM$(RTRIM$(STR$(cv))) 3 DRAW "X" + VARPTR$(d$) Font t$, cv IF LEN(t$) >= 80 THEN EXIT SUB LOCATE CSRLIN, POS(0) + LEN(t$) 'IF n = -2 AND y < 25 THEN LOCATE CSRLIN + 1, 1 EXIT SUB 2111 COLOR cv PRINT t$; END SUB SUB ReadKey (prm$, t$, chrs, brd$, rd) t$ = "" PRINT2 prm$, 7 DO UNTIL i$ = CHR$(13) OR i$ = CHR$(27) IF q = 3600 THEN IF POS(0) > 1 THEN PRINT : PRINT2 "Computer>" + brd$, 7: q = 0: PRINT2 prm$ + t$, 7: ELSE PRINT "IS2000>"; TAB(10); brd$: : q = 0: PRINT2 prm$ + t$, 7 IF i$ = CHR$(8) THEN IF LEN(t$) = 0 THEN i$ = "": GOTO 60 ELSE t$ = MID$(t$, 1, LEN(t$) - 1): LOCATE CSRLIN, POS(0) - 1: PRINT " "; : LOCATE CSRLIN, POS(0) - 1 i$ = UCASE$(INKEY$) x% = CSRLIN: y% = POS(0) IF TIME$ <> oldtm$ AND HRes = 0 THEN COLOR 15, 1: LOCATE Lstln, 1, 0: PRINT TIME$; STRING$(80 - LEN(TIME$), 32); : COLOR 7, 0: LOCATE x%, y%, 1: oldtm$ = TIME$: IF q < 3600 AND rd = 1 THEN q = q + 1 IF TIME$ <> oldtm$ AND HRes = 1 THEN COLOR 15: LOCATE Lstln, 1, 0: PRINT TIME$ + STRING$(80 - LEN(TIME$), 32); : COLOR 7: LOCATE x%, y%, 1: oldtm$ = TIME$: IF q < 3600 AND rd = 1 THEN q = q + 1 IF i$ = "" THEN GOTO 60 IF i$ = CHR$(0) + "=" THEN GOSUB 1009 oldtm$ = TIME$ q = 0 IF (ASC(i$) > -1 AND ASC(i$) < 32) THEN GOTO 60 IF i$ = CHR$(13) OR i$ = CHR$(27) THEN GOTO 70 IF HRes = 1 THEN PRINT2 UCASE$(i$), 7 IF HRes = 0 THEN PRINT UCASE$(i$); t$ = t$ + i$ IF LEN(t$) >= chrs THEN t$ = MID$(t$, 1, LEN(t$) - 1): LOCATE CSRLIN, POS(0) - 1: PRINT " "; : LOCATE CSRLIN, POS(0) - 1 60 LOOP 70 PRINT2 "", 7 LastTyped = t$ IF CSRLIN = 29 THEN LOCATE CSRLIN + 1, 1: PRINT ELSE LOCATE CSRLIN + 1, 1 EXIT SUB 1009 t$ = t$ + MID$(LastTyped, 1, chrs - LEN(t$) - 1) LOCATE CSRLIN, LEN(prm$) + 1, 1: PRINT2 t$, 7 RETURN END SUB FUNCTION ReadLn$ (ln) FOR q = 1 TO 80 mm$ = mm$ + CHR$(SCREEN(ln, q)) + CHR$(SCREEN(ln, q, 1)) NEXT q ReadLn$ = mm$ END FUNCTION SUB UnloadFont FOR q = 0 TO 255 txt(q) = "" NEXT q END SUB SUB WriteLn (Msg$, ln, bg) x% = CSRLIN: y% = POS(0) IF ln = 0 OR ln > 25 THEN EXIT SUB LOCATE ln, 1, 0 FOR q = 1 TO LEN(Msg$) STEP 2 COLOR ASC(MID$(Msg$, q + 1, 1)), bg PRINT MID$(Msg$, q, 1); NEXT q LOCATE x%, y%, 1 END SUB