1 PRINT CHR$(26):GOSUB 9500:FOR M=1 TO 1000:NEXT M:REM **SETUP ROUTINE** 2 CLEAR :GOTO 18000 3 GOSUB 9100:FOR B=56500! TO 58980!:POKE B,32:NEXT B 45 PRINT CHR$(26) 50 GOSUB 9100 90 GOTO 1800 95 REM **DRAWING ROUTINE** 100 X$=INKEY$ 110 IF X$="4" THEN GOTO 1000 120 IF X$="6" THEN GOTO 1200 130 IF X$="8" THEN GOTO 1400 135 IF X$="5" THEN 1800 137 IF X$="0" THEN PRINT CHR$(26) 140 IF X$="2" THEN GOTO 1600 150 IF X$="" THEN 100 160 IF ASC(X$)=27 THEN GOTO 8000 1000 X=X-1:PRINT FNP$(X,Y);FNG$(I);:GOSUB 9010:GOTO 100 1200 X=X+1: PRINT FNP$(X,Y);FNG$(I);:GOSUB 9010:GOTO 100 1400 Y=Y-1:PRINT FNP$(X,Y);FNG$(I);:GOSUB 9010:GOTO 100 1600 Y=Y+1:PRINT FNP$(X,Y);FNG$(I);:GOSUB 9010:GOTO 100 1800 PRINT FNP$(2,22);"CHARACTER: "; 1810 Y$=INKEY$:IF Y$="" THEN 1810 1820 I=ASC(Y$):PRINT FNP$(14,22);FNG$(I);" "; 1825 IF I=27 THEN GOTO 18000 1830 PRINT FNP$(22,22);" ";:INPUT "X POSITION: ",Z$ 1835 PRINT FNP$(42,22);" ";:INPUT "Y POSITION: ",Q$ 1836 X=VAL(Z$):Y=VAL(Q$):IF ASC(Z$)=27 OR ASC(Q$)=27 THEN GOTO 18000 1837 PRINT FNP$(2,22);" " 1838 PRINT FNP$(X,Y); 1839 GOTO 100 1850 REM **SAVE DRAWING** 1860 REM 8000 PRINT FNP$(5,22);:LINE INPUT "File name (CAPS) to save under: ";FIL$ 8100 PRINT FNP$(5,22);" "; 8180 OPEN "O",1,FIL$+".BAS" 8190 FILE =-1 8200 K=20 8205 IN=1 8210 PRINT #1,"10 PRINT CHR$(26)" 8212 FOR J=49151! TO 52175! STEP 128 8214 FOR I=1 TO 80 8216 OUT 0,65 8218 Z=PEEK(I+J) 8220 OUT 0,1 8238 IF Z=160 OR Z=32 THEN GOTO 8330 8240 X$=STR$(Z) 8250 A$=STR$(I+J) 8255 L$=STR$(K+1) 8260 K$=STR$(K) : K$=MID$(K$,2,LEN(K$)) 8270 P$="POKE":S$=",":O$=":":R$="OUT 0,1":Q$="OUT 0,65" 8280 T$=K$+" "+Q$+O$+P$+A$+S$+X$+O$+R$ 8300 IF NOT FILE THEN 8320 8310 PRINT #1,T$ 8320 K=K+IN:REM INCREMENT LINE NUMBER 8330 NEXT I 8335 NEXT J 8345 PRINT #1,"5000 CHAIN ";CHR$(34);"E-SKETCH";CHR$(34);",50" 8347 IF NOT FILE THEN END 8350 CLOSE:PRINT:PRINT "FILE CLOSED SUCCESSFULLY" 8355 PRINT FNP$(2,22);" "; 8360 GOTO 50 9010 J=(100*Y)+X 9020 POKE 56500!+J,I 9030 RETURN 9100 DEF FNP$(X,Y)=CHR$(27)+"="+CHR$(32+Y)+CHR$(32+X) 9150 DEF FNV(X,Y)=(X+(128*Y)+49151!) 9200 DEF FNG$(I)=CHR$(27)+CHR$(103)+CHR$(I)+CHR$(27)+CHR$(71) 9250 WIDTH 255 9300 RETURN 9400 REM **OPENING SCREEN** 9410 REM 9500 GOSUB 9100 9559 FOR Y=21 TO 2 STEP -1:PRINT FNP$(5,Y);FNG$(118);:NEXT Y 9600 FOR X=5 TO 70:PRINT FNP$(X,2);FNG$(118);:NEXT X 9700 FOR Y=2 TO 21:PRINT FNP$(70,Y);FNG$(118);:NEXT Y 9800 FOR X=70 TO 12 STEP -1:PRINT FNP$(X,21);FNG$(118);:NEXT X 9900 FOR Y=21 TO 5 STEP -1:PRINT FNP$(12,Y);FNG$(118);:NEXT Y 9950 FOR X=12 TO 64:PRINT FNP$(X,5);FNG$(118);:NEXT X 9960 FOR Y=6 TO 18:PRINT FNP$(64,Y);FNG$(118);:NEXT Y 9970 FOR X=63 TO 18 STEP -1:PRINT FNP$(X,18);FNG$(118);:NEXT X 9975 FOR Y=17 TO 8 STEP -1:PRINT FNP$(18,Y);FNG$(118);:NEXT Y 9980 FOR X=19 TO 58:PRINT FNP$(X,8);FNG$(118);:NEXT X 9985 FOR Y=8 TO 15:PRINT FNP$(58,Y);FNG$(118);:NEXT Y 9990 FOR X=58 TO 25 STEP -1:PRINT FNP$(X,15);FNG$(118);:NEXT X 9992 PRINT FNP$(27,11);"Electronic Sketching Pad"; 9994 PRINT FNP$(28,13);FNG$(115);" 1984 by W. vanRiper"; 10000 RETURN 10500 REM **INSTRUCTIONS** 10510 REM 11000 PRINT CHR$(26):PRINT TAB(15);"Instructions for Electronic Sketch Pad" 11010 PRINT TAB(15);"**************************************" 11020 PRINT 11030 PRINT TAB(10);"Basically, this program lets you draw pictures on the screen using" 11040 PRINT TAB(10);"graphic characters:" 11045 PRINT 11050 PRINT TAB(10);" ";:FOR E=96 TO 122:PRINT FNG$(E);:NEXT E 11055 PRINT:PRINT 11060 PRINT TAB(10);"and the regular characters:" 11065 PRINT 11070 PRINT TAB(10);" ";:FOR E=33 TO 80:PRINT CHR$(E);:NEXT E 11072 PRINT 11075 PRINT TAB(10);" ";:FOR E=81 TO 95:PRINT CHR$(E);:NEXT E:FOR E=123 TO 126:PRINT CHR$(E);:NEXT E 11080 PRINT:PRINT 11090 PRINT TAB(10);"After these help screens goes away, you'll go back to the menu" 11095 PRINT TAB(10);"which will allow you to draw, save, or retrieve a drawing from" 11100 PRINT TAB(10);"disk storage. To draw, use any of the lower case letters on" 11110 PRINT TAB(10);"the keyboard, which become graphics characters on the screen," 11120 PRINT TAB(10);"or any of the other characters, which stay the same as they always" 11130 PRINT TAB(10);"were. " 11135 PRINT FNP$(22,22);"HIT ANY KEY TO CONTINUE......"; 11137 A$=INKEY$:IF A$="" THEN 11137 11138 PRINT CHR$(26) 11139 PRINT:PRINT 11140 PRINT TAB(10);" What this means is that you can't use the lower case" 11150 PRINT TAB(10);"letters to draw with. Select a character at the prompt in the " 11160 PRINT TAB(10);"lower left corner of the screen. Use the 2,4,6, and 8 keys to" 11170 PRINT TAB(10);"move the letter around. To change characters, hit the 5 key." 11180 PRINT TAB(10);"Hitting the <ESC> key at the CHARACTER prompt takes you back" 11185 PRINT TAB(10);"to the main menu. Hitting the <ESC> key from INSIDE THE " 11187 PRINT TAB(10);"DRAWING will (non-destructively!) save that drawing. This" 11190 PRINT TAB(10);"takes about a minute for most drawings......" 11192 PRINT TAB(10);" Now, after selecting a character, the program asks for " 11193 PRINT TAB(10);"X-POSITION and Y-POSITION - just fill in the numbers." 11194 PRINT TAB(10);" What numbers, you ask? Hit N to see what I mean." 11195 PRINT:PRINT TAB(25);"Hit N....."; 11197 A$=INKEY$:IF A$="" THEN 11197 11198 IF A$="N" OR A$="n" THEN GOSUB 12000 ELSE 11197 11199 GOSUB 13000:PRINT FNP$(20,22);"HIT ANY KEY TO CONTINUE....."; 11200 A$=INKEY$:IF A$="" THEN 11200 11201 PRINT CHR$(26) 11202 PRINT:PRINT:PRINT:PRINT:PRINT TAB(10);"In summary:" 11210 PRINT:PRINT TAB(10);" 5 changes characters at any time and allows you to" 11220 PRINT TAB(10);" jump the cursor to any place on the screen using:" 11222 PRINT:PRINT TAB(20);"X POSITION:" 11224 PRINT TAB(20);"Y POSITION:" 11230 PRINT:PRINT TAB(10);" <ESC> takes you back to the menu from CHARACTER:" 11235 PRINT TAB(10);" or saves the screen you are working on" 11240 PRINT:PRINT:PRINT TAB(10); "Nothing to it. Just try it out. Hitting any key takes" 11250 PRINT TAB(10);"you back to the top and another chance to read these" 11252 PRINT TAB(10);"instructions." 11255 PRINT FNP$(22,22);"HIT ANY KEY TO CONTINUE...."; 11260 A$=INKEY$:IF A$="" THEN 11260 11265 PRINT CHR$(26) 11270 GOTO 18000 12000 FOR X=10 TO 70 STEP 10:PRINT FNP$(X,1);X:NEXT X 12100 FOR Y=1 TO 22:PRINT FNP$(1,Y);Y;:NEXT Y 12200 RETURN 13000 PRINT FNP$(10,17);"For instance: X POSITION 40 and Y POSITION 19 puts the cursor" 13050 PRINT FNP$(34,19);"here: ";FNG$(118); 13100 RETURN 16500 REM **READER SUBROUTINE** 16600 REM 17000 GOSUB 17240 17050 PRINT CHR$(26) 17060 GOSUB 17190 17080 PRINT CHR$(26) 17170 GOTO 100 17190 PRINT FNP$(10,6);"Name of picture to show: "; 17200 LINE INPUT FIL$ 17210 PRINT FNP$(10,8);"Loading memory, please relax a moment....." 17220 CHAIN FIL$ 17230 RETURN 17240 WIDTH 255 17250 DEF FNP$(X,Y)=CHR$(27)+"="+CHR$(32+Y)+CHR$(32+X) 17260 DEF FNG$(A)=CHR$(27)+CHR$(103)+CHR$(A)+CHR$(27)+CHR$(71) 17270 RETURN 17280 RETURN 17900 REM **MENU** 18000 PRINT CHR$(26):GOSUB 17240:GOSUB 20000 18010 PRINT FNP$(20,5);"Electronic Sketch Pad Menu" 18020 PRINT FNP$(15,8);"1. Create new drawings" 18030 PRINT FNP$(15,9);"2. Display and work on an old drawing" 18035 PRINT FNP$(15,10);"3. Instructions" 18040 PRINT FNP$(15,12);"B. Exit to Mbasic" 18050 PRINT FNP$(15,13);"C. Exit to CP/M" 18060 PRINT FNP$(15,18);"Please indicate selection: "; 18070 A$=INKEY$:IF A$="" THEN 18070 18080 IF A$="1" THEN PRINT CHR$(26):GOTO 45 18090 IF A$="2" THEN GOTO 17000 18100 IF A$="B" OR A$="b" THEN PRINT CHR$(26):END 18200 IF A$="C" OR A$="c" THEN PRINT CHR$(26):SYSTEM 18300 IF A$="3" THEN GOTO 11000 ELSE 18060 18400 GOTO 18000 20000 GOSUB 9100 20020 PRINT CHR$(26) 20030 FOR X=7 TO 70 20040 Y=2:C=160:GOSUB 30000 20050 NEXT X 20060 FOR Y=2 TO 20 20070 X=70:C=160:GOSUB 30000 20080 NEXT Y 20090 FOR X=70 TO 7 STEP -1 20100 Y=20:C=160:GOSUB 30000 20110 NEXT X 20120 FOR Y=19 TO 3 STEP -1 20130 X=7:C=160:GOSUB 30000 20140 NEXT Y 20150 RETURN 30000 OUT 0,65 30010 POKE FNV(X,Y),C 30020 OUT 0,1 30030 RETURN 20130 X=7:C=160:GOSUB 30000 20140 NEXT Y 20150 RETURN 30000 OUT 0,65 30010 POKE FNV(X,Y),C