10 PRINT CHR$(26) 20 WHILE A<>32:Z1=Z:READ Z,A:Z=Z1+Z:POKE Z+61440!,A:WEND 30 DATA 0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0 40 DATA 2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,206,0,4,1 50 DATA 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1 60 DATA 2,1,2,1,2,1,2,1,2,1,2,1,2,1,4,0,206,0,4,1,4,13,1,13,1,13 70 DATA 1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13 80 DATA 1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13 90 DATA 1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,5,1,4,0,86,13 100 DATA 33,13,87,0,4,1,4,13,7,21,3,83,1,67,1,82,1,69,1,69,1,78 110 DATA 1,87,1,82,1,73,1,84,1,69,1,82,3,25,9,13,5,1,4,0,86,13,33,13 120 DATA 87,0,4,1,4,13,8,70,1,79,1,82,2,84,1,72,1,69,2,79,1,83,1,66 130 DATA 1,79,1,82,1,78,1,69,2,49,9,13,5,1,4,0,86,13,33,13,87,0 140 DATA 4,1,4,13,33,13,5,1,4,0,86,13,4,98,1,121,2,74,1,97,1,99 150 DATA 1,107,2,87,1,97,1,108,1,114,1,97,1,118,1,101,1,110,2,40 160 DATA 1,67,1,41,2,49,1,57,1,56,1,50,5,13,87,0,4,1,4,13,33,13,5,1 170 DATA 4,0,86,13,11,105,1,110,2,77,1,66,1,65,1,83,1,73,1,67,14,13 180 DATA 87,0,4,1,4,13,33,13,5,1,4,0,86,13,2,50,1,56,1,52,1,48,2,76 190 DATA 1,101,1,105,1,103,1,104,2,82,1,100,1,46,1,44,2,86,1,105 200 DATA 1,99,1,116,1,111,1,114,1,105,1,97,1,44,2,66,1,46,1,67,1,46 210 DATA 2,13,87,0,4,1,4,13,10,40,1,54,1,48,1,52,1,41,2,51,1,56 220 DATA 1,50,2,54,1,49,1,54,1,48,10,13,5,1,4,0,86,13,33,13,87,0 230 DATA 4,1,4,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13 240 DATA 1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13 250 DATA 1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13 260 DATA 1,13,5,1,4,0,206,0,4,1,2,1,2,1,2,1,2,1,2,80,1,82,1,69,1,83 270 DATA 1,83,2,65,1,78,1,89,2,75,1,69,1,89,2,84,1,79,2,66,1,69 280 DATA 1,71,1,73,1,78,3,1,2,1,2,1,2,1,2,1,4,0,206,0,2,0,2,0,2,0 290 DATA 2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0 300 DATA 2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,32,32 310 Y$=INPUT$(1) 320 '*****SCREENWRITER PROGRAM WITH GRAPHICS FOR THE OSBORNE 1 330 '***** 340 '***** written by Jack Walraven (Oct 82) 350 '***** 360 '*****2840 Leigh Rd, Victoria, B.C., Canada (604) 474 1750 370 '***** 380 PRINT CHR$(26) 390 PRINT CHR$(26) 400 CLEAR 410 DIM PR$(100) 420 B=61440!:E=64383! 430 Z=B 440 C=83 450 RM=999:LM=999 460 SP=32 470 PRINT CHR$(26) 480 PRINT:PRINT 490 PRINT"CURSOR CONTROL AND ALPHA-NUMERICS 500 PRINT"Use the arrow keys to move the cursor to the 510 PRINT"desired position. The cursor will show what 520 PRINT"direction it will move. Use the alpha-numeric 530 PRINT"keys to lay out the screen format and message. 540 PRINT 550 PRINT"GRAPHICS! Use the ESC key to produce the graphic 560 PRINT"you desire. Use the TAB key to continue drawing 570 PRINT"that graphic in the direction you indicated with 580 PRINT"the arrow keys. 590 PRINT"When your design is completed, hit the ENTER 600 PRINT"key. The program will then read (PEEK) your 610 PRINT"design in video memory, write a BASIC program 620 PRINT"and save it in a sequential file, which you 630 PRINT"can then MERGE with any of your programs (just 640 PRINT"make sure that the line numbers don't overlap). 650 PRINT:PRINT:PRINT"press any key to begin 660 Y$=INPUT$(1) 670 PRINT CHR$(26) 680 INPUT "ENTER THE BEGINNING LINE NUMBER (default is 1): ";LN 690 PRINT CHR$(26) 700 IF LN=0 THEN LN=1 710 INPUT "INCREMENT BETWEEN LINE NUMBERS (default is 1): ";IC 720 PRINT CHR$(26) 730 IF IC =0 THEN IC=1 740 INPUT "FILE NAME without .ext (default is TEST): ";F$ 750 IF F$="" THEN F$="TEST" 760 F$=F$+".BAS" 770 PRINT CHR$(26) 780 '*****remove cursor from screen 790 POKE Z+128,SP 800 POKE Z,C 810 '*****wait for keyboard input 820 A$=INKEY$:IF A$="" THEN 820 830 '*****check if input is arrow key 840 IF A$=CHR$(13) THEN POKE Z,SP:GOTO 1390 850 IF A$=CHR$(11) THEN C=94:GOTO 1030 860 IF A$=CHR$(10) THEN C=118:GOTO 1110 870 IF A$=CHR$(12) THEN C=62:GOTO 1190 880 IF A$=CHR$(8) THEN C=60:GOTO 1290 890 A=ASC(A$) 900 IF X>31 THEN X=0 910 '*****check if input is graphic 920 IF A=27 THEN A=X:X1=X:X=X+1:POKE Z,A:GOTO 820 930 IF A=9 THEN A=X1 940 Z1=Z-61440!:IF C=62 AND (Z1-50)/128=INT((Z1-50)/128) THEN POKE Z,A:GOTO 820 950 IF C=60 AND Z1/128=INT(Z1/128) THEN POKE Z,A:GOTO 820 960 POKE Z,A 970 IF C=94 AND Z-127>B THEN Z=Z-128:GOTO 820 980 IF C=118 AND Z+128B THEN Z=Z-1:GOTO 820 1010 GOTO 820 1020 '*****cursor up routine 1030 IF Z-128C THEN 1070 1050 POKE Z,SP 1060 Z=Z-128 1070 C1=C 1080 POKE Z,C 1090 GOTO 820 1100 '*****cursor down routine 1110 IF Z+128>E GOTO 820 1120 IF C1<>C THEN 1150 1130 POKE Z,SP 1140 Z=Z+128 1150 C1=C 1160 POKE Z,C 1170 GOTO 820 1180 '*****cursor right routine 1190 IF Z+1>E THEN 820 1200 IF C1<>C THEN 1240 1210 Z1=Z-61440!:IF Z1=RM THEN 820 1220 POKE Z,SP 1230 Z=Z+1 1240 C1=C 1250 Z1=Z-61440!:IF (Z1-50)/128=INT((Z1-50)/128) THEN RM=Z1 1260 POKE Z,C 1270 GOTO 820 1280 '*****cursor left routine 1290 IF Z-1C THEN 1340 1310 Z1=Z-61440!:IF Z1=LM THEN 820 1320 POKE Z,SP 1330 Z=Z-1 1340 C1=C 1350 Z1=Z-61440!:IF Z1/128=INT(Z1/128) THEN LM=Z1 1360 POKE Z,C 1370 GOTO 820 1380 '*****read (peek) screen and write BASIC program 1390 CU=1 1400 PR$(CU)=STR$(LN)+" PRINT CHR$(26)":CU=CU+1:LN=LN+IC 1410 PR$(CU)=STR$(LN)+" WHILE A<>32:Z1=Z:READ Z,A:Z=Z1+Z:POKE Z+61440!,A:WEND 1420 CU=CU+1:LN=LN+IC 1430 N2=0 1440 FOR N=0 TO 2816 STEP 128 1450 FOR N1=N TO N+50 1460 Z=N1+61440! 1470 T%=PEEK(Z) 1480 IF T%=32 THEN 1560 1490 POKE N1+61440!,127 1500 Z%=N1-N2 1510 Z$=MID$(STR$(Z%),2):T$=MID$(STR$(T%),2) 1520 IF LEN(PR$)<50 THEN PR$=PR$+Z$+","+T$+",":GOTO 1550 1530 PR$(CU)=STR$(LN)+" DATA "+PR$+Z$+","+T$ 1540 CU=CU+1:LN=LN+IC:PR$="" 1550 N2=N1 1560 NEXT N1 1570 NEXT N 1580 IF PR$="" THEN 1600 1590 PR$(CU)=STR$(LN)+" DATA "+PR$+"32,32" 1600 CU=CU+1:LN=LN+IC 1610 PR$(CU)=STR$(LN)+" Y$=INPUT$(1) 1620 '*****save file to disk 1630 OPEN "O",#1,F$ 1640 FOR N=1 TO CU+1 1650 PRINT #1,PR$(N) 1660 NEXT N 1670 CLOSE #1 1680 PRINT CHR$(26) 1690 PRINT:PRINT "YOUR DESIGN: ";F$;" HAS BEEN SAVED TO DISK. 1700 END N) 1660 NEXT N 1670 CLOSE #1 1680