`E`EQTERM PATAH  `E`EROGUE COMC^  `E`EROGUE DOC9{  `E`EROGUE NOT.I  `E`E Patching QTERM for your system. The first thing to do is to back QTERM up, and then invoke DDT, SID, ZSID, or whatever your local patch utility is, in the following way: A>DDT QTERM.COM DDT (etc.) will read in QTERM, and then prompt. The following is a list of patch areas where QTERM should be changed to reflect your system. Some of these are mandatory (i.e. QTERM won't work without them), whereas others can be changed to null subroutines or empty data without preventing QTERM from working, it just won't have all the features available. 1. Modem input status: 0110 - 011F QTERM calls here to check RDR: status. Return with the zero flag set if no character is available, or with the zero flag clear if a char is available. Generally this can be an input from the usart / sio / dart status port followed by an 'and'. 2. Read modem character: 0120 - 012F This gets a character from the RDR: port once the input status has decided it's there. Return the character in the a register. Generally this can be an input from the usart / sio / dart data port. 3. Modem output status: 0130 - 013F Check if the PUN: port can accept another character. Return with the zero flag set if the PUN: port can't receive a character, or with the zero flag clear if the PUN: port is ready. Generally this can be an input from the usart / sio / dart status port followed by an 'and'. 4. Write modem character: 0140 - 014F Send the character in the a register to the PUN: port. This will only be called after the output status routine has returned a non-zero status. Generally this can be an output to the usart / sio / dart data port. These first four patches are all necessary for QTERM to work. The next few are not necessary, but they will be useful. 5. Start break: 0150 - 015F End break: 0160 - 016F The start break subroutine at 0150 should initiate a break condition on the modem output line, and 0160 should clear the break condition. If these are to be omitted, then just put return (C9) instructions at 0150 and 0160. 6. Drop DTR: 0170 - 017F Restore DTR: 0180 - 018F The drop DTR subroutine causes DTR to be made inactive, and restore DTR returns DTR to an active state. If these are to be omitted, then just put return (C9) instructions at 0170 and 0180. 7. Baud rate setting: 0190 - 019F Baud rate table: 01A0 - 01AF These two patch areas work together to allow QTERM to change the baud rate of the modem port. The baud rate table holds pairs of bytes for setting the baud rate to eight different values: 38400, 19200, 9600, 4800, 2400, 1200, 600 and 300, in that order. In these pairs, the first byte will be passed to the subroutine at 0190, and the second byte is used to enable that baud rate: an 0FFH in the second byte enables the rate, and a zero disables. So if your system only went up to 9600, (using a value of 1 to get 9600) the first six bytes in the table would be: 00 00 no value for 38400: disable by the 00 00 00 no value for 19200: disable by the 00 01 FF 01 is the value for 9600: enable by the FF In all cases of enabled baud rates, the subroutine at 0190 gets the appropriate value in the a register and should use it to set the baud rate. If this is to be omitted, then just put a return (C9) instruction at 0190, and fill the table from 01A0 to 01AF with 00's. 8. Communication mode setting: 01B0 - 01BF Communication mode table: 01C0 - 01CB These two patch areas work together to allow QTERM to change the communications format of the modem port. The mode table holds bytes for setting 12 different formats, selecting number of data bits (7 or 8) parity (odd, even, or none) and number of stop bits (1 or 2). In order the 12 values are for 7n1, 8n1, 7n2, 8n2, 7e1, 8e1, 7e2, 8e2, 7o1, 8o1, 7o2, and 8o2. The subroutine at 01A0 gets one of these values in the a register and should use it to set the communications mode. If this is to be omitted, then just put a return (C9) instruction at 01A0. 9. Processor speed: 01CE This is the speed in Mhz that your Z80 runs at: 4, 6 or whatever. For a 2.5Mhz cpu, use 2. 10. Escape character: 01CF All special functions of QTERM are activated by the use of escape sequences. At 01CF is the byte used for the escape character (the default is ^\). Any byte can be used, but a little used value is best selected, also using a printable character (' ' thru '~') may have undesirable results. Note that to transmit the escape value itself, just type it twice. These previous two are necessary. 11. Signon message: 01D0 - 01EF This must be a string that identifies your system / terminal. It must be present, and is printed when QTERM first starts. As with the previous strings it must be terminated by a zero byte. 12. Clear screen: 01F0 - 01FF This must be a string that clears the terminal screen, and leaves the cursor in the top left hand corner. 13. Moveto: 0200 - 022E QTERM requires the ability to move the cursor around the screen. It calls this subroutine with the required coordinates in hl: where h is the row, and l the column to move to. The top left hand corner of the screen is 0,0; and the bottom right corner is 23,79. This subroutine will have to do terminal output: at 0109H is a routine that prints a character in the c register, and at 010CH is a routine to print a decimal number in hl (mainly for the use of vt100 and vt220 compatibles). Note that the above two subroutines will destroy all registers, and that this subroutine can also destroy all registers. 14. Teminal capability bit map: 022F This byte contains one bit set for each of the following terminal capabilities: bit 0: (01H) bright (end highlight) bit 1: (02H) dim (start highlight) bit 2: (04H) delete line bit 3: (08H) insert line bit 4: (10H) delete character bit 5: (20H) insert character bit 6: (40H) clear to end of line bit 7: (80H) clear to end of screen 15. Terminal capability strings: 0230H - 026FH In this area are eight strings, each of which can be at most eight characters long. They are the strings to be printed to perform the terminal capabilities mentioned above. Each one of them should be terminated by a zero byte. Hence at 0230H is the string for dim (start highlight), at 0238H is the string for bright (end highlight), etc.; with 0268H being the string for clear to end of screen. Programs that use these will check the terminal capability bitmap at 022FH before using them, to determine if they are available. 16. Patch area: 0270H - 02FFH Since the area provided for the above patches is limited, it may be necessary to use more space. The block of memory from 0270H to 02FFH is set aside for custom patches, this can be used if the individual spaces are not big enough. Once all the patches have been made, exit the patch program (usually by typing ^C), and finish up by saving a new copy of QTERM: A>SAVE 45 QTERMNEW.COM In addition, the patch area only can be saved as follows: A>SAVE 2 QTERMPAT.XXX Which will create a 1/2K file containing all the patches needed to make this particular version of QTERM work. By doing this, when a new release of QTERM needs to be patched, all that is necessary is to read in the new unpatched version with DDT or whatever, then overlay the patch area. This is typically done by typing: IQTERMPAT.XXX to DDT, SID, ZSID etc. to set up the command line to read QTERMPAT.XXX, then follow this with a: R to read it. This should overlay the saved patch area on the new version, hence doing all the patches at once. Then exit DDT with ^C, and do the first save shown above to save the new working version. NOTE: this "overlaying" of patches will NOT work with versions 2.8 and earlier, however from 3.0 onwards the patch area is guaranteed not to change. To aid in patching from earlier versions, the main changes are: 1. modification of the baud rate table (expansion from the 4 byte table with 300 1200 2400 & 9600 only) to the 16 byte table that covers up to 38400, with selective rate enable; 2. moving the processor speed and escape values; 3. addition of the terminal capability patch area; 4. addition of the patch area at 0270 to 02FF;  -/./> .>.>$!!+ ,(Televideo TS803) = |} O ()REWQTY===PATCH AREA===:222 {!~OG(M#~\ @T]HD#~N > &R > T > B >F > E >w  wPX}8~+(##+!*"lbj9F*l!hˎ!á!>Oͪ!9͡* h!9͡*h!9͡* h}& $> 0o!9͡*h>( *h!9͡*h}8!9͡}!9Ln!9͡* h|( *h d  |0 *h>/ * h[h!9z(1!@R!R!98 !9!hN' g~# ~ #͗:/@ ( => ×!`á!h ^˞Ķ*g͗!:|( >- [9& 8|{0O 8!E͗!:͡ _or3;!:V4!V4!,:V4;͂":uh !G:^#V{(#~#2gOr3:gGGy:008:g   !h=OLyL͙\l . ̀ > O(( }!\##p#6#w#q^V ͂"^#V!9)7( !<͡Ó! 6͑<(!Y͑͑(*l"Y*gq9| ͑p*"l'!͂"ͫ!YY 6+6 !lN N N " 0" 0 " 0 Z͊ !R0!l ~<  ####y0`h$< (< ݾ( ݾ(ݾ(w !9~ ->% &4}G>*  (>:  , >0ò Ex(  G͝>@ 6.Sg!Z>~A 6.## x ..Ea!Z>^!D<ͽ8$(6.## x '!.̀ }ůWn : H : H n  ů n d j d j G w##P0<8&3xO!~l N ~8YVo (YVo N ~8$Q^o Q^o (ͦ ͦ ngͶ 6#g.̀ |(: h0P0n_D_.d̀ R?WN ~=8.anͶ 6|anͶ 6|^~=8akͶ 6.#r#N ~8ifͶ 6-ifͶ 6-͐ ͐ ͐ ͐ ͐ ͐ ͐ ͐ bk{P0 z0Ͷ ɯ~6##<w+Ͷ #lg))))]T))W)Y~!,<o #o x 7 y Y F "yj A{ P_7 _Y B7 xj z YWY W7 KY yj y(i`J bkͶ (#Ÿ6#xj x(i`J ~lo&~< ##^#VPo& ^# = V= ^+ WV+++ _: h2 0=OO.d̀ BbkͶ >+0#+~w = = F##~Oì } 04 #4.̀ } n&.̀ .P̀ cS]ͱ . ~+8 N ~=8^~=8akͶ bkͶ w _R>? #\ͫ R>! #\ͫ w#6#6. ̀ } &4} > *.h|( ^#V+S.h!͕8|<>3 [*h"*h\>^ 6.!5 !`5 !5 !5 8#.̀ } .̀ - >\w~+7#~R>/ 6.#\ *=h $< *?h&4}*;h  *9h|~#foA ͫ !Ah46# "8 wA ͫ 0!Bh46#6:44 (wA @ (F !ChA P !Dh468'  = 0     w#6  w0&4)8 [(h"(hs#r#͝!ˆ!~#foͶ 6.͵ͱ ˞>A 6.###s#r [,h",h\>A #\.̀ x(}!vhL~ ))))Vx( : h8#0s#F#~..w#6 #w͂"c 7:'h2h[gyysysysys>2h'!= N ~8^~8akͱ akͬ~#bkͱ G nċ~ !hV x.~# x|-͗ͱ ~ "x?˦ͱ ~(G( ( N('~!EI>M M G(_˟(. ̀ }!E+ !>^"~!J>L~#fo͆B/+w#G[g !l>1g!O<!g͆Ó~0{8#z8 #~8#~8####*gͬ=$=,=%=%=-=-=<$ͱ f ^(####~ :4h F+~.͗> ͂"cͫ!+!͕,}P o$| '!ͱ N(. F(> GͲ͗Ͷ T]ͱ #(} (y*gͱ #(j^(F(f Kn,f$ͱ F(8@T]Ͷ #(1~#('F(~< ͱ N( R*g|[0}[0ɇ0D*gͶ w#n,f$ͱ ~w<####~PCO!1h~(5#~( B/5!W<Æ#( 5 !j<͆#~(5͂"*h| ye( &4}p!<ͽ8)<^#V!hV˖(CNˎ!>Oê! :'hW( .̀ }(:3h( .̀ )< N#Fj :0h(1. ̀ :h 8 0 !=L~>>0 B/!=O20h*g|(}(U bkU( >/B/'!bkͱ ^„fā+(.( #(%(^a* Y`if^˦> : h8>&4)8>o&))))))3c(*h"hgB!7= : !h4!D= ,±2%h!T͆+6. :sh(!N=O!"a=bk͉$͗,ͪ%͗%ͪ-͗-ͪ$͗$ͪ*a=}0|(  W(*g͗ͱ F(. > bk"gͶ ^:&hg>L >!lw 6:&hg>e > *&h\("!h~d8dw8[h*hR(ShͶ}&(-[h|(!"h@x( !+!c=͆'!x(!+!z=x(!+7!=B8B8ͱ n(ˮ+6^Ͷ +(&# !a=4ͱ *(,(:( %(^(~!b=w"~ !=͆..V>= !=͆..d>ñ!= !=͆<20h= !=͆'g,= !>͆>^ >@ 6.Sg&4}22h!<ͽ8$!hͶ .*:^%,ͫ!Bͫ!>͡'Q+˦B/͐bkñ ͂"'N#Fq#p!N#FQ!l͆y!5h(=!7h(=!9h(=!;h( =!=h(!?h~#fo()####y #x( ~#w*.h".hs#r~#(~+ngr+s'!!,h!*h!(h^#Vz>2!N#FB PYɅo$͜*ihR!E( *khR!E(*mhR!E( *ohR!El L~#fo~ !nM&lB> ++~G D>!hL~!E͓_(!E͓!hLL͓!E͓!E͋= K>!EhL~ !tlL~!;͋!F͓_!F͓_= !E͓!i!E͓!F= d>!QhL~ !hlL~!;͋!5G͓!6G͓= !E͓!|j!E͓!;G͋x(>[###n&B6]#6= T>!]hL~ !\lL~!:͋!G!G͓= !E͓!lk!E͓!GO͋x(yh= xh!UH>͋_!H͓xh!H>͋!H͓KBJ 8|J{0YP >s>[###n&u>+(}Do>-˽B>]*7h|(A!I ͫ-|-A8!7hG^#V|( 5 ^!#IN#F>!/IO͂" 2Fh![I͆*h[hR(. ̀ }LѷR8"h(*h#"h2Eh:'hO c!kI͆.̀ E!h!+'!2Gh!~I͆ 24h!Il͓&4}!IL~#fo͓!I͓͆ !I[!#J͆:h!h ~!hwͶ?!RJ͆>//2Ph!hJ͆*h"h*"h" h!!2Kh 2$h!JT2Lh 23h!JCn4~5{!hh(!Ehi=(!Qh|j=(!]hlk{LN(!JO͂"L~  ͑!l^#r_6`iLL!l'!!Z@~* ## x z !J͆?!h!!K2Hh!@K͆'ͫ!Ͷ * ͗>$ ,}P o$| -*,h|(!^K͆'ͫ͟!͟!͗A | !Nh6[.h+r+s".h*5h|!K ͫ-|-A8!5hG^#V|( 5 ^!KN#F!K͆>2h!K͆'!Y~#.(*(:( nˮ(+6+## x p'!!h!K!!,h^#Vz( !ˆ!L<21h!;Lç2hO>@ 6.Sg2sh*mh| !gLL4˾+++~pP ! h5Ͷ`i*oh|(L*(h|ʤ!L͆'ͫ͟!^#V͗>$ | !h6-2hOc!L(]!M͆N ~'!^~8akͱ ˆakͬ2h!M͆.|'!!~ ~!hL6Q!lO= ~!Eh= ~!Qh= ~!]h2h!AM͆!lM[0A8!vhL4'!a##~#foͱ ˞@&4}!A 6.#^ s#r# ì*=h|͚"͇!!{M ͫ-|-A8!=hG^#V|(*mhR5*!5 )?!ͱ ^sr(R~_###~/G!MN{8! x8*mh|(####~ ##~/<>-!:gm \R>@&4}!/ >.w#f \͵ @$z *mh|(!####~ ( =(=(###~/G7-!͂"͚"~_## F!MĆˆ#))))V DM*h>% 8 A5!!6No!<ͽ8)8<^#V#!h~!>NL*hR"h+)Ҷͫ_NͲ"͡OͲ"*h 8R!T͡OͲ"!͗Ó[h[ hDM! 0S hDMCh*"hR *hB0;! h4. .{*h"h*h"h*"h)""h*h)"h0 "h*"h#""hͶg!O͓* h&BÆ!9!+| *gͶ gn,f$ͱ ~og<o͗( !U~6!$h~( 5!ŎF͂"&4|a!th4~ w*,h|'!^#V+M#͂"c*,h|(##~#fo~(gĬg̬~#fo!~GW:th(G ~++(4+G~x #(4(4##]TN#F*g|7%W}7%_####N ++~= .̀ - .̀ }! ͓o&ı!P͑$!>* h* h===L30$y( ~(G~o.O>><ͱ ^ ͵(( -( |(a2l*9h|%͚"͂%%=((8('!!Rh%t!5P!\h%!SP͆..lͱ!%͚"͇!͂%%_>!Qh%͝(w!aP~#fo!yP!~P!PP͓*g͏"ͱ ͵(([9͵ ͗~ ͏"!9! 9s#r*gR  ͵@$ ͱ *gR 8...g!P͓C30 !P͓ !P͓lͱ!͆ ^(i.G!P (?!]Tͱ ^(ˆf +++~+ng@$*gͱ ^˞ ͵( \@$Ͷ ͵( r'.̀ }(~0wo&))))VF#~..#w#ˆ˦#!h&r'!P##^#V.M.E r''!͘'< ͘'[9ͱ ^(YP##\~  2shͱ ##ˆ˦r'!N#F#n&))))V DM |>-}>||>\>/.#+*:^%,Q>A2l!lh~++~+ !PO##( *(++^#V ~( :1h !PO͠**j*?h|(k*oh|(~(:1h(+Dw!"ohͶ!P ͫ-|-%('A8!?hG~#fo("oh+w!h8*=h|(T*mh|(~(:1h(!"mh!Q ͫ-|-%(A8!=hG~#fo("mh!h'!*;h|*ih|( *kh|!;Q 8!GQ ͫ-|-A8!;hG~#fo(*ihR(*khR !gQO*kh|*ih *( "ihz("kh*!~v*Ͷ_?'!~###  h8= h͏*h=qh(=rh(+++~  h= hͻ*h=qh(=rh(!nQL(R !hˎR!"&h*ih**kh|~G!()[&hj9"&h~/+++_~! h!h~ w!h~ !QO5&4)> !Q8>!Q//>/pͶ'!!Q*gͱ #(. f .|(M/5*[(h+r+s"(h[g##s#rͱ !h>/.|(~_@!Q/>/!g!QY(!>ͪ!Q͡Q ͑#^#r*Y"lQ)7!< ! 6͑͑!Y͑!*YR0 ͑!R͑Ó>/!RY( '!*gͶ % 0! h4ͅ-͙8:%h( *gͶ %(! R0!*R͆'! h5n,ͫ!UR͡*h[h*7h|( ͵/~#fo*5h|( ͵/~#fo*;h|( /~#fo*9h|( 0~#fo*=h|( }/~#fo*?h|( p/~#fo!T͡!>/ͫ*hM!T͡-!T͡ .:%h( !T͡ . .--!9h#('ͫ----͂"'T+*(h|!"(hİ-**h|!"*hİ-*,h|!",h^#V{ [.hr+s".h >s *5h*7h*9h *;h*=h*?ha|x > Q!l͡ .~#fo !Tá.̀ ,!5h # !T͆`h!To!E<ͽ8E(7*5h| !T͆! U!5h ͫ-|-A8G^#V|("*7h| !%U!0U!7h ͫ-|-"*9h| !KU!TU!9h ͫ-|-"*;h| !mU!vU!;h ͫ-|-"*=h| !U!U!=h ͫ-|-*?h| !U!U!?h ͫ-|-o:h0>2h!U4!h*ihR(*khR(*mhR(*ohR~!U ~!UL^###~/!/+(!d{ 0! =()~!ULn&##n&8~! ((!()8 )~!=/!(~! VL^###nb8!( ) () )>D3:'hO!X !hͶ!XÆ>D3:2h 22h!X!^˞..o>D30=!X͆YC3...."Yñ!z2shC38'.̀ %5h]T~#fo(M/( y ..+Y  G^#V+z M/( ~6Q=w!!=Y :lc3( !l5 #!l4l#w+6!d2 O*hB"hͶ!?Y##^#Vbk͗ͱ ˞GͲ!Æ!h##^#fkTͱ .~0+N ~=>*8^~=8akͶ * ~w.̀ -##N#F`iͱ .nfR͉2.E P _!ChD @ _H>8 O!Dh+ _!Ah4V G- 0 :(_!Bh4V..EX ( _\q#p#*oh|~! h~ (455Ͷ!YYÆC3 23h!mY!^&4)˞>D3! h5(R. .*hR"h8A*hR"h*h["h(3"hS"h(3"hS h!!!Y:<!0uYñ!* h=Q3.}(8aeioux9z Z !Y= 8͵7 ͍9(} 6͍9 ( Y ( ͍9ѯ= _G\͍9X_W= *Y"Y*Yq9"Y&4&4!!|(<00# )*Y[Y)j|84SY"Y[Yc9\9c9"Y!"ll"ld4͂"!++!96"l!#9N#F#͓4##'! %( 6}6>5+w+w+w=+w+w %(- 4 0 4͌7ut.  *(:0 08 ͌7ut^#V# (wa(A$6r(RK6zʦ6c(s(0x((p(o(b(d(xu(~Ó4664n~(#~~0NF~_~W0~ z(> 6x(~6# z(> 6z(> 6|(4[9 rKl^V^8{0:8'6| ݶ(>-6z(#~ ݶ( - 6 ~> (>06 (6 |w(Kl+8{6| ^Vw_|(}ֈ|Kl8nf| .>*6+| :6 8~!=( U!=(U!ͱ65 }.6N#F#͓4>5{ z6>86lT(}6=^V6sr݆z#_*l|(|<(s#r"l!%7*l*l7T]pT]6  !8B0>: y=+~@+w%. xy(# ͝9x(=8w #* ^#V# ! :00)T]))_̀9~#o7x9| --b8*YK!$N(wy ~ . 7y#N#Fp+q##N#Fp+qO+~ :###͍9!͍9 !!%p#p#]Ts#r#6i&!$!E! ! !M:Y {  ͍9 ͍9*KYBDM*YB8!"Yx9E!((#!DM!x 80)z bjz bjz|[9|[9!{z8))0??!x(R8 33[9+|/g}/o|g}o|g}o|g}o!!9^#V#~#fosl{aLevel: Gold: Ac: Hp: ) Str: 18/2AKPUZ\^`abcd Exp: Fainting Hungry Weak@-- More --ROGUE - V1.7 DPG 1985: Hit any key to continue #$JV&zV&V4V3 W'LWZW$[W$WDE3 aldeatofbroncurgdretdalbelugertafrapgorlhinaiploiwutjorkkredlanimernnapiocruoledpenaradlstugseritrentalbunirutravoliwustyolazern5;:;?;G;O;T;Z;c;l;v;z;;;;;;;;;;;;;;;;;;;;;;;<<<.iescdqrzpwtWQSPR /?HJKLYUBNhjklyubn'!],w,%-)++e+2&P&)o$)J,+)(+Q+jr(-27#You are still caught in a beartrap gold piecesSome foodYou are being heldYou are getting hungryYou are weak from hungerYou faintOh no! an arrow just hit youA small dart just hit you in the armYou are caught in a beartrapYou fell through a trapdoorA strange cloud envelops you, and you fall asleepV>d>p>{>>>An arrow trapA dart trapA beartrapA trapdoorA sleeping gas trapA teleport trapLegal commands are: h move left l move right j move down k move up y up & left u up & right b down & left n down & right H run left (i.e. keep moving till you find something) L run right etc. etc. etc. > down stairs < up stairs . rest i inventory e eat food s search for traps & secret doors d drop something c call something (i.e. give it a name) q quaff a potion r read a scroll z zap a wand p point a wand in a direction (fire it) w weild a different weapon t throw something W wear different armour Q quit S save game for later P put on a ring R remove a ring ^R retype last message ^L redraw screen / identify things ? list commands (this display)Objects and what they are: A giant ant B bat C centaur D dragon E floating eye F violet fungus G giant H hobgoblin I invisible stalker J jackal K kobold L leprachaun M mimic N nymph O orc P purple worm Q quasit R rust monster S skeleton T troll U umber hulk V vampire W wraith X xorn Y yeti Z zombie - | walls of rooms + doors # passage % stairs ^ traps . empty room ! potion ? scroll / wand = ring ) weapon ] armour : food * gold (on left hand) (on right hand) (weapon in hand) (being worn)scroll called of EFFF%F2FBFOFXFaFsFFmagic mappingenchant armourenchant weaponlightdetect magicconfuse monsterremove curseidentifyteleportaggrevate monstercreate monstergenocide potionFFFFFFFFF GG)Gpoisonextra healingdetect goldrestore strengththirst quenchinghasteconfusionsee invisibledetect monstersextra damageraise level wandSGFZGeGjGoGyGGGGGGwonderlighteningfirecoldpolymorphmagic missileslow monsternothingteleport toteleport awaylife drain ringGGGHHFH)H8HG@HHHprotectionsustain strengthdexterityincrease damagesearchingadornmentslow digestionstealthhiccupsregenerationmHwHHHHHHHHHHHshort bowcrossbowslingtwo handed swordlong swordmacespeardaggerdartarrowcrossbow boltrockset of armourHHHIIIplatesplintchainringstudded leatherQuaff what? (* for list)Nothing appropriate>PYou feel betterYou feel very sickYou feel much betterThis tastes just like IIIIIIIIappleapricotbananacherrygrapepeachpearstrawberry juiceYou feel ill for a moment, then it passesThis is great: it makes you feel warm all overThis tastes very dullYou suddenly feel more skillfulYou feel yourself moving fasterHey - what's going on around here, who? what? huh?That's already identifiedcall it: You feel a strange pull downwardsYour hands start glowing greenYou feel the presence of goldYou feel the presence of monstersRead what? (* for list)As you read it, the scroll vanishes2q>Oh, now this scroll has a map on itYour hands start glowing redYou hear a high-pitched humming noiseYou feel as if someone is watching over youYou feel a strange sense of lossYour weapon glows blue for a momentYour armour glows blue for a momentYou feel the presence of magicThe corridor glows for a momentThe room is litThis scroll is an identify scrollYou have been granted the boon of genocidewhich monster?Throw what? (* for list)Wait a minute - that's a mimic! missed the Defeated hit the Your hands stop glowing greenYour hands stop glowing redThe appears confusedYouDirection?------------------/1\/2\/3\/4\/5\ | 6| | 6| | 6| | 6| | 6||6||6| ------------------------------------------------------------ ( / \ !) | ( (\ \ / ! ) ( //| ) ) / \ * * * |*)* * * |*A*$R. I. P. You were killed by Total worth: Better luck next time!Welcome to level You feel yourself slowing down hitThe you missedZap what? (* for list)Nothing happensYou feel a tingling sensationOuch! That hurt)&&&&' ()((5(?((boltflamesiceThe missed you hit youThe missileNot wearing anyYou can't, it appears to be cursedWear what? (* for list, % for no armour)Weild what? (* for list, % for no weapon)Wearing twoPut on which ring? (* for list)In useLeft or Right ringNo foodMy, that tasted good!Yuk, that was awful!Something thereYou can't call that anythingFilename ROGUE.SAV?? rogue.savNo way downSure?No way upYou feel a wrenching sensation in your gut # # ### # # # # # #### ##### ### ##### # # # # # # # ## ## # # # # # # # # # # # # # # # # ##### # # #### # # # # # # # # # # # # # # # # # # ### ### # # # # #### ##### ### # # You travel home, sell all your belongings at great profit, join the elite ranks of those who have escaped from the dungeons of doom, and retire for life! Your final worth: gold pieces ration of food The amulet of FunidoogNothing suitableWhich class of item?No scrollsWhich scroll? (* for list)No potionsWhich potion? (* for list)No wandsWhich wand? (* for list)No ringsWhich ring? (* for list)No weaponsWhich weapon? (* for list)No armourWhich armour? (* for list)dP<2( 2 2222222222d22222222222222 2dW G00W00W200W 800W f00W <00W(00W 00WD00X00X00Xp11(X4 00.X 2014X 008X*$00DX (00KX220XX 00aX&^00gX44%20rX20zX00Xd00X <00X 00giant antbatcentaurdragonfloating eyeviolet fungusgianthobgoblininvisible stalkerjackalkoboldleprachaunmimicnymphorcpurple wormquasitrust monsterskeletontrollumber hulkvampirewraithxornyetizombieThe sting has no effectYou feel a sting and are now weakerThe floating eye's gaze has transfixed youThe dragon just breathed on youa dragona wraitha nymphShe stole anYour purse feels lighter!Your armour weakensThe umber-hulk's gaze has confused youThe vampire's touch has drained you of a levela vampireHit return to set R.N.G. $lzYlCommand letters: > go downstairs: must be on stairs '%' < go upstairs: must have amulet of Funidoog ',' and be on stairs . rest a while i inventory: list all items being carried e eat some food s search for traps & secret doors c call an item something d drop an item q quaff a potion r read a scroll z zap a wand p point a wand in a particular direction w weild a weapon t throw a weapon in a particular direction (see weapons below) W wear a suit of armour Q quit the game S save the game for later P put on a ring R remove a ring ^R reprint the last message ^L redraw the screen h move one position left j move down k move up l move right y move up & left u move up & right b move down & left n move down & right H, J, K, L, Y, U, B, N run in the given direction till something is found certain commands can be done repeatedly, e.g. 10l will move 10 spaces right, or 5s will search five times, the maximum repetition count is 255 (guess who's using a byte counter!!) - command letters don't get echoed, as the effect they have usually shows up in some other way. Things on screen: solid rock (empty space) . room interior - | room walls + door # corridor ^ trap % stairs ? scroll ! potion / wand = ring ) weapon ] armour * gold : food , the Amulet of Funidoog A-Z monsters - A giant ant B bat C centaur D dragon E floating eye F violet fungus G giant H hobgoblin I invisible stalker (if you can see them) J jackal K kobold L leprachaun M mimic (when it's not pretending to be something else) N nymph O orc P purple worm Q quasit R rust monster S skeleton T troll U umber hulk V vampire W wraith X xorn Y yeti Z zombie Anything that can be picked up (scrolls et. seq.) gets picked up when moved on top of, to fight a monster, either point a wand at it, throw a weapon at it, or to fight it hand to hand, attempt to move on top of it. Weapons fall into four classes: 1. two handed sword, long sword, mace: these are best weilded when going into hand to hand combat; 2. short bow, crossbow, sling: these are best weilded when class 3 weapons are to be thrown; 3. arrow, crossbow bolt, rock: these are best thrown at monsters some distance away, best results will be obtained if the approprate class 2 weapon is weilded when throwing class 3 weapons; 4. spear, dagger, dart: these are best thrown as class 3, however no special weapon need be weilded to throw these. When throwing a weapon or pointing a wand, the direction should be specified as for moving, so to point a wand to the left type in 'ph', and give the letter from the inventory when asked what to zap, similarly to throw something down, type 'tj', and the inventory letter, etc. etc. etc. The general idea of the game is to find the Amulet of Funidoog, which will be found somewhere below level 20, and escape from the dungeon with it: once it has been picked up, the '<' command to go upstairs works. This game has it's roots in AD&D (The T.S.R. fantasy role playing game), but intimate knowledge of AD&D is not necessary to play Rogue (though it can be a help). Rogue was originally written in C, and released on Berkley UNIX systems - the only major part missing is the wizards password (which is a massive cheat anyway). By and large, damages that monsters do, armour classes of monsters, probabilities of hitting in combat, and other such variables are lifted directly from AD&D, as they were for the Berkley version. A few (hopefully helpful) comments: use the rest command copiously - it allows you to regain hit points lost in combat; traps generally only show up when you stand on them, unless you are searching - on the subject of searching, don't get too depressed if you seem to have explored everywhere and you can't find the stairs: search along the walls of the rooms you have found ('s' command, do it typically 10 times for each '-' or '|' in the wall). Note also that some of the monsters get very vicious: dragons can breath on you, rust monsters weaken metal armour, leprachauns will steal your gold, invisible stalkers are just that (invisible), mimics tend to look like other things: scrolls, armour, stairs - anything that isn't a monster, etc, etc, etc; there are cursed items (rings, armour, weapons) which can be quite hard to get rid of - unless you have a scroll of remove curse... Regarding the various weapons: Two handed swords are the best weapons in class 1 The crossbow is the best in classes 2/3, and the spear is the best in class 4. Regarding armour class: the lower it is, the better for you. Regarding your strength / hit points / experience / gold: the higher the better (There must be some reason why armour class works backwards...). Logically (?) the monsters get harder to kill the deeper you get into the dungeon - Dragons & Purple worms (probably the meanest pair in the game) are often best left alone if you find them asleep, because it isn't worth taking a chance on getting bumped off by one of them: by the time you meet those two monsters you'll be pretty close to the amulet, and once you have it, the best thing to do is to high tail it back up through the dungeon to about level 17. On the other hand DON'T rush down: explore each level to find all the magic and monsters you can: killing monsters is how you get experience, and the more experience you have, the better you'll do in a fight; in addition a good arsenal of magic items can make the difference between winning & losing a fight. On the lower levels rooms become dark: this limits your area of vision as shown by the area of '.'s around you, however there are wands & scrolls which can alleviate this problem (to a point at least). I'll leave it for you to find out what all the scrolls, rings, etc do, to begin with you'll be using all the scrolls of identify as soon as they get found. Note that potion colours (and wand metals and ring gems) change from game to game, so don't assume that just because a potion of healing is orange in this game, it will be orange in the next (that would be too easy!!). Patching for different terminals. As delivered, this runs on Televideo compatible terminals (including Liberty Freedom, ADM31, Wyse 50, Wyse 60, and Commodore 128 in CP/M mode). Two special abilities must be present, clear screen and move cursor; and clear to end of line will be used if it exists, however ROGUE knows how to get by without it. The patch area is right at the start of the program. Since most of the patchable stuff I write is designed to use the same patch overlay there is a lot of patching possible that is not applicable to ROGUE. However, once you have the 1/2 K patch overlay it becomes trivial to patch new programs to work for you. Included is a file QTERM.PAT which goes into detail on how to do the patching. It should be noted that ROGUE.COM is not the same size as QTERM.COM: the value for the SAVE command will be: SAVE 89 ROGUENEW.COM In all other respects, QTERM.PAT explains how to patch ROGUE for your system. ROGUE was written Nov 1984 thru Feb 1985 by David Goodenough. E-mail addresses: UUCP: .....!harvard!xait!lakart!pallio!dg Internet: dg%pallio.uucp@cfisun.cfi.com GEnie: D.GOODENOUGH Q-Link: Delta G I'm also reachable on the following bbs's - (617) 825-3135 (617) 288-6477 (617) 329-4237 (617) 329-8528 (617) 965-7259 Where I am always known as DAVID GOODENOUGH ROGUE.DOC explains how to run ROGUE, and QTERM.PAT explains how to patch it for non-Televideo compatible screens. See note at the end of ROGUE.DOC for a list of terminals that ROGUE is known to run on.