Compare commits

..

No commits in common. "rawhide" and "f40" have entirely different histories.

5 changed files with 42 additions and 173 deletions

1
.gitignore vendored
View file

@ -1,3 +1,2 @@
/zork-1.0.2.tar.gz
/zork-1.0.3.tar.gz
/zork-1.1.0.tar.gz

139
README.md
View file

@ -1,133 +1,16 @@
```
Welcome to Dungeon. This version created 11-MAR-91.
You are in an open field west of a big white house with a boarded front door.
There is a small mailbox here.
>
```
zork
====
# DUNGEON (AKA Zork)
**Public Domain Source Code for the Mainframe Game "Dungeon"**
This repository contains the Public Domain source code for *Dungeon*, the mainframe version of the game that served as the precursor to Infocom's commercial *Zork* trilogy.
This codebase is a C port derived from the FORTRAN source of **Zork 2.6**.
Public Domain original DUNGEON game (Zork I)
## Installation
## About
### Fedora Linux
Public Domain source code to the original DUNGEON game (Zork I).
Released to the PD by Infocom.
Includes source files, headers, and information.
This package is available in the official Fedora Linux repositories.
You can install it directly via the command-line:
```bash
sudo dnf install zork
```
### Building from Source
To build the game from the source files in this repository:
```bash
make
```
## Modern Maintainership & Philosophy (2013-12 to present)
**Current Maintainers:**
* Shane Thomas ([@devshane](https://github.com/devshane))
* Jan Drögehoff ([@Jan200101](https://github.com/Jan200101))
* Justin Wheeler ([@justwheel](https://github.com/justwheel))
**Project Philosophy:**
This project utilizes the FORTRAN source of *Dungeon* (Zork 2.6) as its foundation.
The primary design goal is code preservation.
We aim to maintain the logic and behavior of the game as accurately as possible while updating the codebase to compile and run on modern C compilers and operating systems.
## History of the Implementation
This version of *Dungeon* has been modified from FORTRAN to C.
The historical lineage of this code is as follows:
1. **Original Development (MDL)**:
The original game (initially titled *Zork*) was written in the MDL programming language (MUDDLE) at the MIT Laboratory for Computer Science.
2. **PDP-11 Translation (FORTRAN)**:
Bob Supnik translated the MDL source into DEC FORTRAN for the PDP-11, renaming the game *Dungeon*.
3. **UNIX Port (f77)**:
The FORTRAN version was subsequently ported to `f77` for UNIX systems.
4. **C Translation**:
The C translation was generated from the `f77` version using `f2c`.
`f2c` is a FORTRAN-to-C translator written by David Gay (AT&T Bell Labs), Stu Feldman (Bellcore), Mark Maimone (Carnegie-Mellon University), and Norm Schryer (AT&T Bell Labs).
*Note on Zork I:*
While often conflated, *Dungeon* differs from *Zork I*.
*Zork I* is a microcomputer adaptation comprising approximately one-third of the original mainframe game's map and puzzles.
*Dungeon* represents the more complete, albeit earlier, mainframe experience.
### I. From original game documentation
To: Dungeon Players
From: "The Translator"
Subj: Game Information
Date: 8-OCT-80
This is the first (and last) source release of the PDP-11 version of
Dungeon.
Please note that Dungeon has been superceded by the game ZORK(tm).
The following is an extract from the new product announcement for
ZORK in the September, 1980 issue of the RT-11 SIG newsletter:
"'ZORK: The Great Underground Empire - Part I' ...was developed
by the original authors based on their ZORK (Dungeon) game for
the PDP-10. It features a greatly improved parser; command
input and transcript output files; SAVEs to any device and
file name; and adaptation to different terminal types,
including a status line on VT100s. Note: this is not the
FORTRAN version that has been available through DECUS. This
version has been completely rewritten to run efficiently on
small machines - up to 10 times as fast as the DECUS version.
...ZORK runs under RT-ll, HT-ll, or RSTS/E and requires as
little as 20K words of memory and a single floppy disk drive.
The game package, consisting of an RX01-format diskette and
an instruction booklet, is available from Infocom, Inc.,
P.O. Box 120, Kendall Station, Cambridge, Ma. 02142."
ZORK(tm) is a trademark of Infocom, Inc. It is available for several
popular personal computers as well as for the PDP-ll.
### II. DEC FORTRAN to f77 Conversion (1981-11-17)
The conversion from DEC FORTRAN to Unix f77 was done by **Randy Dietrich, Lynn Cochran and Sig Peterson**.
Much hacking was done to get it to fit in the limited address space of a PDP-11/44 (split I/D).
Suffice it to say that by leaving out the debugging package and not linking in the f77 i/o library, they managed to get it to run.
### III. PDP to VAX (1985-12)
Based on the work of Randy, Lynn and Sig, **Bill Randle** folded in the full save/restore functions and the game debugging package (gdt) into the PDP version to create a Vax/Unix version.
This version also uses f77 i/o, thus eliminating the extra speak and listen processes needed on the PDP.
### IV. Cleanup I (1986-12-11)
**John Gilmore** (hoptoad!gnu) cleaned up the source files by moving most of the common declarations into include files and added comments from the original (_FORTRAN or MDL?_) source.
His efforts are greatly appreciated.
### V. Cleanup II (1987-02-09)
**Bill Randle** added the PDP dependencies back into the Vax source files with `#ifdef`s in order to have just one set of sources.
Previously, there were two sets of source: one for the PDP and one for the Vax.
In addition, a shell escape of the form `!cmd` was added and the wizard can enter the gdt without having to recompile the source.
Finally, a man page was generated, based on the `dungeon.doc` file.
### VI. f77 to C (1991-03-11)
**Ian Lance Taylor** used the `f2c` translator to generate C source code.
The resulting code was modified to remove the FORTRAN I/O library, to add simple more processing, and to change the format of the database file.
**Andre Srinivasan** helped test it.
**Jonathan Mark** made it work under MS-DOS and Microsoft C.
This version of Dungeon was modified from FORTRAN to C.
The original was written in DEC FORTRAN, translated from MDL.
It was then translated to f77 for UN\*X systems, from which it was translated to C.
The C translation was done with the help of f2c, the FORTRAN to C translator written by David Gay (AT&T Bell Labs), Stu Feldman (Bellcore), Mark Maimone (Carnegie-Mellon University), and Norm Schryer (AT&T Bell Labs).

View file

@ -1 +1 @@
SHA512 (zork-1.1.0.tar.gz) = e72082b4e2e3ff8a68588ce19409fa132921e16e4d15cfef84c9471b3ac989a4d1c251bf2518ddfa7770b803b7dfc40c264377d5a1310688551413b73471cb3d
SHA512 (zork-1.0.3.tar.gz) = def2063a01880eac1fac97a9fb2b4539202f13f9e18ed96275e23d7f73fefa68eff1b62ac256065aaf7603ea4dae3d84488fe8c3757881eb25eea8795e7c7d6a

View file

@ -1,5 +1,5 @@
From ce241188ca387a42c3ab09454c881acfe30c955e Mon Sep 17 00:00:00 2001
From: "Justin Wheeler" <jwheel@fedoraproject.org>
From: "Justin W. Flory" <git@jwf.io>
Date: Tue, 30 Apr 2019 15:36:07 -0400
Subject: [PATCH 1/1] Makefile: Change compile options for Fedora RPM package
@ -8,9 +8,11 @@ Subject: [PATCH 1/1] Makefile: Change compile options for Fedora RPM package
dinit.c | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/Makefile b/Makefile
index 88305ce..aae1916 100644
--- a/Makefile
+++ b/Makefile
@@ -42,7 +42,7 @@
@@ -42,7 +42,7 @@ TERMFLAG =
# Uncomment the following line if you want to have access to the game
# debugging tool. This is invoked by typing "gdt". It is not much
# use except for debugging.
@ -19,8 +21,8 @@ Subject: [PATCH 1/1] Makefile: Change compile options for Fedora RPM package
# Compilation flags
CFLAGS = -g #-static
@@ -70,7 +70,7 @@
$(CC) $(CFLAGS) -o zork $(OBJS) $(LDFLAGS) $(LIBS)
@@ -69,7 +69,7 @@ dungeon: $(OBJS) dtextc.dat
$(CC) $(CFLAGS) -o zork $(OBJS) $(LIBS)
install: zork dtextc.dat
- mkdir -p $(BINDIR) $(LIBDIR) $(MANDIR)/man6
@ -28,7 +30,7 @@ Subject: [PATCH 1/1] Makefile: Change compile options for Fedora RPM package
cp zork $(BINDIR)
cp dtextc.dat $(DATADIR)
cp dungeon.6 $(MANDIR)/man6/
@@ -94,7 +94,7 @@
@@ -93,7 +93,7 @@ local.o: local.c funcs.h vars.h
$(CC) $(CFLAGS) $(GDTFLAG) -c local.c
supp.o: supp.c funcs.h vars.h
@ -37,9 +39,11 @@ Subject: [PATCH 1/1] Makefile: Change compile options for Fedora RPM package
actors.o: funcs.h vars.h
ballop.o: funcs.h vars.h
diff --git a/dinit.c b/dinit.c
index d687cf4..cda5878 100644
--- a/dinit.c
+++ b/dinit.c
@@ -24,7 +24,7 @@
@@ -24,7 +24,7 @@ FILE *dbfile;
#define TEXTFILE "lib:dtextc.dat"
#else /* ! __AMOS__ */
#ifdef unix

View file

@ -1,9 +1,9 @@
Name: zork
Version: 1.1.0
Release: %autorelease
Summary: Public Domain original DUNGEON game (AKA, Zork)
Version: 1.0.3
Release: 7%{?dist}
Summary: Public Domain original DUNGEON game (Zork I)
License: LicenseRef-Fedora-Public-Domain
License: Public Domain
URL: https://github.com/devshane/zork
Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
@ -15,17 +15,24 @@ BuildRequires: ncurses-devel
%description
Public Domain Source Code for the Mainframe Game "Dungeon". This repository contains the Public Domain source code for
Dungeon, the mainframe version of the game that served as the precursor to Infocom's commercial Zork trilogy. This
codebase is a C port derived from the FORTRAN source of Zork 2.6.
Public Domain source code to the original DUNGEON game (Zork I). Released to
the PD by Infocom. Includes source files, headers, and information.
This version of Dungeon was modified from FORTRAN to C. The original was
written in DEC FORTRAN, translated from MDL. It was then translated to f77 for
UN*X systems, from which it was translated to C. The C translation was done
with the help of f2c, the FORTRAN to C translator written by David Gay (AT&T
Bell Labs), Stu Feldman (Bellcore), Mark Maimone (Carnegie-Mellon University),
and Norm Schryer (AT&T Bell Labs).
%prep
%global _hardened_build 1
%autosetup
%build
%make_build \
CFLAGS="%{optflags} -std=c17" \
CFLAGS="%{optflags}" \
DATADIR="%{_datadir}/%{name}" \
LDFLAGS="%{__global_ldflags}"
@ -49,30 +56,6 @@ echo ".so dungeon.6" > %{buildroot}%{_mandir}/man6/zork.6
%changelog
* Tue Jun 30 2026 Justin Wheeler <jwheel@fedoraproject.org> - 1.1.0-1
- Update to v1.1.0
- Upstream bug fixes: out-of-bounds array access, missing unistd.h header,
localtime prototype, curses header preprocessor guard
- Upstream build improvements: LDFLAGS support in Makefile
- Migrate to %%autorelease
- Remove unnecessary %%global _hardened_build 1 (default since F23)
* Sun Feb 22 2026 Justin Wheeler <jwheel@fedoraproject.org> - 1.0.3-12
- Fix FTBFS. Thanks @limb for the hotfix.
- Upstream work ongoing for improved support with newer versions of the C programming language and compilers.
* Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.3-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.3-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.3-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.3-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.3-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
@ -91,12 +74,12 @@ echo ".so dungeon.6" > %{buildroot}%{_mandir}/man6/zork.6
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Mar 02 2021 Justin Wheeler <jwheel@fedoraproject.org> - 1.0.3-1
* Tue Mar 02 2021 Justin W. Flory <jflory7@fedoraproject.org> - 1.0.3-1
- Fix reused integers from being optimized out.
- Props to Jan Drögehoff (FAS: sentry) for sending this fix upstream to avoid carrying a Fedora-specific patch.
- Remove grues.
* Wed Feb 17 2021 Justin Wheeler <jwheel@fedoraproject.org> - 1.0.2-6
* Wed Feb 17 2021 Justin W. Flory <jflory7@fedoraproject.org> - 1.0.2-6
- Remove compiler optimization flag to workaround segfault while upstream change is assessed
* Thu Jan 28 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.2-5
@ -105,12 +88,12 @@ echo ".so dungeon.6" > %{buildroot}%{_mandir}/man6/zork.6
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Mar 03 2020 Justin Wheeler <jwheel@fedoraproject.org> - 1.0.2-3
* Tue Mar 03 2020 Justin W. Flory <jflory7@fedoraproject.org> - 1.0.2-3
- Add manpage alias for zork, to match binary executable
- Add upstream 'history' file as a doc
* Tue Apr 30 2019 Justin Wheeler <jwheel@fedoraproject.org> - 1.0.2-2
* Tue Apr 30 2019 Justin W. Flory <jflory7@fedoraproject.org> - 1.0.2-2
- Use Fedora CFLAGS during compilation
* Mon Apr 29 2019 Justin Wheeler <jwheel@fedoraproject.org> - 1.0.2-1
* Mon Apr 29 2019 Justin W. Flory <jflory7@fedoraproject.org> - 1.0.2-1
- First zork package