1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-27 01:09:49 +00:00

New Zork startup.

The TS RBYE binary starts Zork from CFS; MADADV SAVE.  The assembly
info says the source file was AR1: CFS; ZORK 2.  Tape backup records
show this archive file was updated on 1979-02-13, which is shortly
before the TS RBYE timestamp.

As a convenience to users, TS ZORK is linked to RBYE from SYS1 on the
assumption users will probably play the newest Zork.  The older SYS2;
TS ZORK which starts the MADMAN; MADADV SAVE file is renamed to OZORK.
This commit is contained in:
Lars Brinkhoff
2023-02-22 14:08:47 +01:00
parent 2e93c506a5
commit 43810baab6
4 changed files with 397 additions and 3 deletions

View File

@@ -44,7 +44,8 @@ SRC = syseng sysen1 sysen2 sysen3 sysnet kshack dragon channa \
mits_s rab stan_k bs cstacy kp dcp2 -pics- victor imlac rjl mb bh \
lars drnil radia gjd maint bolio cent shrdlu vis cbf digest prs jsf \
decus bsg muds54 hello rrs 2500 minsky danny survey librm3 librm4 \
klotz atlogo clusys cprog r eb cpm mini nova sits nlogo bee gld mprog2
klotz atlogo clusys cprog r eb cpm mini nova sits nlogo bee gld mprog2 \
cfs
DOC = info _info_ sysdoc sysnet syshst kshack _teco_ emacs emacs1 c kcc \
chprog sail draw wl pc tj6 share _glpr_ _xgpr_ inquir mudman system \
xfont maxout ucode moon acount alan channa fonts games graphs humor \

View File

@@ -115,6 +115,7 @@ cent/tapes.howcpy 198702122140.48
cent/tapes.method 198808122342.43
cent/tapes.save 198912211754.13
cffk/cpoly.64 198112010719.13
cfs/zork.2 197902132100.56
channa/logout.times 199008150019.00
channa/nampic.bag 197611120605.59
channa/nampic.down 197611080524.14

View File

@@ -1,9 +1,14 @@
log_progress "ENTERING BUILD SCRIPT: ZORK"
# Zork startup
respond "*" ":midas sys2; ts zork_taa; zork\r"
# Old Zork startup
respond "*" ":midas sys2; ts ozork_taa; zork\r"
expect ":KILL"
# New Zork startup
respond "*" ":midas sys; ts rbye_cfs; zork\r"
expect ":KILL"
respond "*" ":link sys1;ts zork, sys; ts rbye\r"
mkdir "cfs"
respond "*" ":xxfile lcf;comp log_lcf;comp xxfile\r"

387
src/cfs/zork.2 Normal file
View File

@@ -0,0 +1,387 @@
TITLE TRIVIA startup
.MLLIT==1
NOLOSE==1 ; EVERYONE'S A WINNER
TTYCHN==1
SAVCHN==2
MUDCHN==3
DSKCHN==4
O=0
A=1
B=2
C=3
TIME=3
NOW=4
XUNAME=5
P=17
VBPTR: 440700,,A
VSBPTR: 140600,,B
DSKDEV: SIXBIT /DSK/
MSGDIR: SIXBIT /_MSGS_/
BADNAM: SIXBIT /ABADBO/
BADDIR: SIXBIT /VANISH/
SXUNAM: BLOCK 2
START: MOVE P,[-30,,PDL-1]
.OPEN TTYCHN,[SIXBIT / !TTY/]
.LOSE 1000
.SUSET [.RXUNAME,,XUNAME]
HLRZ A,XUNAME
CAIN A,777777
JRST LOGIN
.CALL DEATH
JRST CKUSER
.CALL [SETZ ; GET FILE LENGTH IN A
SIXBIT /FILLEN/
MOVEI DSKCHN
SETZM A]
JRST FAKMSG
CAIN A,
JRST FAKMSG
MOVE B,BUFPTR
.IOT DSKCHN,B
.CLOSE DSKCHN,
MOVE B,[440700,,BUF]
MSGDTH: PUSHJ P,OUTMSG
MSGEND: PUSHJ P,WINNER
JRST WIN
.BREAK 16,140000
FAKMSG: MOVE B,[440700,,MSG]
.CLOSE DSKCHN,
JRST MSGDTH
CKUSER:
IFN NOLOSE,JRST WIN
PUSHJ P,WINNER
JRST WIN
LDB A,[063600,,XUNAME]
CAMN A,[SIXBIT / GUEST/]
JRST CKTIME
.CALL DIROPN ; REAL PERSON?
JRST CKTIME ; NOPE
.CALL MSGOPN ; REALLY A REAL PERSON?
JRST LOSNAM
.CLOSE DSKCHN,
CKNUM: PUSHJ P,ZKCNT
JRST TOOMNY
WIN: .CALL SAVOPN
.VALUE [ASCIZ /: No SAVE file?

/]
.IOT SAVCHN,[-1,,A]
MOVSI B,SIXBIT / MUD/
ILDB C,VBPTR
SUBI C,40
DPB C,VSBPTR
ILDB C,VBPTR
SUBI C,40
IDPB C,VSBPTR
.ACCES SAVCHN,[0]
.CALL MUDOPN
.VALUE [ASCIZ /: No TS MUDDLE ?

/]
MOVSI 17,STUFF
BLT 17,17
JRST 1
LOSNAM: MOVE B,[440700,,NAMMSG]
PUSHJ P,OUTMSG
MOVE B,[440600,,XUNAME]
MOVE C,[440700,,SXUNAM]
SIXLOP: ILDB A,B
JUMPE A,SIXTOO
ADDI A,40
IDPB A,C
JRST SIXLOP
SIXTOO: MOVE B,[440700,,SXUNAM]
PUSHJ P,OUTMSG
MOVE B,[440700,,NAMEND]
PUSHJ P,OUTMSG
.BREAK 16,160000
LOGIN: MOVE B,[440700,,LOGMSG]
PUSHJ P,OUTMSG
.BREAK 16,160000
OFFHOR: MOVE B,[440700,,OFFMSG]
PUSHJ P,OUTMSG
.BREAK 16,160000
TOOMNY: MOVE B,[440700,,TOOMSG]
PUSHJ P,OUTMSG
.BREAK 16,160000
CKTIME: .RYEAR A,
LDB A,[320300,,A] ; IS IT A WEEKEND?
JUMPE A,CURFCK
CAIN A,6
JRST CURFCK
.RTIME A,
LDB A,[301400,,A] ; IS IT OFFICE HOURS?
CAIGE A,'20
CAIGE A,'09
JRST CURFCK
.RDATE A,
.CALL HOLOPN ; IS IT A HOLIDAY?
JRST FLUSH
CURFCK: .CALL CURFEW
JRST CKNUM
.CLOSE DSKCHN,
MOVE B,[440700,,CURMSG]
PUSHJ P,OUTMSG
.BREAK 16,160000
FLUSH: .CALL BADBOY
JRST NEWBAD
.CALL RFDATE
JFCL
.CALL RQDATE
JFCL
.CALL SFDATE
JFCL
.CLOSE DSKCHN,
HLRZ A,TIME ; DID THE TURKEY TRY <1/2 HR AGO?
HLRZ B,NOW
CAME A,B
JRST OFFHOR
SUB NOW,TIME
CAIGE NOW,2400.
JRST LOGOUT
JRST OFFHOR
NEWBAD: .CALL MAKBAD
.LOSE 1000
.CLOSE DSKCHN,
JRST OFFHOR
LOGOUT: .VALUE [ASCIZ /:You don't believe me, eh? That makes me MAD!!!
0U
/]
.BREAK 16,160000
ZKCNT: MOVEI B,40
MOVEI O,3
ZKLOP: SOJL B,[AOS (P)
POPJ P,]
SKIPN @MSUSER
JRST ZKLOP
MOVE A,@MSRED2
CAME A,[SIXBIT /ZORK/]
JRST ZKLOP
SOJG O,ZKLOP
POPJ P,
SQUOZE 0,MSUSER
MSUSER: 0
SQUOZE 0,MSRED2
MSRED2: 0
INIT: MOVE B,[-200,,200]
MOVEI A,0
.CALL [SETZ
SIXBIT /CORBLK/
MOVEI %CBRED
MOVEI %JSELF
B
MOVEI %JSABS
SETZ A]
.LOSE 1000
MOVE A,MSUSER-1
.EVAL A,
.LOSE 1000
ADD A,[B,,400000]
MOVEM A,MSUSER
MOVE A,MSRED2-1
.EVAL A,
.LOSE 1000
ADD A,[B,,400000]
MOVEM A,MSRED2
.VALUE [ASCIZ /K
:PDUMP SYS2;TS ZORK
:KILL
/]
OUTMSG: PUSH P,A ; GIVEN BYTE POINTER, PRINT FROB OUT
PUSH P,C
PUSH P,B
MOVEI C,
OUTLOP: ILDB A,B ; LIKES BYTE POINTER TO FROB IN B
CAIE A,0
CAIN A,3
JRST OUTEND
AOJA C,OUTLOP
OUTEND: POP P,B ; GET BYTE POINTER IN B, COUNT IS IN C
.CALL [SETZ
SIXBIT /SIOT/
MOVEI TTYCHN
B
SETZ C]
.LOSE 1000
POP P,C
POP P,A
POPJ P,
WINNER: CAME XUNAME,[SIXBIT /TAA/]
CAMN XUNAME,[SIXBIT /MARC/]
POPJ P,
CAME XUNAME,[SIXBIT /PDL/]
CAMN XUNAME,[SIXBIT /SEC/]
POPJ P,
CAME XUNAME,[SIXBIT /BKD/]
CAMN XUNAME,[SIXBIT /ELBOW/]
POPJ P,
AOS (P)
POPJ P,
DEATH: SETZ
SIXBIT /OPEN/
MOVSI .BII
MOVEI DSKCHN
DSKDEV
[SIXBIT /ZORK/]
[SIXBIT /DEATH/]
SETZ MSGDIR
DIROPN: SETZ
SIXBIT /OPEN/
MOVSI .BII
MOVEI DSKCHN
DSKDEV
[SIXBIT /.FILE./]
[SIXBIT /(DIR)/]
SETZ XUNAME
MSGOPN: SETZ
SIXBIT /OPEN/
MOVSI .BII
MOVEI DSKCHN
DSKDEV
MSGDIR
XUNAME
SETZ XUNAME
MUDOPN: SETZ
SIXBIT /OPEN/
MOVSI 4
MOVEI MUDCHN
DSKDEV
[SIXBIT /TS/]
B
SETZ [SIXBIT /MUDSAV/]
SAVOPN: SETZ
SIXBIT /OPEN/
MOVSI 6
MOVEI SAVCHN
DSKDEV
[SIXBIT /MADADV/]
[SIXBIT /SAVE/]
SETZ [SIXBIT /CFS/]
HOLOPN: SETZ
SIXBIT /OPEN/
MOVSI .BII
MOVEI DSKCHN
DSKDEV
[SIXBIT /HLIDAY/]
A
SETZ [SIXBIT /COMBAT/]
CURFEW: SETZ
SIXBIT /OPEN/
MOVSI .BII
MOVEI DSKCHN
DSKDEV
[SIXBIT /TRIVIA/]
[SIXBIT /CURFEW/]
SETZ MSGDIR
BADBOY: SETZ
SIXBIT /OPEN/
MOVSI .BII
MOVEI DSKCHN
DSKDEV
BADNAM
XUNAME
SETZ BADDIR
RFDATE: SETZ
SIXBIT /RFDATE/
MOVEI DSKCHN
SETZM TIME
RQDATE: SETZ
SIXBIT /RQDATE/
SETZM NOW
SFDATE: SETZ
SIXBIT /SFDATE/
MOVEI DSKCHN
SETZ NOW
MAKBAD: SETZ
SIXBIT /OPEN/
MOVSI 1
MOVEI DSKCHN
DSKDEV
BADNAM
XUNAME
SETZ BADDIR
STUFF: OFFSET -.
2
.CALL LOAD
.VALUE
.IOT MUDCHN,A
.CLOSE MUDCHN,
ADDI A,1
JRST @A
LOAD: SETZ
SIXBIT /LOAD/
1000,,-1
SETZI MUDCHN
OFFSET 0
MSG: ASCIZ /
ZORK is down for repairs. Sigh.
/
OFFMSG: ASCIZ /
ZORK is not available during office hours (9 AM to 8 PM, Eastern time.)
/
TOOMSG: ASCIZ /
There appears before you a threatening figure clad all over
in heavy black armor. His legs seem like the massive trunk
of the oak tree. His broad shoulders and helmeted head loom
high over your own puny frame and you realize that his powerful
arms could easily crush the very life from your body. There
hangs from his belt a veritable arsenal of deadly weapons:
sword, mace, ball and chain, dagger, lance, and trident.
He speaks with a commanding voice:
"YOU SHALL NOT PASS "
As he grabs you by the neck all grows dim about you./
NAMMSG: ASCIZ /
Losers with the name /
NAMEND: ASCIZ / cannot play ZORK!
/
LOGMSG: ASCIZ /
Losers who are not logged in cannot play ZORK!
/
CURMSG: ASCIZ /
The system is VERY loaded. Please try again later.
/
BUF: BLOCK 200
BUFPTR: BUF-.,,BUF
PDL: BLOCK 30
END START