From e79a96a4309efd1d79253108aa79e62cf8c74fca Mon Sep 17 00:00:00 2001 From: Adam Sampson Date: Tue, 1 May 2018 15:14:26 +0100 Subject: [PATCH] Import two files from Confusion's version of Zork. We can't use the real version of TELL for now because we don't have the MDL assembler. Confusion is an Muddle interpreter for Unix, and provides a pure-Muddle partial implementation of TELL (although we also can't use this as is, because it uses Confusion's primitives which aren't quite the same as real Muddle). --- src/cfs/cload.1 | 20 +++++++ src/cfs/ctell.1 | 138 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 158 insertions(+) create mode 100644 src/cfs/cload.1 create mode 100644 src/cfs/ctell.1 diff --git a/src/cfs/cload.1 b/src/cfs/cload.1 new file mode 100644 index 00000000..6b4df081 --- /dev/null +++ b/src/cfs/cload.1 @@ -0,0 +1,20 @@ + > > + + + + + + + + +; + + + + + + + + + + diff --git a/src/cfs/ctell.1 b/src/cfs/ctell.1 new file mode 100644 index 00000000..3cdb9e8f --- /dev/null +++ b/src/cfs/ctell.1 @@ -0,0 +1,138 @@ + +;"A PSTRING is a 36-bit string containing 5 characters of 7 bits. This is of course grossly PDP-10 specific, but easily fakeable provided WORD is at least 35 bits" + + > 0> + > PSTRING>>) + (T ) + > + > + .INSTR> +> + +; STRINGP converts a PSTRING to a STRING +> 0> + > FIX>> + 0> + >) + (T )>) + (T )>>>> + + +;"F1 upper 18 bits are length to print (from S1?), if not zero" + "OPTIONAL" FIX + ) + FIX>>> > + > FIX>> + >> + + > + > + FIX>>> > + +> + +; Read a line after printing the prompt +; ALT means accept only alternate terminator character +; (ALT not supported yet) + + + > > +> + +;"A DSKDATE contains +Time in half-seconds in 0-17 +day of month ( 1-31) in 5 bits at bit 18 +month number ( 1-12) in 4 bits at bit 23 +year of century in 7 bits at bit 27 +(Yes, it's not Y2K safe)" +;"It's not necessary to do all the sets, but nesting putbits calls will +make my head hurt a lot -- MTR" +) (W #WORD 0) TM) + <+ 500000> <* <1 .DVEC> 2> <* <2 .DVEC> 120> <* <3 .DVEC> 7200>>>> + 100>>> ;"Year" + <5 .DVEC>>> ;"Month" + <4 .DVEC>>> ;"Day of Month" +> + +; "ATMFIX takes the atom, gets the first 36 bits of the PNAME (as with PSTRING), does some bit manipulation on it and on the value of SRUNM (the user name), and returns the result as a fix. Probably intended to prevent save file sharing +ATMFIX may also be passed a PSTRING, in which case it does the same bit +manipulation as it would on an atom PNAME +The bit manipulation rests on the assumption that the top two bits of a character +are never both set (no lowercase or a few other symbols)" + + >>) + (ELSE ) + > +> + + -1> .PNW> > FIX> +> + +; "FIXSTR is the inverse of ATMFIX. It takes a FIX and returns a STRING + which is the PNAME of the ATOM which was previously given to ATMFIX." +>, applied to .F before the below" + .F>> + -1> > .F>> +> + + <+ 1900 .Y>) (T <+ 2000 .Y>)> +> + + + +> + + + + > + + + + + + > ;"I don't know what this is supposed to do" + +> ;"Interrupt handler -- not implemented" + + +)) + ,STACKDUMP-ATOMS-TO-SKIP>> + > + >) + > + TOPLEVEL!-> > + > + > +> + + <7 .CHAN> + > "") (T >)> + > +> + +;" Dispatch -- runs a thing, possibly with an argument" + + .OV> ) + (ELSE ) + >) + (ELSE .NO>) + > +> + +> >>> ;",NULL is an atom with a name containing a single rubout in real MDL. Here it's a totally empty atom (which probably isn't legal in real mdl) " +""