IF style$ = "D" OR style$ = "d" THEN style$ = "D": horzchr = 205: ELSE horzchr = 196: style$ = "S"
GOSUB Blankline
PRINT "Position cursor at begining of line...";
GOSUB GetPos
col1 = col: row1 = row
IF k = 27 THEN GOTO cancel
chr = SCREEN(row, col)
IF chr = 179 AND style$ = "S" THEN c1 = 195: ELSE IF chr = 179 AND style$ = "D" THEN c1 = 198: ELSE IF chr = 186 AND style$ = "S" THEN c1 = 199: ELSE IF chr = 186 AND style$ = "D" THEN c1 = 204: ELSE c1 = horzchr
COLOR foreC, backC: PRINT CHR$(c1);
GOSUB Blankline
PRINT "Position cursor at end of line...";
GOSUB GetPos
IF k = 27 THEN GOTO cancel
IF row <> row1 OR col - 1 <= col1 THEN SOUND 550, .5: GOSUB CursErr: GOTO Lin
chr = SCREEN(row, col)
IF chr = 179 AND style$ = "S" THEN c2 = 180: ELSE IF chr = 179 AND style$ = "D" THEN c2 = 181: ELSE IF chr = 186 AND style$ = "S" THEN c2 = 182: ELSE IF chr = 186 AND style$ = "D" THEN c2 = 185: ELSE c2 = horzchr
PRINT "Move cursor to new position, press <ENTER> when ready.";
row2 = row: col2 = col
GOSUB GetPos
IF k = 27 THEN GOTO cancel
IF POS(0) + LEN(text$) - 1 > 80 THEN
SOUND 550, .5: GOSUB Blankline
PRINT "Not enough room, press <ANY KEY> to continue.";
r$ = INPUT$(1): GOTO Movetext
END IF
PCOPY 3, 0
LOCATE row2, col2
COLOR foreC, backC
LOCATE row, col: PRINT text$
GOTO Text2
colr:
GOSUB Blankline
FOR i = 0 TO 15: COLOR i, 0: PRINT USING "## "; i; : NEXT: COLOR 7, 0
LINE INPUT ; " foreground: "; foreC$
IF foreC$ <> "" THEN foreC = VAL(foreC$)
IF foreC > 31 THEN SOUND 550, .5: GOTO colr
GOSUB Blankline
FOR i = 0 TO 7: COLOR 15, i: PRINT USING "## "; i; : NEXT: COLOR 7, 0
LINE INPUT ; " background: "; backC$
IF backC$ <> "" THEN backC = VAL(backC$)
IF backC > 7 THEN SOUND 550, .5: GOTO colr
GOTO Getcommand
Drawing:
GOSUB Blankline
LINE INPUT ; "Enter character or code to draw with. (F1 for list) "; g$
IF g$ = "" THEN GOTO Getcommand
IF g$ = CHR$(255) THEN PCOPY 0, 3: GOTO GraphicList
IF LEN(g$) = 1 AND ASC(g$) < 127 THEN GOTO Drawing2
g = VAL(g$): IF g < 1 OR g > 254 THEN SOUND 550, .5: GOTO Drawing
g$ = CHR$(g)
Drawing2:
GOSUB Blankline
LOCATE 25, 1: COLOR foreC, backC: PRINT g$;
COLOR 7, 0: PRINT " Press <ENTER> to place character, <Esc> to Stop. ";
Drawing3:
GOSUB GetPos
IF k = 27 THEN GOTO Drawing
IF k = 13 THEN COLOR foreC, backC
LOCATE row, col: PRINT g$
GOTO Drawing3
GraphicList:
PCOPY 0, 3
IF Gexist THEN PCOPY 2, 0: GOTO Gexist
colr = 15: CLS
FOR i = 1 TO 22
COLOR colr, 0
LOCATE i, 3
PRINT i + 122; "- "; CHR$(i + 122); " ";
PRINT i + 144; "- "; CHR$(i + 144); " ";
PRINT i + 166; "- "; CHR$(i + 166); " ";
PRINT i + 188; "- "; CHR$(i + 188); " ";
PRINT i + 210; "- "; CHR$(i + 210); " ";
PRINT i + 232; "- "; CHR$(i + 232); " ";
IF colr = 15 THEN colr = 7 ELSE colr = 15
NEXT i
PCOPY 0, 2: Gexist = -1
Gexist:
GOSUB Blankline
LINE INPUT ; "Enter character or code to draw with: "; g$
IF g$ = "" THEN GOTO cancel
IF LEN(g$) = 1 AND ASC(g$) < 127 THEN PCOPY 3, 0: GOTO Drawing2
g = VAL(g$): IF g < 1 OR g > 254 THEN SOUND 550, .5: GOTO Gexist
g$ = CHR$(g): PCOPY 3, 0
GOTO Drawing2
FillArea:
PCOPY 0, 3: GOSUB Blankline
PRINT "Move cursor to upper left corner of area then press enter.";
GOSUB GetPos
IF k = 27 THEN GOTO cancel
LOCATE row, col: PRINT CHR$(218)
row1 = row: col1 = col
GOSUB Blankline
PRINT "Move cursor to lower right corner of area then press enter.";
GOSUB GetPos
IF k = 27 THEN GOTO cancel
LOCATE row, col: PRINT CHR$(217)
IF row - 1 < row1 OR col - 1 <= col1 THEN SOUND 550, .5: GOSUB CursErr: GOTO FillArea
row2 = row: col2 = col
FillColr:
GOSUB Blankline
FOR i = 0 TO 7: COLOR 15, i: PRINT USING "## "; i; : NEXT: COLOR 7, 0
LINE INPUT ; " Fill color: "; EraseC$
IF EraseC$ = "" THEN EraseC = main: ELSE EraseC = VAL(EraseC$)
IF EraseC > 7 THEN SOUND 550, .5: GOTO FillColr
COLOR 7, EraseC
FOR i = row1 TO row2: LOCATE i, col1: PRINT STRING$(col2 - col1 + 1, 32); : NEXT i
GOTO Getcommand
cancel:
PCOPY 3, 0: GOTO Getcommand
FileWork:
PCOPY 0, 3
GOSUB Blankline
PRINT "(S)ave or (L)oad ";
k$ = INPUT$(1)
IF k$ = CHR$(27) THEN GOTO cancel
IF k$ = "S" OR k$ = "s" THEN GOTO SaveScreen
IF k$ = "L" OR k$ = "l" THEN GOTO LoadScreen
SOUND 550, .5: GOTO FileWork
SaveScreen:
FileCanceled = 0
GOSUB Blankline
IF LEN(Tfile$) > 0 THEN PRINT "Use "; Tfile$; " for save ? "; : i$ = INPUT$(1): IF i$ = "Y" OR i$ = "y" THEN File$ = Tfile$: GOTO SaveScreen3
SaveScreen2:
GOSUB Blankline
LINE INPUT ; "Save filename: "; File$
IF File$ = "" THEN GOTO cancel
IF File$ = "?" THEN GOTO Directory
Tfile$ = File$
GOSUB CheckFile: ON ERROR GOTO 0
IF FileCanceled THEN GOTO cancel
SaveScreen3:
PCOPY 3, 0: COLOR 7, 0
LOCATE 25, 1: PRINT STRING$(80, 32);
DEF SEG = &HB800
ON ERROR GOTO DirError
BSAVE File$, 0, &H1000
ON ERROR GOTO 0
Updated = 0
GOTO Getcommand
LoadScreen:
GOSUB Blankline
IF Updated THEN SOUND 550, .5: PRINT "Screen has been edited. Continue with load? (Y/*N) "; : i$ = INPUT$(1): IF i$ = "N" OR i$ = "n" OR i$ = CHR$(13) THEN GOTO cancel
LoadScreen2:
GOSUB Blankline
LINE INPUT ; "Load filename: "; File$
IF File$ = "?" THEN GOTO Directory
IF File$ = "" THEN GOTO cancel
GOSUB Blankline
PRINT "Loading "; File$;
DEF SEG = &HB800
ON ERROR GOTO DirError
OPEN "i", #1, File$: CLOSE 'catch disk i/o errors
BLOAD File$, 0: Tfile$ = File$: Updated = 0
ON ERROR GOTO 0
GOTO Getcommand
CheckFile:
ON ERROR GOTO FileNameOK
OPEN "i", #1, File$: CLOSE : SOUND 550, .5
GOSUB Blankline
PRINT File$; " exists, overwrite it? ";
i$ = INPUT$(1)
IF i$ = "Y" OR i$ = "y" THEN RETURN
FileCanceled = -1
RETURN
FileNameOK:
RESUME FileNameOK2
FileNameOK2:
CLOSE : RETURN
Directory:
ON ERROR GOTO DirError
GOSUB Blankline
LINE INPUT ; "Dir Mask: "; File$
CLS : FILES File$
ON ERROR GOTO 0
IF k$ = "S" OR k$ = "s" THEN GOTO SaveScreen2
IF k$ = "L" OR k$ = "l" THEN GOTO LoadScreen2
GOTO cancel
DirError:
IF ERR = 53 THEN er$ = File$ + " not found. ": RESUME ErrPrint
IF ERR = 61 THEN er$ = "Disk is full. ": RESUME ErrPrint
IF ERR = 62 OR ERR = 54 THEN er$ = File$ + " was not BSAVE'ed. ": RESUME ErrPrint
IF ERR = 64 OR ERR = 52 THEN er$ = File$ + " <- Invalid filespec. ": RESUME ErrPrint
IF ERR = 70 THEN er$ = "Disk is write protected. ": RESUME ErrPrint
IF ERR = 71 THEN er$ = "Disk drive not responding. ": RESUME ErrPrint
IF ERR = 76 THEN er$ = File$ + " <- Invalid path. ": RESUME ErrPrint