Compucolor.org – Virtual Media

Listing of file='MENU.BAS;01' on disk='vmedia/word_processor_v2.1-sector.ccvf'

5 CLEAR  500
6 PRINT ""
7 GOSUB 60000
8 RESTORE
9 FILE "R",1,"DE",1:DIM DE(20):FOR I= 1TO 20:GET 1,I;DE(I):NEXT I:FILE "C",1
10 PLOT 12:PLOT 3,0,5:PRINT "----------------------------------------------------------------"
20 PLOT 3,15,1:PRINT "WORD PROCESSOR  V2.1 B.HENGST"
21 PLOT 3,31,2:PRINT "SN:372143"
60 PLOT 27,24
65 FOR I= 0TO 9:READ B$(I):NEXT I:DATA "12A","40","5A","74","8E","A8","C2","DC","F6","110"
66 POKE  33289,127
70 DIM C(127)
75 DEF  FN C(X)= SS+ 2* IX+ 128* IY+ X
76 GOSUB 2100
80 FOR I= 0TO 127:READ C(I):NEXT I
81 DATA 0,0,0,13,18,12,0,0,5,0,6,7,4,8,0,0,0,19,0,1
82 DATA 14,0,16,0,0,9,10,0,11,0,0,0,2,2,2,2,2,2,2,2
83 DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
84 DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
85 DATA 2,2,2,2,2,2,2,2,2,2,2,0,0,0,17,0,0,3,3,3
86 DATA 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
87 DATA 3,3,3,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0
120 SS= 24576
140 CU= 6:CD= 31:CL= 0:CR= 63:IX= CL:IY= CU
142 PN= 1:GOSUB 2400
145 GOTO 600
150 PLOT 3,IX,IY:C= CALL (2)
155 IF C> 127GOTO 150
160 ON C(C)GOTO 200,300,400,500,600,700,800,900
165 IF C(C)< 8THEN 180
170 ON C(C)- 8GOTO 1000,1100,1200,1300,1400,1500,1600,3000,1800,1900,2000
180 IF C= 27THEN GOSUB 2200:END
198 GOTO 150
199 END
200 PLOT 3,0,4:PRINT "PAGE NO?";:PN= CALL (2):PN= PN- 48:GOSUB 4000
205 PLOT 27,4:PRINT "WRITE "+ B$(PN)+ " 6300-6FFF":PLOT 27,27:GOTO 150
300 POKE FN C(0),C:POKE FN C(1),2
310 IX= IX+ 1:IF IX> CRTHEN IY= IY+ 1:IX= CL
320 IF IY> CDTHEN IY= IY- 1
330 PLOT 3,IX,IY:GOTO 150
390 Z= INT (RND (0)* 3)+ 1:X= 0:X$= "":FOR I= 1TO LEN (L$):M$= MID$ (L$,I,1)
400 POKE FN C(0),C- 32:POKE FN C(1),3:IX= IX+ 1:IF IX> CRTHEN IY= IY+ 1:IX= CL
410 IF IY> CDTHEN IY= IY- 1
420 PLOT 3,IX,IY:GOTO 150
500 FOR I= CUTO CD:PLOT 3,CL,I:PRINT SPC( CR- CL)" ":NEXT I:IX= CL:IY= CU:PLOT 3,IX,IY:GOTO 150
600 IX= CL:IY= CU:PLOT 3,IX,IY:GOTO 150
700 IY= IY+ 1:IF IY> CDTHEN GOSUB 2600
710 PLOT 3,IX,IY:GOTO 150
800 IX= CL:PLOT 3,CL,IY:PRINT SPC( CR- CL)" ":PLOT 3,IX,IY:GOTO 150
900 IX= CL:IY= IY+ 1:IF IY> CDTHEN IY= IY- 1
910 PLOT 3,IX,IY:GOTO 150
1000 IX= IX+ 1:IF IX> CRTHEN  IX= IX- 1
1010 PLOT 3,IX,IY:GOTO 150
1100 IX= IX- 1:IF IX< CLTHEN IX= IX+ 1
1110 PLOT 3,IX,IY:GOTO 150
1200 IY= IY- 1:IF IY< CUTHEN GOSUB 2700
1210 PLOT 3,IX,IY:GOTO 150
1300 Z= SS+ 2* IX+ 128* IY:Z1= INT (Z/ 256):Z2= Z- Z1* 256:POKE TM+ 19,Z2:POKE TM+ 25,Z1:Z= CALL (0):GOTO 150
1400 PLOT 3,0,4:PRINT "NO OF LINES";:X= CALL (2):GOSUB 4000:X= X- 48:IF X< 1OR X> 26THEN GOTO 150
1410 GOSUB 2500:FOR I= 0TO PW- PN:B$= B$(PW- I):GOSUB 2800:Z= Z+ IY- 6:GOSUB 2900
1420 PLOT 27,4:PRINT "READ "+ B$+ " 6300-6FFF":PLOT 27,27:Z= Z+ X:GOSUB 2900
1430 PLOT 27,4:PRINT "WRITE "+ B$+ " 6300-6FFF":PLOT 27,27:NEXT I
1435 GOSUB 2400:FOR I= 0TO X- 1:IX= CL:PLOT 3,CL,IY+ I:PRINT SPC( CR- CL)" ":NEXT I
1440 GOSUB 4120:GOTO 150
1500 GOSUB 2200
1502 GOSUB 4000:PLOT 3,0,4:PRINT "PAGE NO?";:PN= CALL (2):PN= PN- 48
1505 IF PN> 0AND PN< 10THEN PLOT 3,60,4:PRINT PN:PLOT 27,4:PRINT "READ "+ B$(PN)+ " 6300-6FFF"
1510 PLOT 27,27:GOSUB 4000:GOTO 150
1600 Z= SS+ 2* IX+ 128* IY:Z1= INT (Z/ 256):Z2= Z- Z1* 256:POKE TM+ 60,Z2:POKE TM+ 61,Z1:Z= CALL (1):GOTO 150
1800 PLOT 3,0,4:PRINT "E,H,C,N,P,L,T##":PLOT 3,IX,IY
1805 C= CALL (2):IF C= 84OR C= 76OR C= 69OR C= 72OR C= 67OR C= 78OR C= 80GOTO 1807
1806 GOTO 1805
1807 X= 0:IF C= 84THEN X= 2
1815 GOSUB 4100
1820 IF X< > 0THEN C= CALL (2):IF C< 48OR C> 57THEN 1820
1825 IF X< > 0THEN GOSUB 4100:X= X- 1:GOTO 1820
1830 GOSUB 4000:GOTO 150
1900 PLOT 3,0,4:PRINT "NO OF LINES";:X= CALL (2):GOSUB 4000:X= X- 48:IF X< 1OR X> 26THEN GOTO 150
1910 GOSUB 2500:FOR I= 0TO PW- PN:B$= B$(I+ 1):GOSUB 2800:Z= Z+ IY- 6+ X:GOSUB 2900
1920 PLOT 27,4:PRINT "READ "+ B$+ " 6300-6FFF":PLOT 27,27:Z= Z- X:GOSUB 2900
1930 PLOT 27,4:PRINT "WRITE "+ B$+ " 6300-6FFF":PLOT 27,27:NEXT I
1935 GOSUB 2400
1940 GOSUB 4120:GOTO 150
2000 RESTORE 2030:FOR I= 1TO 6:PLOT 3,0,4:READ X$:PRINT DE(I);" "+ X$;:INPUT Z
2010 IF Z< > 0THEN DE(I)= Z
2020 GOSUB 4000:NEXT I
2030 DATA "LINE LEN","PARA INDENT","LINES PER PAGE","PAGES IN USE","STR RIGHT MAR Y-1,N-2","BAUD RATE"
2050 FILE "R",1,"DE",1
2060 FOR I= 1TO 20:PUT 1,I;DE(I)
2070 NEXT I:FILE  "C",1
2080 GOSUB 2100:GOTO 150
2100 LL= DE(1):PA= DE(2):PL= DE(3):PW= DE(4):RETURN
2200 PLOT 3,0,4:PRINT "SAVE THIS PAGE? Y OR N ";:C= CALL (2):IF C= 89THEN GOSUB 2500:RETURN
2210 IF C< > 78THEN 2200
2230 RETURN
2400 PLOT 3,60,4:PRINT PN:PLOT 27,4:PRINT "READ  "+ B$(PN)+ " 6300-6FFF":PLOT 27,27:RETURN
2500 PLOT 27,4:PRINT "WRITE "+ B$(PN)+ " 6300-6FFF":PLOT 27,27:RETURN
2600 IF PN= PWTHEN IY= IY- 1:RETURN
2610 GOSUB 2500:PN= PN+ 1:GOSUB 2400:IY= CU:GOSUB 4120:RETURN
2700 IF PN= 1THEN IY= IY+ 1:RETURN
2710 GOSUB 2500:PN= PN- 1:GOSUB 2400:IY= CD:GOSUB 4120:RETURN
2800 Z1= LEN (B$):Z= 0:Z2= 1:FOR J= 0TO Z1- 1:X$= MID$ (B$,Z1- J,1)
2810 IF ASC (X$)> 59THEN Z= Z+ Z2* (ASC (X$)- 55)
2820 IF ASC (X$)< 59THEN Z= Z+ Z2* (ASC (X$)- 48)
2830 Z2= Z2* 16:NEXT J:RETURN
2900 B$= "":Z2= Z
2905 Z1= Z2- INT (Z2/ 16)* 16:Z2= INT (Z2/ 16)
2910 IF Z1< 10THEN B$= CHR$ (48+ Z1)+ B$
2920 IF Z1> 9THEN B$= CHR$ (55+ Z1)+ B$
2930 IF Z2= 0THEN RETURN
2940 GOTO 2905
3000 PLOT 27,18,DE(6):EP= SS+ 4094:GOSUB 2200:GOSUB 4000
3005 L$= "":T$= "":GOSUB 3990:II= PN
3007 PC= 0:FOR PN= IITO PW
3008 IF PN< > IITHEN PLOT 3,60,4:PRINT PN:PLOT 27,4:PRINT "READ "+ B$(PN)+ " 6300-6FFF":PLOT 27,27
3009 SP= SS+ 768:IF PN= IITHEN SP= SS+ 2* IX+ 128* IY
3010 FOR PP= SPTO EPSTEP 2
3015 X= PP- SS:Y= INT (X/ 128):PLOT 3,(X- Y* 128)/ 2,Y
3020 C= PEEK (PP):CC= PEEK (PP+ 1):IF CC= 1GOTO 3500
3025 IF C= 32AND WS= 0THEN :T$= "":GOTO 3100
3026 WS= 1
3040 IF C> 64AND C< 91AND CC= 2THEN C= C+ 32
3050 IF C< > 32THEN T$= T$+ CHR$ (C)
3060 IF C< > 32THEN 3100
3065 WS= 0
3070 IF LEN (L$+ " "+ T$)> LL- PXTHEN GOSUB 3900:GOSUB 3990:L$= T$:T$= "":GOTO 3100
3080 IF L$= ""THEN L$= T$:T$= "":GOTO 3100
3090 L$= L$+ " "+ T$:T$= ""
3100 NEXT PP
3105 NEXT PN
3110 GOSUB 3800:PN= II:GOSUB 2400:GOTO 150
3500 IF C= 69THEN 3110
3510 IF C= 67AND CS= 0THEN GOSUB 3800:CS= 1:GOTO 3100
3522 IF C= 67THEN L$= L$+ " "+ T$:GOSUB 3850:GOSUB 3990:L$= "":T$= "":CS= 0:WS= 0:GOTO 3100
3530 IF C= 76THEN GOSUB 3800:GOTO 3100
3540 IF C= 80THEN GOSUB 3800:PX= PA:GOTO 3100
3550 IF C= 72THEN C= 94:GOTO 3025
3560 IF C= 78THEN GOSUB 3800:PLOT 3,0,4:PRINT "NEXT PAGE";:C= CALL (2):GOSUB 4000:PC= 0:GOTO 3100
3570 IF C= 84THEN TS= 1:X= (PEEK (PP+ 2)- 48)* 10+ PEEK (PP+ 4)- 48:PP= PP+ 4:GOTO 4200
3600 GOTO 3100
3800 IF LEN (L$)= 0AND T$= ""THEN GOSUB 3990:RETURN
3802 IF LEN (L$+ " "+ T$)> LL- PXTHEN GOSUB 3900:GOSUB 3990:L$= T$:T$= "":GOTO 3810
3804 IF L$= ""THEN L$= T$:T$= "":GOTO 3810
3805 L$= L$+ " "+ T$:T$= ""
3810 IF LEN (L$)> 0THEN GOSUB 3990:L$= ""
3820 WS= 0:RETURN
3850 X= LEN (L$):IF X= > LLTHEN 3890
3860 FOR I= XTO LLSTEP 2:L$= " "+ L$:NEXT I
3890 RETURN
3900 Z= 0:IF TS= 1THEN RETURN
3905 IF DE(5)= 2THEN RETURN
3910 Y= LL- PX- LEN (L$):IF Y= 0THEN RETURN
3920 X= 0:X$= "":FOR I= 1TO LEN (L$):M$= MID$ (L$,I,1)
3930 X$= X$+ M$
3940 IF M$= " "AND X= 1AND Z> 0THEN Z= Z- 1
3950 IF M$= " "AND X= 1AND Z= 0AND Y> 0THEN X$= X$+ " ":Y= Y- 1
3960 IF M$< > " "THEN X= 1
3970 IF M$= " "THEN X= 0
3980 NEXT I:L$= X$:GOTO 3910
3990 X$= "":PLOT 27,13:PRINT SPC( PX)"";:FOR I= 1TO LEN (L$):M$= MID$ (L$,I,1):IF M$= "^"THEN M$= " "
3991 PRINT M$;
3992 NEXT I:PRINT CHR$ (10)+ CHR$ (13);:PX= 0:POKE 33265,0
3995 PC= PC+ 1:IF PC= PLTHEN PLOT 3,0,4:PRINT "NEXT PAGE";:C= CALL (2):GOSUB 4000:PC= 0
3997 TS= 0:RETURN
4000 PLOT 3,0,4:PRINT SPC( 32)+ "":RETURN
4100 POKE FN C(0),C:POKE FN C(1),1
4105 IX= IX+ 1:IF IX> CRTHEN IY= IY+ 1:IX= CL
4110 IF IY> CDTHEN IY= IY- 1
4120 PLOT 3,IX,IY:RETURN
4200 IF LEN (L$+ " "+ T$)> = X- 1THEN GOSUB 3800
4205 IF L$= ""THEN L$= T$:GOTO 4230
4210 L$= L$+ " "+ T$
4230 T$= "":IF LEN (L$)= X- 2THEN GOTO 3100
4240 FOR I= LEN (L$)TO X- 3:L$= L$+ "^":NEXT I:GOTO 3100
60000 REM
60010 TM= PEEK (32940)+ PEEK (32941)* 256
60020 IF TM> 65500THEN 60060
60030 POKE TM+ 1,50:POKE TM+ 3,15
60040 A= 0:FOR N= TM+ 176TO TM+ 182:A= A+ PEEK (N):NEXT
60050 IF A= 1445THEN 60150
60060 AD= 32940:TM= TM- 200:DA= TM:GOSUB 60160:CLEAR 1000
60070 TM= PEEK (32940)+ PEEK (32941)* 256
60080 RESTORE 60190
60090 FOR N= 1TO 200:READ A:IF A> 255THEN N= 220:GOTO 60140
60100 IF A< 0THEN DA= TM- A:AD= TM+ N:GOSUB 60160:GOTO 60140
60110 POKE TM+ N,A
60140 NEXT
60150 AD= 33283:DA= TM+ 8:GOSUB 60160:GOTO 8
60160 Z1= INT (DA/ 256):Z2= DA- Z1* 256
60170 POKE AD,Z2:N= N+ 1:POKE AD+ 1,Z1:RETURN
60190 DATA 50,37,15,21,4,3,0,123,254,0,194,-54,17,254,111
60200 DATA 123,254,0,194,-37,122,254,0,194,-37,62,32,18,62,2,19
60210 DATA 18,201,27,26,19,19,18,27,27,27,26,19,19,18,27,27,195,-17
60220 DATA 254,1,194,-121,17,0,0,123,254,254,194,-82
60230 DATA 122,254,111,194,-82,62,32,18,62,2,19,18,201,19,19,26
60240 DATA 27,27,18,19,19,19,26,27,27,18,19,195,-62
60250 DATA 0,0,0,0,50,-4,50,-2,62,15,50,-3,62,50,50,-1,251,201
60260 DATA 254,1,194,-158,33,0,0,6,4,14,17,17,128,0,25
60270 DATA 126,17,128,255,25,119,35,0,13,194,-133,17,8
60280 DATA 0,25,5,194,-131,201
60290 DATA 254,2,194,-182,245,229,197,205,36,0,194,-166
60300 DATA 95,175,87,50,255,129,193,225,241,201,201
60310 DATA 300