The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
* [TUHS] 'more' command for Unix V7
@ 2023-02-16 14:24 KenUnix
  2023-02-16 15:06 ` [TUHS] " Hellwig Geisse
  0 siblings, 1 reply; 6+ messages in thread
From: KenUnix @ 2023-02-16 14:24 UTC (permalink / raw)
  To: UNIX TUHS Group

[-- Attachment #1: Type: text/plain, Size: 4303 bytes --]

Here is a simplified 'more' command for Unix V7:

/*********************************************************************
 * UNIX pager (v7 compatible)   Chipmaster and KenUnix
 *
 * cc -o more more.c
 *
 * Usage examples:
 *   man wall | more
 *   more xyz
 *   more abc def xyz
 *
 * Started February 15th, 2023 YeOlPiShack.net
 *
 * This is the ultimately dumbest version of more I have experienced.
 * Its main purpose is to illustrate the use of /dev/tty to interact
 * with the user while in a filter role (stdin -> stdout). This also
 * leaves stderr clear for actual errors.
 *
 *
 * NOTES on Antiquity:
 *
 *   - The early C syntax didn't allow for combining type information
 *     in the parenthesized argument list only the names were listed.
 *     Then a "variable" list followed the () and preceded the { that
 *     declared the types for the argument list.
 *
 *   - There is no "void", specifically there is no distinction
 *     between a function that returns an int or nothing at all.
 *
 *   - Many of the modern day header files aren't there.
 *
 *   - Apparently "/dev/tty" couldn't be opened for both reading and
 *     writing on the same FD... at least not in our VM.
 *
 *   - Apparently \a wasn't defined yet either. So I use the raw code
 *     \007.
 *
 *   - Modern compilers gripe if you do an assignment and comparison in
 *     the same statement without enclosing the assignment in (). The
 *     original compilers did not. So if it looks like there are too
 *     many ()s it's to appease the modern compiler gods.
 *
 *   - I'm not sure where they hid errno if there was one. I'd think
 *     there had to be. Maybe Kernighan or Pike knows...
 *
 *********************************************************************/
#include <stdio.h>

/*** Let's make some assumptions about our terminal columns and lines. ***/

#define T_COLS  80
#define T_LINES 24

/*** Let's set up our global working environment ***/

FILE *cin;              /* TTY (in) */
FILE *cout;             /*  |  (out) */
int   ct = 0;

/*** message to stderr and exit with failure code ***/

err(msg)
  char *msg;
{
  fputs(msg, stderr);
  exit(1);
}

/*** A poor man's CLear Screen ***
 *
 * Yup! This is how they used to do it, so says THE Kenrighan & Pike!
 * termcap?!?! What's that?
 */

cls()
{
  int x;
  for(x=0; x<T_LINES; ++x) fputc('\n', cout);
  ct = 0; /* reset global line count */
}

/*** The PAUSE prompt & wait ***/

pause()
{
  char in[T_COLS+1]; /* TTY input buffer */

  fflush(stdout); /*JIC*/
  fputs("--- [ENTER] to continue --- Ctrl-d exits ", cout);
  fflush(cout);
  if(!fgets(in, 81, cin)) {
    /* ^D / EOF */
    fputc('\n', cout); /* cleaner terminal */
    exit(0);
  }
}

/*** Read and page a "file" ***/

int pg(f)
  FILE *f;
{
  char  buf[T_COLS+1];   /* input line: usual term width + \0 */

  /*** read and page stdin ***/

  while(fgets(buf, sizeof(buf), f)) {
    /* page break at T_LINES */
    if(++ct==T_LINES) {
      pause();
      ct = 1;
    }
    fputs(buf, stdout);
  }
  return 0;
}

/*** Let's do some paging!! ***/

int main(argc, argv)
  int argc;
  char *argv[];
{
  FILE *in;
  int x, er;

  /*** Grab a direct line to the TTY ***/

  if(!(cin=fopen("/dev/tty", "r")) || !(cout=fopen("/dev/tty", "w")))
    err("\007Couldn't get controlling TTY\n");

  /*** with CLI args ***/

  if(argc>1) {
    er = 0;
    for(x=1; x<argc; ++x) {
      if(argc>2) {
        if(!er) cls();
        er = 0;
        /* remember all user interaction is on /dev/tty (cin/cout) */
        fprintf(cout, ">>> %s <<<\n", argv[x]);
        pause();
      }

      /* - is tradition for stdin */
      if(strcmp("-", argv[x])==0) {
        pg(stdin);

      /* it must be a file! */
      } else if((in=fopen(argv[x], "r"))) {
        pg(in);
        fclose(in);
      } else {
        /* errors go on stderr... JIC someone want to log */
        fprintf(stderr, "Could not open '%s'!\n", argv[x]);
        fflush(stderr);
        er = 1; /* this prevents cls() above. */
      }

    }

  /*** no args - read and page stdin ***/
  } else {
    pg(stdin);
  }

  return 0;
}

End...
-- 
WWL 📚

[-- Attachment #2: Type: text/html, Size: 5382 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [TUHS] Re: 'more' command for Unix V7
  2023-02-16 14:24 [TUHS] 'more' command for Unix V7 KenUnix
@ 2023-02-16 15:06 ` Hellwig Geisse
  2023-02-16 15:23   ` KenUnix
  0 siblings, 1 reply; 6+ messages in thread
From: Hellwig Geisse @ 2023-02-16 15:06 UTC (permalink / raw)
  To: KenUnix, UNIX TUHS Group

On Do, 2023-02-16 at 09:24 -0500, KenUnix wrote:
> 
>  *   - I'm not sure where they hid errno if there was one. I'd think
>  *     there had to be. Maybe Kernighan or Pike knows...

It's a .comm variable, as you can see, e.g., in
/usr/src/libc/crt/cerror.s in Keith Bostic's V7.

Hellwig

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [TUHS] Re: 'more' command for Unix V7
  2023-02-16 15:06 ` [TUHS] " Hellwig Geisse
@ 2023-02-16 15:23   ` KenUnix
  2023-02-16 16:20     ` Hellwig Geisse
  0 siblings, 1 reply; 6+ messages in thread
From: KenUnix @ 2023-02-16 15:23 UTC (permalink / raw)
  To: Hellwig Geisse; +Cc: UNIX TUHS Group

[-- Attachment #1: Type: text/plain, Size: 856 bytes --]

Helwig,

$ cd /usr/src
$ ls -al
total 2
drwxrwxr-x  2 bin       224 Sep 25  1980 .
drwxr-xr-x 17 root      304 Feb 15 19:30 ..
$

These are the disks I am using

Interdata Unix V7
    iu7_dp0.dsk     10MB disk image containing / and /usr
    iu7_dp1.dsk     10MB disk for swap and /tmp

Both dated 23 Feb, 2003.

If there is a better set let me know. I could not get Unix V7
to run under PDP-11 so I am using Interdata-32.

Thanks


On Thu, Feb 16, 2023 at 10:06 AM Hellwig Geisse <hellwig.geisse@mni.thm.de>
wrote:

> On Do, 2023-02-16 at 09:24 -0500, KenUnix wrote:
> >
> >  *   - I'm not sure where they hid errno if there was one. I'd think
> >  *     there had to be. Maybe Kernighan or Pike knows...
>
> It's a .comm variable, as you can see, e.g., in
> /usr/src/libc/crt/cerror.s in Keith Bostic's V7.
>
> Hellwig
>


-- 
End of line
JOB TERMINATED

[-- Attachment #2: Type: text/html, Size: 1590 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [TUHS] Re: 'more' command for Unix V7
  2023-02-16 15:23   ` KenUnix
@ 2023-02-16 16:20     ` Hellwig Geisse
  2023-02-17  0:19       ` KenUnix
  0 siblings, 1 reply; 6+ messages in thread
From: Hellwig Geisse @ 2023-02-16 16:20 UTC (permalink / raw)
  To: KenUnix; +Cc: UNIX TUHS Group

Ken,

years ago, when I ported V7 to my own microprocessor ECO32,
I wanted to have a stable reference running on a (simulated)
PDP-11 in order to better understand some difficult corners
of the original implementation. The set of files I used can
be found here (and the archive's docs say "This set of files
from Keith Bostic looks like the original tape records from
the 7th Edition distribution tape."):

https://www.tuhs.org/Archive/Distributions/Research/Keith_Bostic_v7/

I had a few minor difficulties to get it running in simh,
mostly centered around the tape format and the configuration
of the simulator, but finally I was able to install V7 exactly
as advised in the manual ("Setting Up UNIX"). I packaged the
whole adventure (original files, simh, scripts) together with
a HOWTO:

https://homepages.thm.de/~hg53/pdp11-unix/

On this site, you can also find all files extracted from the
V7 file system to the host (Linux in my case).

If you have questions, I will be glad to help.

Hellwig


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [TUHS] Re: 'more' command for Unix V7
  2023-02-16 16:20     ` Hellwig Geisse
@ 2023-02-17  0:19       ` KenUnix
  2023-02-17  6:55         ` Hellwig Geisse
  0 siblings, 1 reply; 6+ messages in thread
From: KenUnix @ 2023-02-17  0:19 UTC (permalink / raw)
  To: Hellwig Geisse; +Cc: UNIX TUHS Group

[-- Attachment #1: Type: text/plain, Size: 5491 bytes --]

I am stuck here:

PDP-11 simulator V3.6-0
Disabling XQ
PDP-11 simulator configuration

CPU, 11/45, FPP, autoconfiguration on, 256KB
SYSTEM
RHA, address=17776700-17776753, vector=254
RHB, disabled
PTR, address=17777550-17777553, vector=70, not attached
PTP, address=17777554-17777557, vector=74, not attached
TTI, address=17777560-17777563, vector=60, 7b
TTO, address=17777564-17777567, vector=64, 7b
CR, address=17777160-17777167, vector=230, 285 cards per minute,
translation 029, not attached, CR11, auto EOF, unknown format
LPT, address=17777514-17777517, vector=200, not attached
CLK, 60Hz, address=17777546-17777547, vector=100
PCLK, disabled
DZ, address=17760100-17760137*, vector=300-334, lines=32, not attached, 8b
VH, address=17760500-17760577*, vector=340-374, lines=32, 4 units
  VH0, not attached, DHU mode
  VH1, not attached, DHU mode
  VH2, not attached, DHU mode
  VH3, not attached, DHU mode
RK, address=17777400-17777417, vector=220, 8 units
  RK0, 1247KW, not attached, write enabled
  RK1, 1247KW, not attached, write enabled
  RK2, 1247KW, not attached, write enabled
  RK3, 1247KW, not attached, write enabled
  RK4, 1247KW, not attached, write enabled
  RK5, 1247KW, not attached, write enabled
  RK6, 1247KW, not attached, write enabled
  RK7, 1247KW, not attached, write enabled
RL, address=17774400-17774411, vector=160, 4 units
  RL0, 2621KW, not attached, write enabled, autosize
  RL1, 2621KW, not attached, write enabled, autosize
  RL2, 2621KW, not attached, write enabled, autosize
  RL3, 2621KW, not attached, write enabled, autosize
HK, address=17777440-17777477, vector=210, 8 units
  HK0, 6944KW, not attached, write enabled, autosize
  HK1, 6944KW, not attached, write enabled, autosize
  HK2, 6944KW, not attached, write enabled, autosize
  HK3, 6944KW, not attached, write enabled, autosize
  HK4, 6944KW, not attached, write enabled, autosize
  HK5, 6944KW, not attached, write enabled, autosize
  HK6, 6944KW, not attached, write enabled, autosize
  HK7, 6944KW, not attached, write enabled, autosize
RX, address=17777170-17777173*, vector=264, 2 units
  RX0, 256KB, not attached, write enabled
  RX1, 256KB, not attached, write enabled
RY, disabled
RP, Massbus adapter 0, 8 units
  RP0, 43MW, attached to system.hp, write enabled, RP04
  RP1, 33MW, not attached, write enabled, autosize
  RP2, 33MW, not attached, write enabled, autosize
  RP3, 33MW, not attached, write enabled, autosize
  RP4, 33MW, not attached, write enabled, autosize
  RP5, 33MW, not attached, write enabled, autosize
  RP6, 33MW, not attached, write enabled, autosize
  RP7, 33MW, not attached, write enabled, autosize
RQ, address=17772150-17772153*, no vector, 4 units
  RQ0, 159MB, not attached, write enabled, RD54
  RQ1, 159MB, not attached, write enabled, RD54
  RQ2, 159MB, not attached, write enabled, RD54
  RQ3, 409KB, not attached, write enabled, RX50
RQB, disabled
RQC, disabled
RQD, disabled
TC, disabled
TM, address=17772520-17772533, vector=224, 8 units
  TM0, attached to unix_v7.tm, write locked, SIMH format, unlimited capacity
  TM1, not attached, write enabled, SIMH format, unlimited capacity
  TM2, not attached, write enabled, SIMH format, unlimited capacity
  TM3, not attached, write enabled, SIMH format, unlimited capacity
  TM4, not attached, write enabled, SIMH format, unlimited capacity
  TM5, not attached, write enabled, SIMH format, unlimited capacity
  TM6, not attached, write enabled, SIMH format, unlimited capacity
  TM7, not attached, write enabled, SIMH format, unlimited capacity
TS, disabled
TQ, TK50 (94MB), address=17774500-17774503, no vector, 4 units
  TQ0, not attached, write enabled, SIMH format
  TQ1, not attached, write enabled, SIMH format
  TQ2, not attached, write enabled, SIMH format
  TQ3, not attached, write enabled, SIMH format
TU, disabled
XQ, disabled
XQB, disabled
XU, disabled
XUB, disabled
100000: 012700
100002: 172526
100004: 010040
100006: 012740
100010: 060003
100012: 000777
sim> run 100000

Simulation stopped, PC: 100012 (BR 100012)
sim> run 0
Boot
: tm(0,4)
Tape? tm(0,5)
Disk? hp(0,0)
Last chance before scribbling on disk.
Out of space  <====
Exit called
Boot
:
Simulation stopped, PC: 010762 (BEQ 10754)
sim> run 0 <====

HALT instruction, PC: 000174 (HALT)
sim> run 100000 <====

HALT instruction, PC: 100002 (HALT)
sim>


Ken


On Thu, Feb 16, 2023 at 11:20 AM Hellwig Geisse <hellwig.geisse@mni.thm.de>
wrote:

> Ken,
>
> years ago, when I ported V7 to my own microprocessor ECO32,
> I wanted to have a stable reference running on a (simulated)
> PDP-11 in order to better understand some difficult corners
> of the original implementation. The set of files I used can
> be found here (and the archive's docs say "This set of files
> from Keith Bostic looks like the original tape records from
> the 7th Edition distribution tape."):
>
> https://www.tuhs.org/Archive/Distributions/Research/Keith_Bostic_v7/
>
> I had a few minor difficulties to get it running in simh,
> mostly centered around the tape format and the configuration
> of the simulator, but finally I was able to install V7 exactly
> as advised in the manual ("Setting Up UNIX"). I packaged the
> whole adventure (original files, simh, scripts) together with
> a HOWTO:
>
> https://homepages.thm.de/~hg53/pdp11-unix/
>
> On this site, you can also find all files extracted from the
> V7 file system to the host (Linux in my case).
>
> If you have questions, I will be glad to help.
>
> Hellwig
>
>

-- 
End of line
JOB TERMINATED

[-- Attachment #2: Type: text/html, Size: 6752 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [TUHS] Re: 'more' command for Unix V7
  2023-02-17  0:19       ` KenUnix
@ 2023-02-17  6:55         ` Hellwig Geisse
  0 siblings, 0 replies; 6+ messages in thread
From: Hellwig Geisse @ 2023-02-17  6:55 UTC (permalink / raw)
  To: KenUnix; +Cc: UNIX TUHS Group

On Do, 2023-02-16 at 19:19 -0500, KenUnix wrote:
> I am stuck here:
> 
> PDP-11 simulator V3.6-0
> Disabling XQ
> PDP-11 simulator configuration
> [...]
> Simulation stopped, PC: 100012 (BR 100012)
> sim> run 0
> Boot
> : tm(0,4)
> Tape? tm(0,5)
> Disk? hp(0,0)
> Last chance before scribbling on disk. 
> Out of space  <====
> Exit called

You skipped step 5 from the manual, which runs
mkfs. Without an empty file system, trying
restor (": tm(0,4)") is bound to fail.

I suggest continuing our mail exchange off-list,
if you don't mind. The old hands here don't need
any further discussion of boot procedures... ;-)

Hellwig

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-02-17  6:55 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-16 14:24 [TUHS] 'more' command for Unix V7 KenUnix
2023-02-16 15:06 ` [TUHS] " Hellwig Geisse
2023-02-16 15:23   ` KenUnix
2023-02-16 16:20     ` Hellwig Geisse
2023-02-17  0:19       ` KenUnix
2023-02-17  6:55         ` Hellwig Geisse

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).