diff --git a/WEGA/contrib/cpm/cpm.hlp b/WEGA/contrib/cpm/cpm.hlp new file mode 100644 index 0000000..a2d96d4 --- /dev/null +++ b/WEGA/contrib/cpm/cpm.hlp @@ -0,0 +1,21 @@ + +erlaubte Kommandos: +~~~~~~~~~~~~~~~~~~~ + +copyin name1 name2 - Kopiere Unix-Text-File `name1' ins CP/M-File `name2' +copyout name1 name2 - Kopiere CP/M-Text-File `name1' ins Unix-File `name2' +ccopyin name1 name2 - Kopiere Unix-Code-File `name1' ins CP/M-File `name2' +ccopyout name1 name2- Kopiere CP/M-Code-File `name1' ins Unix-File `name2' +dir[ectory] - Anzeige CP/M-Directory +ls - " " " +del[ete] name - Loesche CP/M-File `name' +era[se] name - " " " " +exi[t] - quit +log[out] - quit +typ[e] name - Anzeige CP/M-File `name' am Terminal +dum[p] name - Dump des CP/M-File am Terminal in ascii und hexadezimal +ren[ame] alt neu - Umbenennen des CP/M-File 'alt' in 'neu' +! kommando - Ausfuehren `kommando' im UNIX +disk - Anzeigen eingestelltes Diskettenformat + +Wildcardzeichen sind nicht erlaubt diff --git a/WEGA/contrib/cpm/cpm3/interact.c b/WEGA/contrib/cpm/cpm3/interact.c new file mode 100644 index 0000000..aadc80d --- /dev/null +++ b/WEGA/contrib/cpm/cpm3/interact.c @@ -0,0 +1,121 @@ +/* interact.c 1.8 83/07/27 */ +#include +#include "command.h" +#ifdef p8000 +#include +#else +#include +#endif +#include + +#define errinp { printf("??\n"); break; } + +#ifdef p8000 +ret_buf +#else +jmp_buf +#endif + env; + +#ifndef p8000 +#define setret setjmp +#define retjmp longjmp +#endif + +int firsttime = 0; + +interact() + +{ + + int i, intrpt(); + char cmd[80], *rest, *index(); + + for (;;) { + if (firsttime++ == 0) { + signal(SIGINT, intrpt, -1); + setret(env); + } + if (cmdinp(cmd) < 0) + return (0); + rest = index(cmd, ' '); + if (rest) + *rest++ = '\0'; + i = chkcmd(cmd); +#ifdef DEBUG + printf("command: %s, ind: %d\n", cmd, i); +#endif + + switch (i) { + default: + errinp; + break; + case CMD_DIR: + case CMD_LS: + dispdir(); + break; + + case CMD_RENAME: + rename(rest); + break; + + case CMD_OCOPY: + copyc(rest, 0); + break; + + case CMD_ICOPY: + pip(rest, 0); + break; + + case CMD_DELETE: + case CMD_ERASE: + delete(rest); + break; + + case CMD_EXIT: + case CMD_LOGOUT: + return(0); + + case CMD_TYPE: + copy(rest, stdout, 0); + break; + + case CMD_HELP: + help(); + break; + + case CMD_OCCOPY: + copyc(rest, 1); + break; + + case CMD_ICCOPY: + pip(rest,1); + break; + + case CMD_DUMP: + dump(rest); + break; + + case CMD_UNIX: + system(rest); + break; + + case CMD_DISK: + disk(); + break; + + } + } +} + +/* + * handle interrupts (in interactive mode only), + * just (long)jump back to command input mode + */ + +intrpt() +{ + firsttime = 0; + printf("\n"); + longret(env, 0); +}