BASIC-Listings als Textdateien
Moderator: Rockford
- Microprofessor
- Beiträge: 45
- Registriert: 02.06.2022 09:22
- Has thanked: 16 times
- Been thanked: 24 times
- Kontaktdaten:
BASIC-Listings als Textdateien
Guten Morgen,
gibt es eine Möglichkeit BASIC-Programme aus dem Emulator als Textdatei zu exportieren? Vielleicht als Option in einem Emulator?
µP
gibt es eine Möglichkeit BASIC-Programme aus dem Emulator als Textdatei zu exportieren? Vielleicht als Option in einem Emulator?
µP
- MichaG
- Beiträge: 381
- Registriert: 14.10.2021 12:54
- Has thanked: 389 times
- Been thanked: 111 times
- Kontaktdaten:
Re: BASIC-Listings als Textdateien
Du kannst im Altirra einen Drucker einrichten, Dann lässt du dir unter View den Printer Output anzeigen und kannst dein Programm mit "LIST "P:" in das Output-Fenster ausgeben.Microprofessor hat geschrieben: ↑09.06.2022 06:03gibt es eine Möglichkeit BASIC-Programme aus dem Emulator als Textdatei zu exportieren? Vielleicht als Option in einem Emulator?
ABBUC-Mitglied aus den 90ern/frühen 2000ern
Ex-WAF und Regionalgruppe Thüringen
Ex-WAF und Regionalgruppe Thüringen
- pps
- Beiträge: 566
- Registriert: 18.06.2021 23:05
- Has thanked: 122 times
- Been thanked: 225 times
- Kontaktdaten:
Re: BASIC-Listings als Textdateien
Oder gleich das H: Laufwerk nutzen und direkt darauf mit LIST "H:NAME.LST" abspeichern. Dann kann man am PC die Datei nutzen.
- Dr. Irata
- Beiträge: 946
- Registriert: 24.08.2021 14:40
- Has thanked: 113 times
- Been thanked: 275 times
- Kontaktdaten:
Re: BASIC-Listings als Textdateien
Ich mache das so:
Ein Basic-Listing tippe ich mit Textedit ein und kopiere es dann in den Atari-Emulator.
Dann habe ich beides für Änderungen verfügbar!
Ein Basic-Listing tippe ich mit Textedit ein und kopiere es dann in den Atari-Emulator.
Dann habe ich beides für Änderungen verfügbar!
- Microprofessor
- Beiträge: 45
- Registriert: 02.06.2022 09:22
- Has thanked: 16 times
- Been thanked: 24 times
- Kontaktdaten:
Re: BASIC-Listings als Textdateien
Das möchte ich möglichst vermeiden. Denn es geht um ein paar hundert BASIC-Listings.
- Microprofessor
- Beiträge: 45
- Registriert: 02.06.2022 09:22
- Has thanked: 16 times
- Been thanked: 24 times
- Kontaktdaten:
Re: BASIC-Listings als Textdateien
Die Lösungen funktionieren prima. (Ich verwende den "Atari800MacX"-Emulator" - der kann die Atari-Drucker 825 und 1020 sowie den Epson PX-80 emulieren).
Probleme haben die Druckeremulatoren allerdings mit den ATASCII-Sonderzeichen (Grafiksymbole, Inversdarstellung). Ich beführchte fast, dass es dafür noch keine Lösung gibt. Zunächst bräuchte es wohl den ATASCII-Zeichensatz als UTF-8-Subset. (Für Commodore hat sich mal jemand die Mühe gemacht, die Zeichen auf UTF zu "patchen": https://style64.org/petscii/)
µP
Probleme haben die Druckeremulatoren allerdings mit den ATASCII-Sonderzeichen (Grafiksymbole, Inversdarstellung). Ich beführchte fast, dass es dafür noch keine Lösung gibt. Zunächst bräuchte es wohl den ATASCII-Zeichensatz als UTF-8-Subset. (Für Commodore hat sich mal jemand die Mühe gemacht, die Zeichen auf UTF zu "patchen": https://style64.org/petscii/)
µP
- DjayBee
- Beiträge: 676
- Registriert: 17.08.2021 04:02
- Has thanked: 418 times
- Been thanked: 199 times
- Kontaktdaten:
Re: BASIC-Listings als Textdateien
Das Einbinden von H: geht analog zum P:
Eine komplett triviale Methode ist auch Drag&Drop aus dem Disk Explorer auf den PC.
Geh zu File -> Disk Drives...
Und dann kannst du aus der Liste mit Drag&Drop Dateien auf den PC ziehen (und umgekehrt)
===============================
Letztes Problem ist dann noch die Konvertierung zwischen Atari Zeilenende ($9B / 155) und CR/LF.
Dazu nehme ich immer Memopad, das übrigens auch BASIC und MAC/65 im Tokenformat öffnen kann:
https://x868k.com/apps/memopad/
- DjayBee
- Beiträge: 676
- Registriert: 17.08.2021 04:02
- Has thanked: 418 times
- Been thanked: 199 times
- Kontaktdaten:
Re: BASIC-Listings als Textdateien
Schau mal bei Mark Simonson.Microprofessor hat geschrieben: ↑09.06.2022 09:54Probleme haben die Druckeremulatoren allerdings mit den ATASCII-Sonderzeichen (Grafiksymbole, Inversdarstellung). Ich beführchte fast, dass es dafür noch keine Lösung gibt. Zunächst bräuchte es wohl den ATASCII-Zeichensatz als UTF-8-Subset. (Für Commodore hat sich mal jemand die Mühe gemacht, die Zeichen auf UTF zu "patchen": https://style64.org/petscii/)
Sein Font ist der Standard dafür:
http://members.bitstream.net/marksim/at ... fonts.html
- Olix
- Beiträge: 1093
- Registriert: 17.08.2021 07:06
- Has thanked: 132 times
- Been thanked: 475 times
- Kontaktdaten:
Re: BASIC-Listings als Textdateien
Über das FujiNet Modul kann man übrigens auch Lupenreine Atari 8Bit Ausdrucke erzeugen:
Mit dem "HTML ATASCII printer"
Hier erscheint dann das Listing exakt so wie es der Atari anzeigt, inkl. Sonderzeichen und invertierten Zeichen:
Das Ergebnis kann dann aus dem Browser heraus einfach als PDF gedruckt/gespeichert werden. (Siehe Anhang)
Mit dem "HTML ATASCII printer"
Hier erscheint dann das Listing exakt so wie es der Atari anzeigt, inkl. Sonderzeichen und invertierten Zeichen:
Das Ergebnis kann dann aus dem Browser heraus einfach als PDF gedruckt/gespeichert werden. (Siehe Anhang)
-
- Beiträge: 602
- Registriert: 04.11.2021 15:52
- Has thanked: 53 times
- Been thanked: 122 times
- Kontaktdaten:
BASIC-Listings als Textdateien
Hi,
bei APE kann man im emulierten Drucker als Zeichensatz ATASCII.TTF wählen.
CU, Erhard
bei APE kann man im emulierten Drucker als Zeichensatz ATASCII.TTF wählen.
CU, Erhard
Online
- Mathy
- Beiträge: 1170
- Registriert: 18.06.2021 11:13
- Wohnort: Heerlen, NL
- Has thanked: 478 times
- Been thanked: 261 times
- Kontaktdaten:
Re: BASIC-Listings als Textdateien
.
Hallo Leute
es gibt den G: Treiber von ANALOG Computing. Dieser hat alles was man dort hin kopiert/geschrieben hat, als ATASCII Zeichen ausgedruckt.
Tschüß
Mathy
Hallo Leute
es gibt den G: Treiber von ANALOG Computing. Dieser hat alles was man dort hin kopiert/geschrieben hat, als ATASCII Zeichen ausgedruckt.
Tschüß
Mathy
Wer oder was hat denn da geblitzt?
- LarsImNetz
- Beiträge: 156
- Registriert: 24.08.2021 18:27
- Has thanked: 115 times
- Been thanked: 84 times
- Kontaktdaten:
Re: BASIC-Listings als Textdateien
Wer es noch etwas "komplizierter" möchte:
1. https://github.com/the-atari-team/lla.xldir.disktool installieren als xldir.
2. Emulator starten in Basic/Turbobasic von <diskimage>.atr
3. Gewünschte Basic Datei laden
4. Datei per LIST "D:NAME.LST" auf atr-Image speichern
5. xldir <diskimage>.atr extract NAME.LST
Das "xldir" Tool hab ich mir mal in Java geschrieben, um per Script/Makefile ATR-Dateien mit ganz vielen Dateien selbst zu erstellen, nix Klicky/Bunti. Als Bonus kann es bei TXT Dateien die Lineendings von Atari Carridge-Return zu Newline (Linux) konvertieren. Bei LST Dateien werden die Lineendings gewandelt und die Zeilennummern entfernt. Wer nutzt schon feste Zeilennummern bei Turbobasic. Beim Kopieren auf eine ATR-Diskimage-Datei werden noch Zeilen entfernt die mit REM anfangen oder :REM irgendwo mittendrin haben, Zeilennummern werden wieder hinzugefügt. Das funktioniert allerdings nicht mit GOTO/GOBUS bei festen Zahlen. So konnte ich ein paar Bytes sparen. Wer die Zeilennummern behalten möchte, möge die Datei per LIST "D:NAME.TXT" speichern und extrahieren.
Wie gesagt, etwas komplizierter.
LG
Lars
1. https://github.com/the-atari-team/lla.xldir.disktool installieren als xldir.
2. Emulator starten in Basic/Turbobasic von <diskimage>.atr
3. Gewünschte Basic Datei laden
4. Datei per LIST "D:NAME.LST" auf atr-Image speichern
5. xldir <diskimage>.atr extract NAME.LST
Das "xldir" Tool hab ich mir mal in Java geschrieben, um per Script/Makefile ATR-Dateien mit ganz vielen Dateien selbst zu erstellen, nix Klicky/Bunti. Als Bonus kann es bei TXT Dateien die Lineendings von Atari Carridge-Return zu Newline (Linux) konvertieren. Bei LST Dateien werden die Lineendings gewandelt und die Zeilennummern entfernt. Wer nutzt schon feste Zeilennummern bei Turbobasic. Beim Kopieren auf eine ATR-Diskimage-Datei werden noch Zeilen entfernt die mit REM anfangen oder :REM irgendwo mittendrin haben, Zeilennummern werden wieder hinzugefügt. Das funktioniert allerdings nicht mit GOTO/GOBUS bei festen Zahlen. So konnte ich ein paar Bytes sparen. Wer die Zeilennummern behalten möchte, möge die Datei per LIST "D:NAME.TXT" speichern und extrahieren.
Wie gesagt, etwas komplizierter.
LG
Lars
- atarixle
- Beiträge: 276
- Registriert: 18.06.2021 21:19
- Has thanked: 31 times
- Been thanked: 52 times
- Kontaktdaten:
Re: BASIC-Listings als Textdateien
Es dürfte eigentlich nicht schwer sein, ein Tool zu schreiben, welches ein .LST file in PC-Text umwandelt. Spezielle Zeichen könnten in Eingabe-Codes umgewandelt werden, wie sie früher in Happy Computer abgedruckt waren, z.B. {Ctrl+S} für das Pseudo-Grafik-Kreuz.
Mal sehen, ob ich sowas in C hinbekomme, wenn ich mal Zeit hab.
Mal sehen, ob ich sowas in C hinbekomme, wenn ich mal Zeit hab.
Re: BASIC-Listings als Textdateien
Moin,atarixle hat geschrieben: ↑29.06.2022 06:41Es dürfte eigentlich nicht schwer sein, ein Tool zu schreiben, welches ein .LST file in PC-Text umwandelt. Spezielle Zeichen könnten in Eingabe-Codes umgewandelt werden, wie sie früher in Happy Computer abgedruckt waren, z.B. {Ctrl+S} für das Pseudo-Grafik-Kreuz.
Mal sehen, ob ich sowas in C hinbekomme, wenn ich mal Zeit hab.
da käme evtl. ABBUC PD "529 - Der Pixlator" in Frage. GeLISTete Listings können damit wahlweise als Grafik oder als Textdatei angezeigt werden, wobei spezielle Zeichen auch als Keycodes darstellbar sind.
Grüße,
der PD-Service
- atarixle
- Beiträge: 276
- Registriert: 18.06.2021 21:19
- Has thanked: 31 times
- Been thanked: 52 times
- Kontaktdaten:
Re: BASIC-Listings als Textdateien
Mal als Progrämmchen für die Linux-Konsole:
Nicht das eleganteste C-Programm, aber dafür ungetestet.
Code: Alles auswählen
#include<stdio.h>
#include<string.h>
int main(int argc, char* argv[]) {
// printf("argc = %d\n", argc);
if (argc<2) {
printf("usage: %s Atari 8 Bit .LST files\n", argv[0]);
return 0;
}
if ((strcmp(argv[1], "--help") && strcmp(argv[1], "-h"))==0) {
printf("\nreplaces special Atari characters with codes of their keystrokes.\n");
printf("Outputs names get a .txt added\n");
printf("Files will be overwritten WITHOUT ANY WARNING!\n\n");
return 0;
}
if ((strcmp(argv[1], "--version") && strcmp(argv[1], "-v"))==0) {
printf("\n2022.07.14\n\n");
return 0;
}
for(int i=1; i<argc; i++) {
// printf("arg[%d]=\"%s\"\n", i, argv[i]);
FILE *fp_in, *fp_out;
fp_in=fopen(argv[i], "rb");
if (fp_in==NULL) {
printf("File \"%s\" not found\n", argv[i]);
} else {
char filename[20];
int c;
sprintf(filename, "%s.txt", argv[i]);
fp_out=fopen(filename, "wb");
while((c = getc(fp_in)) != EOF) {
// printf("Read Char #%d\n", c);
switch(c) {
// case 32:
// fputs("{Spacebar}", fp_out);
// break;
case 0: fputs("{Ctrl + ,}", fp_out); break;
case 1: fputs("{Ctrl + A}", fp_out); break;
case 2: fputs("{Ctrl + B}", fp_out); break;
case 3: fputs("{Ctrl + C}", fp_out); break;
case 4: fputs("{Ctrl + D}", fp_out); break;
case 5: fputs("{Ctrl + E}", fp_out); break;
case 6: fputs("{Ctrl + F}", fp_out); break;
case 7: fputs("{Ctrl + G}", fp_out); break;
case 8: fputs("{Ctrl + H}", fp_out); break;
case 9: fputs("{Ctrl + I}", fp_out); break;
case 10: fputs("{Ctrl + J}", fp_out); break;
case 11: fputs("{Ctrl + K}", fp_out); break;
case 12: fputs("{Ctrl + L}", fp_out); break;
case 13: fputs("{Ctrl + M}", fp_out); break;
case 14: fputs("{Ctrl + N}", fp_out); break;
case 15: fputs("{Ctrl + O}", fp_out); break;
case 16: fputs("{Ctrl + P}", fp_out); break;
case 17: fputs("{Ctrl + Q}", fp_out); break;
case 18: fputs("{Ctrl + R}", fp_out); break;
case 19: fputs("{Ctrl + S}", fp_out); break;
case 20: fputs("{Ctrl + T}", fp_out); break;
case 21: fputs("{Ctrl + U}", fp_out); break;
case 22: fputs("{Ctrl + V}", fp_out); break;
case 23: fputs("{Ctrl + W}", fp_out); break;
case 24: fputs("{Ctrl + X}", fp_out); break;
case 25: fputs("{Ctrl + Y}", fp_out); break;
case 26: fputs("{Ctrl + Z}", fp_out); break;
case 27: fputs("{ESC ESC}", fp_out); break;
case 28: fputs("{ESC Ctrl + -}", fp_out); break;
case 29: fputs("{ESC Ctrl + =}", fp_out); break;
case 30: fputs("{ESC Ctrl + +}", fp_out); break;
case 31: fputs("{ESC Ctrl + *}", fp_out); break;
case 96: fputs("{Ctrl + .}", fp_out); break;
case 123: fputs("{Ctrl + ;}", fp_out); break;
case 125: fputs("{ESC Ctrl + <}", fp_out); break;
case 126: fputs("{ESC Backspace}", fp_out); break;
case 127: fputs("{ESC Tab}", fp_out); break;
case 128: fputs("{Inverse Ctrl + ,}", fp_out); break;
case 129: fputs("{Inverse Ctrl + A}", fp_out); break;
case 130: fputs("{Inverse Ctrl + B}", fp_out); break;
case 131: fputs("{Inverse Ctrl + C}", fp_out); break;
case 132: fputs("{Inverse Ctrl + D}", fp_out); break;
case 133: fputs("{Inverse Ctrl + E}", fp_out); break;
case 134: fputs("{Inverse Ctrl + F}", fp_out); break;
case 135: fputs("{Inverse Ctrl + G}", fp_out); break;
case 136: fputs("{Inverse Ctrl + H}", fp_out); break;
case 137: fputs("{Inverse Ctrl + I}", fp_out); break;
case 138: fputs("{Inverse Ctrl + J}", fp_out); break;
case 139: fputs("{Inverse Ctrl + K}", fp_out); break;
case 140: fputs("{Inverse Ctrl + L}", fp_out); break;
case 141: fputs("{Inverse Ctrl + M}", fp_out); break;
case 142: fputs("{Inverse Ctrl + N}", fp_out); break;
case 143: fputs("{Inverse Ctrl + O}", fp_out); break;
case 144: fputs("{Inverse Ctrl + P}", fp_out); break;
case 145: fputs("{Inverse Ctrl + Q}", fp_out); break;
case 146: fputs("{Inverse Ctrl + R}", fp_out); break;
case 147: fputs("{Inverse Ctrl + S}", fp_out); break;
case 148: fputs("{Inverse Ctrl + T}", fp_out); break;
case 149: fputs("{Inverse Ctrl + U}", fp_out); break;
case 150: fputs("{Inverse Ctrl + V}", fp_out); break;
case 151: fputs("{Inverse Ctrl + W}", fp_out); break;
case 152: fputs("{Inverse Ctrl + X}", fp_out); break;
case 153: fputs("{Inverse Ctrl + Y}", fp_out); break;
case 154: fputs("{Inverse Ctrl + Z}", fp_out); break;
case 155: fputs("\n", fp_out); break;
case 156: fputs("{ESC Shift + Backspace}", fp_out); break;
case 157: fputs("{ESC Shift + >}", fp_out); break;
case 158: fputs("{ESC Ctrl + Tab}", fp_out); break;
case 159: fputs("{ESC Shift + Tab}", fp_out); break;
case 160: fputs("{ }", fp_out); break;
case 161: fputs("{!}", fp_out); break;
case 162: fputs("{\"}", fp_out); break;
case 163: fputs("{#}", fp_out); break;
case 164: fputs("{$}", fp_out); break;
case 165: fputs("{%}", fp_out); break;
case 166: fputs("{&}", fp_out); break;
case 167: fputs("{'}", fp_out); break;
case 168: fputs("{(}", fp_out); break;
case 169: fputs("{)}", fp_out); break;
case 170: fputs("{*}", fp_out); break;
case 171: fputs("{+}", fp_out); break;
case 172: fputs("{,}", fp_out); break;
case 173: fputs("{-}", fp_out); break;
case 174: fputs("{.}", fp_out); break;
case 175: fputs("{/}", fp_out); break;
case 176: fputs("{0}", fp_out); break;
case 177: fputs("{1}", fp_out); break;
case 178: fputs("{2}", fp_out); break;
case 179: fputs("{3}", fp_out); break;
case 180: fputs("{4}", fp_out); break;
case 181: fputs("{5}", fp_out); break;
case 182: fputs("{6}", fp_out); break;
case 183: fputs("{7}", fp_out); break;
case 184: fputs("{8}", fp_out); break;
case 185: fputs("{9}", fp_out); break;
case 186: fputs("{:}", fp_out); break;
case 187: fputs("{;}", fp_out); break;
case 188: fputs("{<}", fp_out); break;
case 189: fputs("{=}", fp_out); break;
case 190: fputs("{>}", fp_out); break;
case 191: fputs("{?}", fp_out); break;
case 192: fputs("{@}", fp_out); break;
case 193: fputs("{A}", fp_out); break;
case 194: fputs("{B}", fp_out); break;
case 195: fputs("{C}", fp_out); break;
case 196: fputs("{D}", fp_out); break;
case 197: fputs("{E}", fp_out); break;
case 198: fputs("{F}", fp_out); break;
case 199: fputs("{G}", fp_out); break;
case 200: fputs("{H}", fp_out); break;
case 201: fputs("{I}", fp_out); break;
case 202: fputs("{J}", fp_out); break;
case 203: fputs("{K}", fp_out); break;
case 204: fputs("{L}", fp_out); break;
case 205: fputs("{M}", fp_out); break;
case 206: fputs("{N}", fp_out); break;
case 207: fputs("{O}", fp_out); break;
case 208: fputs("{P}", fp_out); break;
case 209: fputs("{Q}", fp_out); break;
case 210: fputs("{R}", fp_out); break;
case 211: fputs("{S}", fp_out); break;
case 212: fputs("{T}", fp_out); break;
case 213: fputs("{U}", fp_out); break;
case 214: fputs("{V}", fp_out); break;
case 215: fputs("{W}", fp_out); break;
case 216: fputs("{X}", fp_out); break;
case 217: fputs("{Y}", fp_out); break;
case 218: fputs("{Z}", fp_out); break;
case 219: fputs("{[}", fp_out); break;
case 220: fputs("{\\}", fp_out); break;
case 221: fputs("{]}", fp_out); break;
case 222: fputs("{^}", fp_out); break;
case 223: fputs("{_}", fp_out); break;
case 224: fputs("{Inverse Ctrl + .}", fp_out); break;
case 225: fputs("{a}", fp_out); break;
case 226: fputs("{b}", fp_out); break;
case 227: fputs("{c}", fp_out); break;
case 228: fputs("{d}", fp_out); break;
case 229: fputs("{e}", fp_out); break;
case 230: fputs("{f}", fp_out); break;
case 231: fputs("{g}", fp_out); break;
case 232: fputs("{h}", fp_out); break;
case 233: fputs("{i}", fp_out); break;
case 234: fputs("{j}", fp_out); break;
case 235: fputs("{k}", fp_out); break;
case 236: fputs("{l}", fp_out); break;
case 237: fputs("{m}", fp_out); break;
case 238: fputs("{n}", fp_out); break;
case 239: fputs("{o}", fp_out); break;
case 240: fputs("{p}", fp_out); break;
case 241: fputs("{q}", fp_out); break;
case 242: fputs("{r}", fp_out); break;
case 243: fputs("{s}", fp_out); break;
case 244: fputs("{t}", fp_out); break;
case 245: fputs("{u}", fp_out); break;
case 246: fputs("{v}", fp_out); break;
case 247: fputs("{w}", fp_out); break;
case 248: fputs("{x}", fp_out); break;
case 249: fputs("{y}", fp_out); break;
case 250: fputs("{z}", fp_out); break;
case 251: fputs("{Inverse Ctrl + ;}", fp_out); break;
case 252: fputs("{|}", fp_out); break;
case 253: fputs("{ESC Ctrl + 2}", fp_out); break;
case 254: fputs("{ESC Ctrl + Backspace}", fp_out); break;
case 255: fputs("{ESC Ctrl + >}", fp_out); break;
default:
// printf("writing default value of #%d\n", c);
fputc(c, fp_out);
}
}
fclose(fp_out);
}
fclose(fp_in);
}
return 0;
}
- atarixle
- Beiträge: 276
- Registriert: 18.06.2021 21:19
- Has thanked: 31 times
- Been thanked: 52 times
- Kontaktdaten:
- atarixle
- Beiträge: 276
- Registriert: 18.06.2021 21:19
- Has thanked: 31 times
- Been thanked: 52 times
- Kontaktdaten:
Re: BASIC-Listings als Textdateien
Ein Abtipplisting könnte dann so aussehen:
Code: Alles auswählen
100 POKE 82,%0:POKE 83,39:GRAPHICS %0:POKE 752,%1:MOVE ADR("{Ctrl+O}t{Ctrl+,}r"),709,4:PST=DPEEK(88)
110 DIM DI$(1536),D1$(256),D2$(256),F$(256),PATH$(256),H$(256),F(%1),ANZ(%1),MANZ(%1),AF(%1),ACT$(%1)
111 DIM EB$(256),Q$(256),Z$(256),T$(80),P$(256),SWP$(15),TA$(256),X$($70)
112 X$="h{I}{Ctrl+E}{p}{Ctrl+I}{"}{Ctrl+,}{Inverse Ctrl+E}{U}{"}{Inverse Ctrl+,}{Inverse Ctrl+E}{T}{Ctrl+.}h{Inverse Ctrl+E}{Ctrl+A}h{Inverse Ctrl+E}{Ctrl+,}h{Inverse Ctrl+E}{Ctrl+G}h{Inverse Ctrl+E}{Ctrl+F}hh{Inverse Ctrl+M}{Ctrl+,}{Ctrl+D}hh{Inverse Ctrl+M}{Ctrl+A}{Ctrl+D}h{Inverse Ctrl+M}{Ctrl+C}{Ctrl+D}h{Inverse Ctrl+M}{Ctrl+B}{Ctrl+D}{,}{Ctrl+,}{Ctrl+D}{Inverse Ctrl+H}{1}{Ctrl+,}{Inverse Ctrl+Q}{Ctrl+F}{Inverse Ctrl+H}{Ctrl+P}{y}{N}{Ctrl+A}{Ctrl+D}{p}!{Ctrl+X}{%}{Ctrl+,}m{Ctrl+B}{Ctrl+D}{Inverse Ctrl+E}{Ctrl+,}{%}{Ctrl+A}m{Ctrl+C}{Ctrl+D}{Inverse Ctrl+E}{Ctrl+A}{Ctrl+X}{%}{Ctrl+F}m{Ctrl+B}{Ctrl+D}{Inverse Ctrl+E}{Ctrl+F}{%}{Ctrl+G}m{Ctrl+C}{Ctrl+D}{Inverse Ctrl+E}{Ctrl+G}{Ctrl+X}{Inverse Ctrl+P}{O}{)}{Ctrl+,}{Inverse Ctrl+E}{U}{)}{Ctrl+A}{Inverse Ctrl+E}{T}{Ctrl+.}"
119 MM=FRE(%0)-64:DIM MEM$(MM)
120 D1$="D1:*.*":D2$="D1:*.*":AX=%1:AY=%3:DC=%0:SWP$="D8:BOSS.SWP"
170 FOR TAB=%0 TO %1:EXEC DIR:NEXT TAB
180 EXEC MS
190 EXEC ANZ
200 POSITION AX,AY:? "|";:AX=TAB*19+%1:AY=AF(TAB)-ANZ(TAB)+%3:POSITION AX,AY:? "{>}";:GET E:EE=E&95
210 IF E=ASC("=") THEN EXEC DOWN:GOTO 200
220 IF E=ASC("-") THEN EXEC UP:GOTO 200
230 IF E=ASC("{ESC Tab}") THEN TAB=%1-TAB:GOTO 200
240 P=TAB*768+AF(TAB)*12+%1:IF (E=155 OR E=ASC("*")) AND DI$(P,P)=":" THEN EXEC CD:GOTO 190
250 IF E>=ASC("1") AND E<=ASC("9") THEN EXEC DRIVE:GOTO 190
260 IF E=ASC("+") OR E=ASC("{ESC Backspace}") THEN EXEC CDUP
300 IF EE=ASC("C") THEN EXEC COPY:GOTO 200
310 IF EE=ASC("S") THEN EXEC SETUP:GOTO 180
320 IF E=ASC("{ESC ESC}") THEN EXEC EXIT
330 IF EE=ASC("N") THEN EXEC NEW_FOLDER:GOTO 180
499 GOTO 200
500 PROC MS
510 ? "{ESC Ctrl+<}{Ctrl+H}{C}{o}{p}{y}{ }{F}{i}{l}{e}{s}{'}{n}{'}{F}{o}{l}{d}{e}{r}{s}{Inverse Ctrl+H}":? "(c)2004 by Mirko Sobe (";MM;" Bytes free)";
520 POSITION %0,%2:? "{Ctrl+Q}{Ctrl+W}{:}{F}{i}{l}{e}{n}{a}{m}{e}{E}{x}{t}{Ctrl+W}{Ctrl+R}{Ctrl+E} {Ctrl+Q}{Ctrl+W}{:}{F}{i}{l}{e}{n}{a}{m}{e}{E}{x}{t}{Ctrl+W}{Ctrl+R}{Ctrl+E}";
530 POSITION %0,%3:? "|| | | || | |";
540 MOVE PST+120,PST+160,720
550 POSITION %0,22:? "{Ctrl+Z}{Ctrl+X}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+X}{Ctrl+R}{Ctrl+C} {Ctrl+Z}{Ctrl+X}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+R}{Ctrl+X}{Ctrl+R}{Ctrl+C}";
560 POSITION %0,23:? "{C}op {1}-{9}=Drv {T}{A}{B}=win {S}et {ESC ESC}{ESC ESC}xit {N}ew Folder";
570 FOR TAB=%0 TO %1:EXEC ANZ:NEXT TAB:TAB=%0
599 ENDPROC
600 PROC DIR
610 IF TAB:H$=D2$:ELSE :H$=D1$:ENDIF
620 CLOSE #%1:OPEN #%1,6,%0,H$:F=%0
630 INPUT #%1,F$:IF F$(%1,%1)>="0" AND F$(%1,%1)<="9" THEN 650
640 Q=TAB*768+F*12:DI$(Q+%1,Q+12)=F$(%2,13):F=F+%1:GOTO 630
650 CLOSE #%1:F(TAB)=F
660 MANZ=F-19:IF MANZ<%0 THEN MANZ=%0
670 MANZ(TAB)=MANZ:ANZ(TAB)=%0:AF(TAB)=%0
699 ENDPROC
700 PROC ANZ
710 ANZ=ANZ(TAB):MANZ=MANZ(TAB)
720 FOR P=%0 TO 18:F=P+ANZ
730 POSITION %2+19*TAB,%3+P:IF F>=F(TAB):? " ":ELSE
740 ? DI$(TAB*768+F*12+%1,TAB*768+F*12+12):ENDIF
750 NEXT P
799 ENDPROC
800 PROC CD:P=TAB*768+AF(TAB)*12+%1
810 IF TAB:H$=D2$:ELSE :H$=D1$:ENDIF
820 F$=DI$(P+%1):F$(9)=" ":Q=INSTR(F$," "):F$(Q)=".":F$(Q+%1)=DI$(P+9,P+11):Q=INSTR(F$," "):IF Q THEN F$(Q)=""
830 H$(LEN(H$)-%2)=F$:H$(LEN(H$)+%1)=":*.*"
880 IF TAB:D2$=H$:ELSE :D1$=H$:ENDIF
890 EXEC DIR
899 ENDPROC
900 PROC DRIVE
910 IF TAB:H$=D2$:ELSE :H$=D1$:ENDIF
920 H$="D :*.*":H$(%2,%2)=CHR$(E)
930 CLOSE #%1:TRAP 995:OPEN #%1,6,%0,H$
940 CLOSE #%1
980 IF TAB:D2$=H$:ELSE :D1$=H$:ENDIF
990 EXEC DIR
995 TRAP 995:CLOSE #%1:TRAP 40000
999 ENDPROC
1000 PROC CDUP
1010 IF TAB:H$=D2$:ELSE :H$=D1$:ENDIF
1020 H$(LEN(H$)-4)=""
1030 P=LEN(H$)
1040 IF H$(P,P)<>":" THEN P=P-%1:IF P>%0 THEN 1040
1050 IF P=%0 THEN 1099
1060 H$(P)=":*.*"
1080 IF TAB:D2$=H$:ELSE :D1$=H$:ENDIF
1090 EXEC DIR:EXEC ANZ
1099 ENDPROC
1100 PROC COPY:? "{ESC Ctrl+<}Copying..."
1105 IF TAB:PATH$=D2$:ELSE :PATH$=D1$:ENDIF
1110 ACT$="C":CF=%1:EXEC CURSE:EXEC MS:GOTO 1199
1120 TAB=%1-TAB:EXEC DIR:EXEC ANZ
1121 TAB=%1-TAB
1199 ENDPROC
1200 PROC SETUP
1210 ? "{ESC Ctrl+<}Copy F'n'F - Settings"
1220 ? "---------------------"
1230 POSITION %0,%3
1231 ? "Allow {D}irect Copy: ";:IF DC:? "Yes":ELSE :? "no ":ENDIF
1232 ? "Swap{f}ile: ";SWP$
1240 GET E:EE=E&95
1250 IF EE=ASC("D") THEN DC=%1-DC:GOTO 1230
1260 IF EE=ASC("F") THEN POKE 752,%0:POSITION 9,4:INPUT SWP$:POKE 752,%1:GOTO 1230
1270 IF E=ASC("{ESC ESC}") THEN 1299
1280 GOTO 1240
1299 ENDPROC
2000 PROC CURSE
2010 IF TAB:Q$=D2$:Z$=D1$:ELSE :Q$=D1$:Z$=D2$:ENDIF
2020 P=TAB*768+AF(TAB)*12+%1:FOLD=(DI$(P,P)=":")
2030 F$=DI$(P+%1):F$(9)=" ":Q=INSTR(F$," "):F$(Q)=".":F$(Q+%1)=DI$(P+9,P+11):Q=INSTR(F$," "):IF Q THEN F$(Q)=""
2040 EB=%0:EB$="{Ctrl+,}":EB$(256)="{Ctrl+,}":EB$(%2)=EB$:Q=LEN(Q$)-%2:Z=LEN(Z$)-%2
2050 IF FOLD=%0 THEN Z$(LEN(Z$)-%3)="":H$=F$:EXEC COP_THIS:GOTO 2290
2060 Q$(LEN(Q$)-%2)=F$:EXEC MD
2070 Q$(LEN(Q$)+%1)=":*.*":EB=EB+%1:EB$(EB,EB)="{Ctrl+,}"
2080 CLOSE #%1:OPEN #%1,6,%0,Q$
2090 FOR P=%0 TO ASC(EB$(EB)):INPUT #%1,P$:NEXT P:IF P$(%1,%1)>="0" AND P$(%1,%1)<="9" THEN 2150
2100 CLOSE #%1:FOLD=(P$(%2,%2)=":"):EB$(EB,EB)=CHR$(ASC(EB$(EB))+%1)
2110 F$=P$(%3):F$(9)=" ":P=INSTR(F$," "):F$(P)=".":F$(P+%1)=P$(11,13):P=INSTR(F$," "):IF P THEN F$(P)=""
2120 IF FOLD THEN 2060
2130 H$=F$:EXEC COP_THIS
2140 GOTO 2080
2150 EB=EB-%1:IF EB=%0 THEN 2290
2160 FOR P=LEN(Q$)-4 TO %1 STEP -%1:IF Q$(P,P)=":" OR Q$(P,P)=">" THEN EXIT
2170 NEXT P
2180 Q$(P)=":*.*":? "cd ";Q$:GOTO 2080
2290 REM
2298 TAB=%1-TAB:EXEC DIR:TAB=%1-TAB
2299 ENDPROC
2300 PROC MD
2310 Z$(Z)=Q$(Q)
2320 ? "md ";Z$
2330 TRAP 2340:XIO 42,#%1,%0,%0,Z$:GOTO 2350
2340 IF ERR=172 THEN 2350
2341 ? "Error ";ERR;" while creating ";Z$:? "{A}bort, {I}gnore?"
2342 GET E:EE=E&95
2343 IF EE=ASC("I") THEN ? "{ESC Ctrl+-}{ESC Shift+Backspace}Ignoring...":GOTO 2350
2344 IF EE=ASC("A") THEN CLOSE #%1:POP :POP :POP :EXEC MS:GOTO 200
2346 GOTO 2342
2350 TRAP 40000
2399 ENDPROC
2400 PROC COP_THIS:Z$(Z)=Q$(Q):Z$(LEN(Z$)-%3)=""
2410 P$=Q$:P$(LEN(P$)-%2)=H$
2420 ? "copy ";P$:? " to ";:TA$=SWP$:IF DC THEN TA$=Z$:TA$(LEN(TA$)+%1)=":":TA$(LEN(TA$)+%1)=H$
2430 CLOSE #%1:OPEN #%1,4,%0,P$:RD=%0
2440 TRAP 2470:BGET #%1,ADR(MEM$),MM
2450 IF RD=%0 THEN RD=%1:CLOSE #%2:OPEN #%2,8,%0,TA$
2460 BPUT #%2,ADR(MEM$),MM:GOTO 2440
2470 L=DPEEK(40):CLOSE #%1:IF RD THEN IF L:BPUT #%2,ADR(MEM$),L:ENDIF :CLOSE #%2
2480 P$=Z$:P$(LEN(P$)+%1)=":":P$(LEN(P$)+%1)=H$
2490 ? P$:IF DC AND RD THEN 2560
2500 CLOSE #%1:OPEN #%1,8,%0,P$:IF RD=%0 THEN 2540
2510 CLOSE #%2:OPEN #%2,4,%0,SWP$
2520 TRAP 2530:BGET #%2,ADR(MEM$),MM:BPUT #%1,ADR(MEM$),MM:GOTO 2520
2530 IF ERR<>136 THEN 2545
2531 L=DPEEK(40)
2540 IF L THEN TRAP 2545:BPUT #%1,ADR(MEM$),L
2544 GOTO 2550
2545 ? "Error ";ERR;" while writing ";SWP$:? "{A}bort, {I}gnore?"
2546 GET E:EE=E&95
2547 IF EE=ASC("I") THEN ? "{ESC Ctrl+-}{ESC Shift+Backspace}Ignoring...":GOTO 2550
2548 IF EE=ASC("A") THEN CLOSE #%1:CLOSE #%2:POP :POP :POP :EXEC MS:GOTO 200
2549 GOTO 2345
2550 TRAP 2550:CLOSE #%1:TRAP 40000
2560 ENDPROC
2600 PROC DOWN
2610 AF(TAB)=AF(TAB)+%1:IF AF(TAB)>F(TAB)-%1 THEN AF(TAB)=F(TAB)-%1:GOTO 2699
2620 IF AF(TAB)-ANZ(TAB)>18
2630 ANZ(TAB)=ANZ(TAB)+%1
2640 X=USR(ADR(X$),PST+TAB*19+162,PST+TAB*19+122,12,18,40)
2650 POSITION %2+19*TAB,21
2660 ? DI$(TAB*768+AF(TAB)*12+%1,TAB*768+AF(TAB)*12+12):ENDIF
2699 ENDPROC
2700 PROC UP
2710 AF(TAB)=AF(TAB)-%1:IF AF(TAB)<%0 THEN AF(TAB)=%0:GOTO 2799
2720 IF AF(TAB)-ANZ(TAB)<%0
2730 ANZ(TAB)=ANZ(TAB)-%1
2740 X=USR(ADR(X$),PST+TAB*19+802,PST+TAB*19+842,12,18,$FFD8)
2750 POSITION %2+19*TAB,%3
2760 ? DI$(TAB*768+AF(TAB)*12+%1,TAB*768+AF(TAB)*12+12):ENDIF
2799 ENDPROC
2800 PROC EXIT
2810 IF PEEK($06FF)=ASC("B") THEN H$=" :DESKTOP.BOS":MOVE $06F5,ADR(H$),%2:TRAP 2820:RUN H$
2820 IF PEEK($06FF)=ASC("B") THEN H$="D8:DESKTOP.BOS":TRAP 2830:RUN H$
2830 POKE 82,%2:POKE 83,39:GRAPHICS %0:END
2899 ENDPROC
2900 PROC NEW_FOLDER
2910 IF TAB:H$=D2$:ELSE :H$=D1$:ENDIF
2920 TRAP 2920:POKE 752,%0:POSITION %0,23:INPUT "{ESC Shift+Backspace}New Folder: ",F$:POKE 752,%1
2930 TRAP 2950:P=INSTR(H$,"*.*"):H$(P)=F$
2940 XIO 42,#%1,%0,%0,H$:? "created":GOTO 2960
2950 ? "error - ";ERR:GET E
2960 EXEC DIR
2999 ENDPROC
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast