diff options
Diffstat (limited to 'dviware/crudetype/version3/nasty.tex')
-rw-r--r-- | dviware/crudetype/version3/nasty.tex | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/dviware/crudetype/version3/nasty.tex b/dviware/crudetype/version3/nasty.tex new file mode 100644 index 0000000000..9b9df6c5bb --- /dev/null +++ b/dviware/crudetype/version3/nasty.tex @@ -0,0 +1,167 @@ +\input webmac + +% NASTY.TEX. Designed to catch bugs in Crudetype device driver +% Here is TeX material that gets inserted after \input webmac + +\message{!! For lineprinter, magnify me to 115 percent !!} + +\def\hang{\hangindent 3em\indent\ignorespaces} +\font\ninerm=cmr9 +\let\mc=\ninerm % medium caps for names like PASCAL +\def\PASCAL{{\mc PASCAL}} +\def\pb{$\.|\ldots\.|$} % pascal brackets (|...|) +\def\v{\.{\char'174}} % vertical (|) in typewriter font +\mathchardef\BA="3224 % double arrow +\def\({} % kludge for alphabetizing certain module names + +\def\title{TANGLE} +\def\contentspagenumber{0} +\def\topofcontents{\null\vfill + \titlefalse % include headline on the contents page + \def\rheader{\mainfont Appendix E\hfil \contentspagenumber} + \centerline{\titlefont The {\ttitlefont TANGLE} processor} + \vskip 15pt + \centerline{(Version 2.5)} + \vfill} +\pageno=\contentspagenumber \advance\pageno by 1 +\def\title{TANGLE changes for \AA Vax/VMS} + + +\N199\*. System-dependent \AA changes. +Here are the remaining changes to the program +that are necessary to make \.{TANGLE} work on Vax/VMS. + + +\fi + +\M1. \P$\X1:\X\S$\6 +$\\{store\_two\_bytes}(\O{150000}+\\{module\_count})$;\C{$\O{150000}=\O{320}% +\ast\O{400}$}\par +\fi + +\M200\*. This variable is for speeding up the output routine. + +\Y\P$\4\X9:Globals in the outer block\X\mathrel{+}\S$\6 +\4\\{out\_temp\_buffer}: \37\&{packed} \37\&{array} $[1\to\\{out\_buf\_size}]$ % +\1\&{of}\5 +\\{char};\2\par +\fi + +\M201\*. On Vax/VMS we need the following special definitions, types, variables +and procedures to be able to get the file name from the command line, +or to prompt for them. + +\Y\P\D \37$\\{VAX\_volatile}\S\={volatile}$\par +\P\D \37$\\{VAX\_lib\_get\_foreign}\S\={\ lib\$get\_foreign}$\par +\P\D \37$\\{VAX\_length}\S\={length\ }$\par +\fi + +\M143. Inputting the next token. +As stated above, \.{TANGLE}'s most interesting input procedure is the +\\{get\_next} routine that inputs the next token. However, the procedure +isn't especially difficult. + +Another global variable, \\{scanning\_hex}, is \\{true} during the time that +the letters \.A through \.F should be treated as if they were digits. + +\Y\P$\4\X9:Globals in the outer block\X\mathrel{+}\S$\6 +\4\\{cur\_module}: \37\\{name\_pointer};\C{name of module just scanned}\6 +\4\\{scanning\_hex}: \37\\{boolean};\C{are we scanning a hexadecimal constant?}% +\par +\fi + +\M144. \P$\X10:Set initial values\X\mathrel{+}\S$\6 +$\\{scanning\_hex}\K\\{false}$;\par +\fi + +\M146. \P$\X146:Go to \\{found} if \|c is a hexadecimal digit, otherwise set $% +\\{scanning\_hex}\K\\{false}$\X\S$\6 +\&{if} $((\|c\G\.{"0"})\W(\|c\L\.{"9"}))\V((\|c\G\.{"A"})\W(\|c\L\.{"F"}))$ \1% +\&{then}\5 +\&{goto} \37\\{found}\6 +\4\&{else} $\\{scanning\_hex}\K\\{false}$\2\par +\U section~145.\fi + +\def \<{\lbrack} \def \>{\rbrack} +\def \nl{\hfill\break} +\font\stt=cmtt9 +\font\rr=cmr10 +\def\cstok#1{\leavevmode\thinspace\hbox{\vrule\vtop{\vbox{\hrule\kern1pt + \hbox{\vphantom{\stt/}\thinspace{\stt#1}\thinspace}} + \kern1pt\hrule}\vrule}\thinspace} % control sequence token + + + +% %\def \boxit#1{\vbox{\hrule\hbox{\vrule\kern3pt +% % \vbox{\kern3pt#1\kern3pt}\kern3pt\vrule}\hrule}} +% \rr +\vskip 0.5in +\centerline{EXAM MARKING PROGRAM} + +1. When the program types a question mark, it is asking you for input. +All input must be terminated by typing the \cstok{RETURN} key. + +2. Whenever you do not know what to do next ALWAYS start by typing a question +mark, or {\tt H} + (stands for HELP) (followed by \cstok{RETURN}). This should give a help +message. + +\vskip 0.5in + \centerline{Method of use} +\vskip 0.4in + + Whenever the program types a question mark, it is asking you for input. +All input must be terminated by typing the \cstok{RETURN} key. On some +terminals this is labelled \cstok{ENTER}, on others it has a bent arrow. You +cannot type ahead. You have to type 1 line at a time \& wait for the program +to digest it. This line-at-a-time mode of operation is very old fashioned and +clumsy, but I did not think it would be practical to attempt anything better +with the present combination of a slow VAX, and VMS, and bug-eaten network. + + + +\N206\*. Index. + + +\ch 1\*, 2\*, 3\*, 4\*, 7\*, 12\*, 20\*, 21\*, 22\*, 26\*, 27\*, 28\*, 38\*, 97% +\*, 179\*, 180\*, 182\*, 187\*, 199\*, 200\*, 201\*, 202\*, 203\*, 204\*, 205% +\*, 206\*. +\inx +\:\.{ Nested named module }, 189. +\:\.{\AT!d is ignored in PASCAL text}, 167. +\:\.{\AT!f is ignored in PASCAL text}, 167. +\:\.{\AT!p is ignored in PASCAL text}, 167. +\:\|{a}, \[74], \[87], \[165]. +\:\\{abs}, 103, 157. +\:\\{accumulator}, \[157], 158, 159. +\:\\{add\_in}, \[157], 158. +\:\.{Ambiguous prefix}, 69. +\:\\{and\_sign}, \[15], 76, 114. +\:\\{app}, \[99], 101, 102, 103, 111. +\:\\{app\_repl}, \[93], 165, 166, 167, 168, 169. +\:\\{app\_val}, \[99], 103, 111. +\:{ASCII code}, 11, 72. +\:\\{ASCII\_code}, \[11], 13, 27\*, 28\*, 38\*, 50, 65, 94, 95, 100, 126, 139, +141, 165, 198. +\:\\{ask}, \[203\*], 205\*. +\:\|{b}, \[87], \[97\*], \[165]. +\:\.{bad character in input...}, 197. +\:\\{bad\_case}, \[107], 109, 110. +\:\\{bal}, \[87], 93, \[141], 142, \[165], 166. +\:\\{banner}, \[1\*], 182\*. +\:\&{begin}, 3\*. +\:\\{begin\_comment}, \[72], 76, 121, 139, 147, 196. +\:\\{begin\_pascal}, \[139], 156, 158, 167, 175. +\:\\{boolean}, 28\*, 29, 124, 127, 143, 179\*, 193, 194, 203\*. +\:\\{brace\_level}, \[82], 83, 98, 121, 196. +\:\\{cur\_module}, \[143], 151, 167, 175. +\:\\{cur\_name}, 78, \[79], 83, 84, 85. +\:\\{cur\_repl}, 78, \[79], 80, 83, 84, 85. +\:\\{cur\_repl\_text}, \[164], 165, 170, 175, 178. +\:\\{cur\_state}, \[79], 84, 85. +\:\\{cur\_val}, \[86], 87, 89, 116, 119, 121, 196. + + + + +\par\vfil\end |