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+128<E THEN Z=Z+128:GOTO 820
990 IF C=62 AND Z+1<E THEN Z=Z+1:GOTO 820
1000 IF C=60 AND Z>B THEN Z=Z-1:GOTO 820
1010 GOTO 820
1020 '*****cursor up routine
1030 IF Z-128<B THEN 820
1040 IF C1<>C 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-1<B THEN 820
1300 IF C1<>C 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