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: 385
- Registriert: 14.10.2021 12:54
- Has thanked: 393 times
- Been thanked: 113 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: 574
- Registriert: 18.06.2021 23:05
- Has thanked: 126 times
- Been thanked: 229 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: 963
- Registriert: 24.08.2021 14:40
- Has thanked: 118 times
- Been thanked: 283 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: 702
- Registriert: 17.08.2021 04:02
- Has thanked: 433 times
- Been thanked: 204 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: 702
- Registriert: 17.08.2021 04:02
- Has thanked: 433 times
- Been thanked: 204 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: 1176
- Registriert: 17.08.2021 07:06
- Has thanked: 144 times
- Been thanked: 525 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: 624
- Registriert: 04.11.2021 15:52
- Has thanked: 55 times
- Been thanked: 131 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
- Mathy
- Beiträge: 1216
- Registriert: 18.06.2021 11:13
- Wohnort: Heerlen, NL
- Has thanked: 491 times
- Been thanked: 275 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: 170
- Registriert: 24.08.2021 18:27
- Has thanked: 127 times
- Been thanked: 89 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: 282
- Registriert: 18.06.2021 21:19
- Has thanked: 32 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: 282
- Registriert: 18.06.2021 21:19
- Has thanked: 32 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: 282
- Registriert: 18.06.2021 21:19
- Has thanked: 32 times
- Been thanked: 52 times
- Kontaktdaten:
- atarixle
- Beiträge: 282
- Registriert: 18.06.2021 21:19
- Has thanked: 32 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