0 REM ********************************* 1 REM * TEXTEDITOR V.III.4 * 2 REM * 1985 * 3 REM * VON MICHAEL NICKLES * 4 REM ********************************* 8 IFIM=1THENPOKE648,204:POKE53272,56:POKE56576,0:PRINT"[147]":GOTO20 9 POKE53280,0:POKE53281,0:PRINT"[147]"; 10 M%=300:DIM M$(M%),M(M%):REM PUFFER 15 DIMLG(100),RG(100) :REM Q.SORT 19 REM ANFANGSMENUE ------------------------------------------------------------ 20 PRINT"[147] TEXTEDITOR - VERSION 3 [146]"; 21 PRINT" 1985 VON MICHAEL NICKLES [146]"; 22 PRINT" ALTE DATEI EDITIEREN - 'A' 23 [153]" NEUE DATEI EROEFFNEN - 'N' 24 PRINT" D.Z.SATZ LADEN - 'D' 25 [161]I$:[139][194](203)[178]1[167]I$[178]"A" 26 [139]I$[179][177]"A"[175]I$[179][177]"N"[175]I$[179][177]"D"[167]25 27 [139]I$[178]"D"[167]IM[178]1:[147]"D.Z.SATZ",8,1 28 [151]198,0:[133]"DATEINAME *CMDCMDCMD";D$:[151]198,0 29 [133]"SATZLAENGE 40CMDCMDCMDCMD";SL:[139]SL[179]1[176]SL[177]254[167][153]"GEHT NICHT !":[137]30 30 [139]I$[178]"A"[167]40 31 [133]"SATZANZAHL ";SN:HB[178][181](SN[173]255):LB[178]SN[171]HB[172]255 32 [153]"BITTE LEERE DISK EINLEGEN ":[151]198,0:[146]198,1 33 [159]15,8,15 35 [152]15,"I0":[159]1,8,3,D$[170]",L,"[170][199](SL) 36 [152]15,"P";[199](3);[199](LB);[199](HB);[199](1) 37 [152]1,[199](255) 38 [160]1:[160]15 40 [159] 15,8,15 41 [152]15,"I0":[159] 1,8,3,D$:[153] 50 [143] ZWISCHENMENUE ----------------------------------------------------------- 51 [153]"S / L / V / O / D / I / Z / F / ENDE WAIT"; 52 [161]I$:[139]I$[178]""[167]52 53 [139]I$[178]"E"[167][153]"LOAD";:[137]9900 54 [139]I$[178]"V"[167][153]"LOAD";:[137]6000 55 [139]I$[178]"O"[167][153]"LOAD";:[137]10000 56 [139]I$[178]"D"[167][153]"LOAD";:[137]7000 57 [139]I$[178]"I"[167][153]"LOAD";:[137]30000 58 [139]I$[178]"Z"[167][153]"LOAD";:[137]8000 59 [139]I$[178]"F"[167][153]"LOAD";:[137]61000 60 [139]I$[179][177]"S"[175]I$[179][177]"L"[167]52 61 [133]"SATZNR";SA:[139] SA[179]0 [176] SA[177]63000 [167]60 64 [139]I$[178]"L"[167][153]"LOAD";:[137]2000 66 [139]I$[178]"S"[167][153]"LOAD";:MO[178]1:[137]3000 70 [137] 50 2000 [143] LESEN ----------------------------------------------------------------- 2001 :[153]"LOAD";SA;"CMD-";[196](SA[170]20);" WAIT" 2005 IA[178]SA 2007 [129] SA[178]IA [164] IA[170]20 2010 : [141]9000:[141]9100 2025 : [139]A[178]50[167]SA[178]IA[170]21:[137]2045 2030 : [139][195](A$)[179]40[167][153]A$ 2035 : [139][195](A$)[177][178]40[167][153]A$; 2045 [130]:[153] 2046 [139]A[178]50[167][153]"SATZNUMMER ZU HOCH!" 2050 [137] 50 3000 [143] SCHREIBEN ------------------------------------------------------------- 3005 [153]"EINGABESATZ //=KEINE EINGABE" 3010 [141]9000 :[143] POSITIONIEREN 3020 [139]A[178]50[167][153]"SATZNUMMER ZU HOCH!":[137]50 :[143] FEHLERKANALABFR. 3030 [141]50000:A$[178]BE$ :[143] INPUT-ROUT. 3040 [139]A$[178]"//"[167]MO[178]0:[137]50:[143] ENDE 3050 [141]9200 :[143] A$ SCHREIBEN 3060 SA[178]SA[170]1 :[143] NAECHSTER SATZ 3070 [137]3010 :[143] NEXT (LOOP) 6000 [143] VERSETZEN ------------------------------------------------------------- 6002 [153]"LOADVERSETZENWAIT" 6010 [153]"BITTE GEBEN SIE ANFANG UND ENDE DES BE- REICHES AN, DEN SIE "; 6015 [153]"VERSETZEN WOLLEN !" 6020 [151]198,0:[133]"ANFANG";AN 6021 [151]198,0:[133]"ENDE";EN:[139]AN[177]EN[167][153]"DAS IST UNSINN !":[137]6020 6023 SA[178]AN:[141]9000:[139]A[178]50[167][153]"ANFANGSSATZ EXISTIERT NICHT!":[137]50 6024 SA[178]EN:[141]9000:[139]A[178]50[167][153]"ENDSATZ ZU HOCH!":[137]50 6026 [153]"QUELLDATEI = ";D$ 6028 [151]198,0:[133]"ZIELDATEI ";Z$:[139] Z$[178]""[167] Z$[178]D$:[153]"ON";D$ 6029 [153]"BITTE ANFANG DES NEUEN BEREICHS ANGEBEN!";:[151]198,0:[133]NB:[153] 6030 SA[178]NB:[141]9000:[139]A[178]50[167][153]"NEUER ANFANGSSATZ ZU HOCH!":[137]50 6031 SA[178]NB[170]EN[171]AN:[141]9000:[139]A[178]50[167][153]"BEREICH ZU GROSS!":[137]50 6032 [153]"BITTE WARTEN!" 6036 SA[178]AN:IM[178]0:[139]AN[178]EN[167][153]"*** FERTIG ***":[151]198,0:[146]198,1:[137]50 6038 [141]9000:[141]9100:[139]A[178]50[167]6100 6040 M$(SA[171]AN)[178]A$ 6045 [139]SA[178]EN[167]6100 6050 [139]SA[171]AN[178]M%[167]IM[178]1:[137]6100:[143] * 6060 SA[178]SA[170]1:[137]6038 6100 [143] TRANSPORT 6110 [153]"BITTE DISK MIT ZIELDATEI EINLEGEN !":[151]198,0:[146]198,1 6120 [160]1:[152]15,"I0":[159]1,8,3,Z$ 6200 SA[178]NB:[141]9000:[139]A[178]50[167]50 6205 II[178]EN[171]AN:[139]IM[178]1[167]II[178]M%:[143] * 6215 [129]I[178]0[164]II 6220 A$[178]M$(I):[139]A$[178]""[167]A$[178]":" 6225 [141]9200:[143] SCHREIBEN 6240 SA[178]SA[170]1:[130]I:[139]IM[179][177]0[167]6260 6250 [153]"BITTE DISK MIT QUELLDATEI EINLEGEN !":[151]198,0:[146]198,1:[137]50 6260 AN[178]AN[170]M%:NB[178]NB[170]M%:[153]"BITTE DISK MIT QUELLDATEI EINLEGEN !" 6270 [151]198,0:[146]198,1:[160]1:[152]15,"I0":[159]1,8,3,D$:[137]6036:[143] * 7000 [143] PRINTER-ROUTINE ------------------------------------------------------- 7001 [153]"LOADPRINTER-ROUTINE MPS 801WAIT 7002 INPUT"ANFANG";AN:INPUT"ENDE";EN:IFAN>ENTHEN7000 7005 SA=AN:GOSUB9000:IFA=50THENPRINT"ANFANGSSATZ EXISTIERT NICHT!":GOTO50 7006 SA=EN:GOSUB9000:IFA=50THENPRINT"ENDSATZ ZU HOCH!":GOTO50 7009 AN=AN-1:PRINT"BITTE WAEHLEN SIE: 7010 [153],"NORMALE AUSGABE ..1 7011 PRINT,"D.Z.S. AUSGABE ...2 7012 [153],"EIGENE ROUTINE ...3 7013 GETI$:IFVAL(I$)<1ORVAL(I$)>3THEN7013 7014 IFI$="2"THEN7100 7015 IFI$="3"THEN7500 7020 REM NORMALE AUSGABE -------------- 7021 OPEN3,4,7:FORSA=ANTOEN:GOSUB9000:GOSUB9100 7025 IFA=50THENPRINT"SATZNUMMER ZU HOCH!":SA=EN+1:GOTO7045 7035 PRINT#3,RIGHT$(" "+STR$(SA),3);" "; 7036 FORI=1TOLEN(A$) 7037 :IFMID$(A$,I,1)=""THENPRINT#3," ";:GOTO7040 7038 :PRINT#3,MID$(A$,I,1); 7040 NEXTI:PRINT#3 7045 NEXTSA:CLOSE3:PRINT:GOTO50 7100 REM D.Z.SATZ AUSGABE ------------- 7101 OPEN3,4,7:FORSA=ANTOEN:GOSUB9000:GOSUB9100 7102 IFA=50THENSA=EN+1:PRINT"SATZNUMMER ZU HOCH!":GOTO7170 7110 PRINT#3,RIGHT$(" "+STR$(SA),4);" "; 7120 FORI=1TOLEN(A$):IFA$=""THEN7160 7125 IM=ASC(MID$(A$,I,1)) 7126 IFIM>64ANDIM<91ORIM>96ANDIM<123THEN7160 7130 IFIM=64THENPRINT#3,CHR$(34);:GOTO7170 7135 IFIM=173THENPRINT#3,"[193]E";:GOTO7170 7140 IFIM=174THENPRINT#3,"SS";:GOTO7170 7145 IFIM=176THENPRINT#3,"AE";:GOTO7170 7150 IFIM=181THENPRINT#3,"[213]E";:GOTO7170 7152 IFIM=182THENPRINT#3,"[207]E";:GOTO7170 7154 IFIM=184THENPRINT#3,"UE";:GOTO7170 7156 IFIM=185THENPRINT#3,"OE";:GOTO7170 7158 IFIM=94THENPRINT#3,":"; :GOTO7170 7159 IFIM=95THENPRINT#3,","; :GOTO7170 7160 PRINT#3,CHR$(IM); 7170 NEXTI:PRINT#3,CHR$(13); 7175 NEXTSA:CLOSE3:PRINT:GOTO50 7500 REM EIGENE ROUTINE --------------- 7510 PRINT"SIE HABEN NOCH KEINE EIGENE PRINTER- ROUTINE DEFFINIERT!":GOTO50 8000 REM TEXT ZENTRIEREN ------------------------------------------------------- 8001 I$="":FORI=1TO10:I$=I$+"":NEXTI 8002 REMSL=27 8005 REMDIMM$(300):GOTO8100 8010 PRINT"ZENTRIEREN[146]" 8015 PRINT"BITTE GEBEN SIE ANFANG UND ENDE DES BEREICHES AN, DER ZENTRIERT"; 8017 PRINT" WERDEN SOLL!" 8020 INPUT"ANFANG";AN:INPUT"ENDE";EN:IFAN>ENTHEN50 8025 SA=AN:GOSUB9000:IFA=50THENPRINT"ANFANGSSATZ EXISTIERT NICHT!":GOTO50 8030 SA=EN:GOSUB9000:IFA=50THENPRINT"ENDSATZ ZU HOCH!":GOTO50 8040 PRINT"LINKS-RECHTS BUENDIG ZENTRIEREN - '1' 8045 [153]"IN DIE MITTE ZENTRIEREN - '2' 8050 GETII$:IFII$<>"1"ANDII$<>"2"THEN8050 8060 IFII$="2"THEN8600 8099 REM LINKS-RECHTS BUENDIG --------- 8100 PRINT"BITTE WARTEN!" 8105 FORSA=ANTOEN 8110 : GOSUB9000:GOSUB9100:PRINTA$:PRINTLEN(A$) 8120 : IFRIGHT$(A$,1)=CHR$(29)THENA$=LEFT$(A$,LEN(A$)-1):GOTO8120 8122 : IFRIGHT$(A$,1)=CHR$(32)THENA$=LEFT$(A$,LEN(A$)-1):GOTO8122 8123 : IFRIGHT$(A$,1)=CHR$(160)THENA$=LEFT$(A$,LEN(A$)-1):GOTO8123 8130 : IFLEN(A$)=SLTHEN8520 8200 : LU=SL-LEN(A$):PRINT"LU=";LU 8220 : I=1:IC=0:REM BEGIN LOOP ------- 8222 : 8230 : IFMID$(A$,I,1)=""ORMID$(A$,I+1,1)=""THEN8530 8231 : IM=ASC(MID$(A$,I,1)) 8232 : IN=ASC(MID$(A$,I+1,1)) 8240 : IFIM<>29ANDIM<>32ANDIM<>160THEN8500 8250 : IFIN=29ORIN=32ORIN=160THEN8500 8260 : A$=LEFT$(A$,I)+" "+RIGHT$(A$,LEN(A$)-I) 8261 : IFMID$(A$,I,1)=" "ORMID$(A$,I,1)=""THENI=I+1:GOTO8261 8265 : LU=LU-1:IFLU=0THEN8510 8266 : IC=IC+1 8270 : I=I+1 8400 : 8500 I=I+1 8505 IFI0ANDIC<>0THEN8220 8520 GOSUB9000:GOSUB9200 8530 NEXTSA 8540 GOTO50 8600 REM IN DIE MITTE ----------------- 8610 PRINT"BITTE WARTEN!" 8620 FORSA=ANTOEN 8630 :GOSUB9000:GOSUB9100 8635 IFRIGHT$(A$,1)=CHR$(29)THENA$=LEFT$(A$,LEN(A$)-1):GOTO8635 8636 IFRIGHT$(A$,1)=CHR$(32)THENA$=LEFT$(A$,LEN(A$)-1):GOTO8636 8637 IFRIGHT$(A$,1)=CHR$(160)THENA$=LEFT$(A$,LEN(A$)-1):GOTO8637 8640 :IFLEN(A$)=SLTHEN8680 8650 :AS=SL-LEN(A$): REM ANZAHL SPACES 8660 :A$=LEFT$(I$,AS/2)+A$ 8670 :GOSUB9000:GOSUB9200 8680 NEXTSA 8690 GOTO50 9000 REM POSITIONIEREN **************** 9010 HB%=SA/256:LB%=SA-HB%*256 9020 PRINT#15,"P";CHR$(3);CHR$(LB%);CHR$(HB%);CHR$(1) 9030 INPUT#15,A 9040 RETURN 9100 REM SATZ EINLESEN **************** 9110 IFA=50THENRETURN 9120 INPUT#1,A$ 9140 RETURN 9200 REM SATZ SCHREIBEN *************** 9210 IFA=50THENRETURN 9211 IFA$=""THENA$=":":REM ZUR SICHERHEIT !!! 9220 PRINT#1,A$ 9240 RETURN 9900 REM BEENDEN ********************** 9910 CLOSE 1 9920 CLOSE 15 9930 PRINT "++ ENDE ++" 9940 END 10000 REM SORT-ALOGARITHMUS ---------------------------------------------------- 10010 PRINT"[147]DATEI SORTIEREN[146]" 10100 PRINT"BITTE GEBEN SIE ANFANG UND ENDE DES ZU SORTIERENDEN BEREICHS AN ! 10110 [133]"ANFANG";AN 10120 [133]"ENDE"; EN 10122 SA[178]AN:[141]9000:[139]A[178]50[167][153]"ANFANGSSATZ EXISTIERT NICHT!":[137]50 10124 SA[178]EN:[141]9000:[139]A[178]50[167][153]"ENDSATZ ZU HOCH!":[137]50 10130 [139]EN[171]AN[177]M%[167][153]"BEREICH ZU GROSS!":[137]50 10135 [153]"BITTE MARKIEREN SIE DEN BEREICH INNER- 10136 PRINT"HALB DER STRINGS NACH DEM DIE SORTIERUNG"; 10137 PRINT"ERFOLGEN SOLL!" 10138 SA=AN:GOSUB9000:GOSUB9100:IFA=50THENPRINT"SATZ EXISTIERT NICHT!":GOTO50 10139 IG=-1:GOSUB60000:IG=0 10140 IC=0:FORSA=ANTOEN:IC=IC+1 10145 :GOSUB9000:GOSUB9100:IFA=50THENPRINT"SATZNUMMER ZU HOCH!":SA=EN+1:GOTO1015 10146 :M$(IC)=A$ 10150 NEXTSA 10180 Z=0:LG(1)=1:RG(1)=EN-AN+1 10190 GOSUB10200:GOTO10400 10200 REM QUICKSORT ----------------- 10210 Z=Z+1:IFLG(Z)>=RG(Z)THEN10350 10220 X=LG(Z):Y=RG(Z) 10230 VG$=MID$(M$(INT((X+Y)/2)),MA(1),MB(1)-MA(1)+1) 10240 IF X>Y THEN10330 10250 IF MID$(M$(X),MA(1),MB(1)-MA(1)+1)VG$THENY=Y-1:GOTO10260 10270 IF X>YTHEN10330 10280 S$=M$(X):M$(X)=M$(Y):M$(Y)=S$ 10290 X=X+1:Y=Y-1:GOTO10240 10330 RG(Z+1)=Y:LG(Z+1)=LG(Z):GOSUB10210 10340 LG(Z+1)=X:RG(Z+1)=RG(Z):GOSUB10210 10350 Z=Z-1:RETURN 10400 REM ABSPEICHERN 10410 IC=0:FORSA=ANTOEN:IC=IC+1 10420 :GOSUB9000:A$=M$(IC):GOSUB9200 10430 NEXTSA 10500 GOTO50 20000 REM KORREKTUR-ROUTINE ---------------------------------------------------- 20001 FORI=0TOLEN(BE$):PRINTCHR$(20);:NEXTI:BE$="" 20010 SA=SA+SC : REM TEXTZEIGER 20015 IFSA<0THENSA=0 : REM SPERRE 20020 GOSUB 9000 : REM POSITIONIEREN 20025 IFA=50THENSA=SA-SC:GOTO20020 20040 INPUT#1,A$ 20060 RETURN 30000 REM DIRECTORY EINLESEN --------------------------------------------------- 30010 PRINT"[147]INHALTSVERZEICHNIS:[146]" 30110 PRINT#15,"IO":OPEN2,8,2,"#" 30120 T=18:S=1 30130 PRINT#15,"U1";2;0;T;S 30140 PRINT#15,"B-P";2;0 30150 GET#2,X$:IFX$=""THENX$=CHR$(0) 30160 T=ASC(X$) 30170 GET#2,X$:IFX$=""THENX$=CHR$(0) 30180 S=ASC(X$) 30190 FORX=0TO7 30192 PRINT#15,"B-P";2;X*32+2 30194 GET#2,X$:IFX$=""THENX$=CHR$(0) 30196 IFASC(X$)=0THEN30290 30200 PRINT#15,"B-P";2;X*32+5 30210 FF$="" 30220 FORY=0TO15 30230 GET#2,X$:IFX$=""THENX$=CHR$(0) 30240 IFASC(X$)=160THEN30270 30250 FF$=FF$+X$ 30260 NEXTY 30270 IFA=0THENA=1:PRINTFF$;:GOTO30290 30280 A=0:PRINTTAB(19);"[167] ";FF$ 30290 NEXTX 30300 IFT<>0THEN30130 30310 CLOSE2:PRINT 30330 GOTO50 50000 REM TEXTEINGABE ---------------------------------------------------------- 50002 IFAR=1THENAR=0:A$="SATZNUMMER ZU HOCH![146]":GOTO50007 50006 GOSUB9000:GOSUB9100 50007 PRINT" ";:PRINT"SATZ";SA;"[146]" 50008 PRINT" [145]";A$ 50009 PRINT"[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"; 50010 PRINT"" 50020 BE$="":POKE198,0:POKE211,0:POKE214,22:SYS58732:PRINT"[158][164]"; 50030 GETX$:IFPEEK(203)=1THEN50120 50035 IF PEEK(203)=7ANDPEEK(653)=0 THEN SC=1 : GOSUB 20000 : GOTO 50000 50037 IF PEEK(203)=7ANDPEEK(653)=1 THEN SC=-1 : GOSUB 20000 : GOTO 50000 50040 IFX$=""THEN50030 50050 IFLEN(BE$)=0ANDASC(X$)=20THEN50030 50060 I=ASC(X$):IFI<32ORI>133ANDI<159THENIFI<>20THEN50030 50070 IFLEN(BE$)=SLANDI<>20THEN50030 50075 IFX$=" "THENX$="" 50080 BE$=BE$+X$ 50090 PRINTCHR$(20);X$;"[164]"; 50100 IFI=20THENBE$=LEFT$(BE$,LEN(BE$)-2):GOTO50030 50110 GOTO50030 50120 PRINT"[157] ":GOSUB9000 50130 IFBE$=""THENBE$=":" 50140 PRINT"":RETURN 60000 REM MARKIEREN WIE DATIERT WIRD ------------------------------------------- 60010 I$=A$:FORI=1TOLEN(I$):M$(I)="0":NEXT 60020 IM=1:PRINT 60025 PRINTI$:FORI=1TOLEN(I$):PRINTM$(I);:NEXT:PRINT 60030 PRINT"EDIT >";MID$(I$,IM,1);"< "IM"[146]" 60035 I=PEEK(203):IFI=64THEN60035 60040 IFI=2ANDPEEK(653)=0ANDIM<>LEN(I$)THENIM=IM+1:GOTO60070 60042 IFI=2ANDPEEK(653)=1ANDIM<>1THENIM=IM-1:GOTO60070 60045 IFI=56THENM$(IM)="1":GOTO60070 60055 IFI=35THENM$(IM)="0":GOTO60070 60056 IFI=1THEN60100 60060 GOTO60035 60070 PRINT"[145] [157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][145][145][145]";:GOTO60025 60100 REM UMRECHNEN 60102 FORI=1TO3:MA(I)=0:MB(I)=0:NEXTI 60105 FORII=1TO3 60110 :FORI=1TOLEN(I$):IFMA(II)=0ANDM$(I)=RIGHT$(STR$(II),1)THENMA(II)=I 60113 NEXTI 60115 :IFMA(II)=0THEN60150 60120 : MB(II)=MA(II) 60125 : MB(II)=MB(II)+1:REMPRINT,MB(II) 60130 : IFM$(MB(II))<>RIGHT$(STR$(II),1)THENMB(II)=MB(II)-1:GOTO60150 60135 : IFMB(II)=LEN(I$)THEN60150 60140 : GOTO60125 60150 NEXTII 60170 PRINT"DIE SORTIERUNG ERFOLGT NACH FOLGENDEM STRINGBEREICH:" 60180 PRINT""MID$(I$,MA(1),MB(1)-MA(1)+1)"[146]" 60190 RETURN 61000 REM FLOPPY-FEHLERKANAL LESEN --------------------------------------------- 61005 PRINT"[147]FLOPPY-FEHLERKANALABFRAGE[146]" 61010 INPUT#15,A,B$,C,D 61020 PRINTA,B$,C,D 61040 GOTO50