@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MINCE COM MINCE COMoCONFIG COM !"#$%&'()*+,-./CONFIG COMe0123456789:;<+w# +6#!6#2w2x*s!>r<o&F=-` r'~h6!+`W?_SUPPORT C oATERM CRL TERM C .UTIL CRL7||7zZZ)|/g}/o#|͉k|/g}/o#ɯ2qZZk:q|/g}/o#|/g}/o#:q<2qqDM!xxGyOPRGINTRODOC=>?@ABCDEFGHIJKLPRGINTRODOCLESSON4 DOC%MNOPQLESSON6 DOCDRSTUVWXYZ!~7z?` :>ª@w#G.¶ww#?*>?w#> w#.7:77MINCE LIBATERM ASM*LVBUFF1 CRL8LVBUFF2 CRL.)v|͔`i|)Öxڷz/W{/_ѯzW{_=yOxGæ2qZZ͉M|}ȯ|g}o)|/g}/oLESSON8 DOCP[\]^_`abcdSCOMM DOCefghASCII TXT/ijklmnMINCE GBLopq!a{   `OE!y6$ -7rBo&))T])))!yLUTIL CRLLATERM CRL LVBUFF3 CRLLMINCE CRL%#z/W{/_!9~#fo! ! ! ! ! ! !9~#A"s!`*"!"!Y">2>2>22!"!MINCE CRL%rstuvBINDINGSC ?wxyz{|}~COMM1 C 9COMM2 C 2*K͞+yxP'+FÎr ͖ 8{ Ăw#w#w^#V#*~#fo^#*~#fo^#V#*n^#*" ³Ɯ²LMC SUBMC SUBCTERM CRLL2 COMl"!@"!" ʞ!F#x±~#±!b2r~# "2r+}|~#G:rx"2rCOMM3 C FVBUFF1 CRL8VBUFF3 CRLVBUFF2 CRL.n^#V# ~#fo^#& ~#fo!+!#!+!#!+!+}|z{|}|z !͝  g| *yg++ *yI!*y| g++ *y*y| *y# !# *yI͐I͐KL͐")File͹g !"y*yg++Ҽ *y]IͩI*y#"yÕ !"a}!9DM!x !g++)h!L|dh! dh*o|)))))u|"o|*o|)))))u|~#fo0*o|)))))u|##~#fo"y͚!9DM`i6#6͐|͐)))))u|~#fo|ʂ͐)))))u|͐s|#rz¬!!L Qu`is#rz¬!X grNu!!~~͕͐u*~&" |*~&""|*~&"_}Ug͐.0"q|! w#w!"y*y| *Y#"y*y̓G,i#"y*y5U| *y|S*y,i?GVUÈ"y*yxU*y+"y_U|ʈa5h63a`--`|5h|62 -6+-5T v5h63v6y5hy6A2164X115T T̓G,i͐f6i!9!9DM! 6#6͐`is#r͐͐ * g|*͐]IwI|| ͐]I͸J| ͐dh! dh*o|)))))u| dh͐h$i"i|*yg++o !*yf,i+`is#r͐|o !-(f`i^#Vr+sR !9Mince Ve`i^#Vr+sB͐Õ!9!9DM`iw#w͐͐)y!2s#r`i^#Vr+sì͵e!"y!" y!""y!z!"$y!"&y!"(y!y)))))u|w#w*y+"y͐ҷ ! ~#fo##~#fo͓rV ! ~#fo##~#fo6! ~#fo##~#fo! uS! oT! ~#fo!1* yͽI!1*yͽI!"y͐I͐KL!9!9DM`i6#6͐|͐)))))u|~#fo|`i^#Vr+s͵e͐ s|5h|6A264X5T 5(51-"( 715ɵ!yP `    ]IͽI!͐fE*$~6͐h͐"a}$i,i XG| G ?Q !1 ͐#]II͵e͐ |͐ ͝Krsion 2.6 () : !͝ !9DM*)! s#r* yJ| *y| * yJ| H! s#r* yI*y͸J| 5G| ͐"*y!",y!=".y! "2y!@"4y! "6y!"8y!":y!"y!#"@y!q"By! "Dy!"Fy!"Hy!"Jy!"Ly!"Ny!k"Py!z!"Ry!"Ty! "##~#fo! "o|! ~#fo##~#fo]L|͝! s#r !m !w "o|!"yg++"yH" yH"yH" y*o|͐| !| ͠T|!Vú͐)))))u|! s#r͐0s#r͐~#fo|G!͐~#fo0͐##Hs#r͐ ͐r! 6#6Ͱ    !9DM͐͐UR!g++fg!Nu!"k|*k||S g|͒ S5g"m|!"y|͐|͐"U}! w#w`i^#Vr+s> g|S͐]I͸J|S͐]IͩI͐]IͽI͐ |ʐ g|* yͽI!"yI* yI͐*y|$ *y) g++*y|8 !< *y## `is#r͐J|ʌ g|Œ ͐I͐KL͐ ͐")Vy!z!"Xy!z!"Zy!z!"\y!="z!9!9DM`i6#6͐͐)y!z!s#r`i^#Vr+sò͵e!",z!Y!".z!g"4z!"Bz!"Lz!͟! 9Mince Copyright (C) 1981 by Mark of the Unicorn Inc. mince.swpa:mince.swpCan't Open Swap FileDELETE.MEmainNew |͐͐6! ^#Vr+s͐ ͐ r͐!9Too many buffers!9DM*o|)))))u|!`|r͐!"y*y|P*m|)y~#fo!(!9~#fo*m|)y~#fo"|͵e*y+"y|M!"y!9DM! gr{2`|{2$|!!B Qu`is͐|ʐ͐ "U}*U}Ö!9*y|ʮ*yýg*y+++*~͟?g++!!9DMH`is#r͐|"z!"z!"^z!"z"z!"z"z! "z"z!;"z"z!\"z"z!j"z"z!"z"z!"z"z!"z"z!"{"z!"{"z!"{"z!"͐|ʏ*y"y͐|ʛR͐"m|!"y*m|)y~#fo!!9~#fo!9* yI͟++"y*y͈W*y+"y͞X|–!"yH"s|*y+"y#!!$|=Z|*s|I!VÜ*s|KL!"yRReverse Search : N;tv5!ͱ3͵e*y|'*y" |!"yH"s|!10!!1XG|V`|h*s|I*s|KL!1H"y͟ *yJ !9Fill Page Normal *yͽI!͠TMark SetU*y1!"y*yͱ3!"yV*y1!"y1!ͱ3! v5!1!̓G! ̓Gi\ͦ!*y\!*y\H"s|U!*s|W͈{"z! "{"z!O " {"z! " {"z! "z! "z!0!"z!Y!"{!9!9DM`i6#6͐͐)y!z!s#r`i^#Vr+s͵e!!*yJ*yW!`(X"yS5g|g}o"m|*y|CR*m|)y~#fo!]!9~#foControl-X:*yͽI*q|0Fot Found!(!$|!!͞X|.!"yH"s|*y+"y#m!!$|=Z|j*s|I!Vm4*s|KL!"yR|!9_̓G* |ҿ!9_ !v5*"|7`!9_!!VW\|*yJ|!ͱ3 ! v5y*s|I*;i!"y!v5!1U!!VW̓G"y͈W*y͕WH"s|*yxXG|r?Qr!1uV{U*yW!g"|!*s|W*s|KL!͖\*yͽIF*yͽIF!͔^5G|!9_!Q_!!i_͋_!"""{!L#"${!#"*{!",{!%"0{!%"8{!&"B{!'"D{!'"J{!!("L{!("N{!("R{!("z{! )"{!)"{!)"{!6*"{"{!4+"{"{!*"{"{!,"{"H"s|F*o|)))))u|~#fo*s|5*s|KL*o|)))))u|~#fo0!(X"yS5g|g}o"m|*y|R*m|)y~#fo!!9~Forward Search : Not FoundXG|¶?Q¾!15G|!1?Q"y!ͱ3!1*yv5!9DM!"y! s|KL*yKL!͖\*y|.*y" |4* |"y*y*"|"yNU V̓G"y*y*yڏU*"|*y*yͩ*s|W*s|KL!v5*|W|º̓G"y*y+"y#͈Wú*yG!v5!1*|W|̓G"!i_W `XG|?Q tv5!ͱ3i_|9H"s|j!*s|W*s|KLj!͔^!!i_͋_!!i_{![-"{"{!-"{!9!9DM>2L|ͣ͞`i6#6͐|[*o|)))))u|͐n}fpO!!"^y!!L|ͧsO!g#foMeta:H"s|U *s|I*s|KL!"y*m|v5H"s|*y1*s|83*s|KL!"yXG|‹\|‹!ͯw#w*y?"y*yn[! s#r5g`is#r!0ڀ͐9ڀ*y ?͐"y! 6#6! ~#fo*yn[|g}os#r ͕WV!"y!!i_͋_XG|ʯH"s|!!i_WH"y*s|I!!i_͋_*y*s|i`!!i_W*y*s|y*y+"y#U*yG!j(X"yS5g"y*y+"y#W*yv5͵e8*y|bR!"yQuote:!(!$|!!W!10!*yͽI͟ !9DMH`is#r*y|¿\*y|ͣ͐W͐KL!9 `XG|i_|?Q!2́V!" y!""y!"(y!"*y!".y!!"0y!A":y!T">y!r."{!!L|ͧsO`i^#Vr+s÷*L|}p!!L|r!L|͓r+L|61!ͱ3*m|v5U!!VW\|ʱ !̓G+\!̓G#\V ̓G|ͳXG|\|!i`*s|KL*yI*yKL `XG|M i_|M ?Q tv5!ͱ3͵e" * yI͟++"y*y҂ U*y+"yu|*y6͚*y+"y%Delete Mode : !"y*o|)))))u|~#fo,Q|&!R'ͳa|&R!*o|)))))u| ! !ly@$͵e*y|P%! 3"y*y|$! ! ! !x%͞X|$[%! oT! 3"yR*y|$`i! "y|$[%*y)" | +̓G" |!$+͠T* |xa!"yFill Column is !9DM!"y! !`|! !J,͞X|a+A,!`|oT!`|3`is#rz+!_,dh! *yf*y)))))u|~#fo,Q|ʹ"!*(f"! (f! (f*y)))))u|~#foGHxa!*yf*y)))))u| olumn is *yjJrF"y*yjJ!~)͠TrFxa!)dh*o|)))))u|~#foGHxa!)dh̓Gxa!)dh*yxa6iSRPoi U*yJ*yͷ`!Q_U| !13a| !1͵eè !Q_XG| V| !ͱ3͵e 5G|'͞X|'*o|)))))u| Db*o|)))))u| ]L|J'!'͠TM'R Clobber Modified Buffer? File To Read : ))))u|6`i*y)))))u| r*y)))))u|~#fo0`i]L|P%!%͠T*y!9File to Find : Buffer EVA,͐*o|™+6*͐*o|³+!n,VA,͐)))))u|~#fo,Q|+!,ͳa|+A,*yg++,͐*y,ͤ)dh͵e*y+"y4"!*y#"yf͐h*y]IͩI6iS*y*yJ# !"y!"y!"y*y|#*y)))))u|~#fo|ʟ#*yint length column mark *yg++ڷ)!"y*y]IͩIg++"y*yKL*yKL!"y*yg++)g.!!1V|!!ͱ3(!!1.!͵e !Q_͈W|O!3a|O!͵e9!!Q_H"s|!*s|W*s|KL!!New File!"y!'͠T*o|)))))u|  O|½'!'V'!'͠TWriting...Can't open fileFile Written*yg++(xists! Buffer to Use : New File*y|ʸ%*y"_}þ%̓G"_}!"yͅ !"y!&ub"y|%!"y*y|&*y*o|)))))u|͐)))))u|~#foe1͐)))))u|w#w*o|)))))u|!`|r!9Delete Buffer : Does not existCan't delete curre*y)))))u|~#fo,Q|g}o"y*y+"y_#*y|#!#ͳa|#!"k|Abandon Modified Buffer(s)? !9DM!"y`i6!`i! ++"yH"y* yjJH"y* yjJ*o|"y !9DM!"y! !`|! !*͞X|c*ö*!`|oT!`|3`is#r͐|V!"yUnknown command̓G* |ҵ!! v5"H"s|̓G* |!!9_!Q_û! *s|͸J|͝"y!v5*"|7`*[-*y+"y#(([-!"y!*o|)))))u| ! !p(͞X|S(*o|)))))u| Db͉' File To Write : Create new buffer?DELETE.ME*y|+*yy|"*s|I! v5*s|KL!"y!"a}!"y*y|#*y)))))u|~#fo|#!*y#"yf͐h*y]IͩI*y)))))u|R>: *yjJ!"y*yg++ک([-*y+"y#(O ì([-*y|(*y""|(̓G""|!(͠T*"|xa!"yIndent Co|)))))u|*yn&$-͚*y+"yú,!I-VMode Name : No More Mode Room!9DM*yg++v--*y"y* y"~#fo*ͱ3ï3**ͱ3͐83!9DM͐|3m5ͯQ͐`is#r*͐*3**`is#r͐||1!1V͐#~#fo|ʴ1͐#~#fo͓͐?Ï1͐6Del cur buff!9DM͐+|H2**1/3*)|2*)*n͐0͐1P6͐I͐KL͐|:8͐jJ! 9Can't copy to self!9DM*'"*~#fo|ʠ8*n}#͵eM"*!ms#rz/*##"#*6*6*##* s#r**s#r* "Ì/M"%*%w#wDM͐*6!C8V:8͐͝K! s#rz<6͐jJH! s#r*`is#r͐J|8*͐~#fo‘6͐~#fo*y*y" y*y"yH"y*o|`is#r*y*o|ʳ-*y͐"y!"y* yI!1*yͽI*yI*yKL*y|͝"y!9*y4`iw#w* ͐" *͐"**###~#foF4͐! s#r! ~#fo͐s#r*6>2"*|4*~#fo|Š4*#&*)i")*#"*>2*#"*;2* "/3*+"N2!")*͐`is#r͐|2͐*҂2͐͗RÏ8*n} 8*~#fo"d8͵e*~#fo|¶8O9* ~#fo~#fo|F9k`is#r$i! s#rJQ!*n&?*~*"'*'##w#w!9DM`i6#6͐|Q0͐ kn}Q0`i^#Vr+s$0͐|`0!0͐ k! s#r!!͐! s#rå6**! s#rͯQ>2"* ! s#r͵e͐0*! s#r͐|.7**!6!7!g++.*y]IͩI*y*y|..*y4.*y"y*ygU.g"y*yg.!"y !"yH"s|FXG|#~#fo|4*~#fo"! w#w*|4*##~#fo"*~#fo! s#r͵e͐*D**͓?!"?5*"*! s#r͐/3͐*ڱ2*###~#fo*±2*͗R/3͵e͐|2**#~#fo2!͗R/3*##~#foi9*͗R3`i~#fo**+\v#|,9!*~#fo*+v#|79!X9VO9͐͐wQ*6!9Swap Write Error!9DM*͐‚99="|—0!0͐6͐6͐*s#r͐w#w͐0!9!9DM͐|0͐n}0!V1V*A|"7*! s#r.7͐08ͯQ͐͐M7͐! s#r͐*͐ v*͐"*͐"͵e?•.V !1|.*s|I*s|KL!.grCopyright (c) 1981 by Mark of the Unicorn!9DM͐"+!wm!"!"!*(5*~#fo|(5*~#fo"! w#w͵e͐͐*-E*i9͐͗R͐|e5͐ͱ3m5!HR!9!9DM*s#r*~#foi9!͗R͐|/3͐1!9!9DM͐͝K|W3͐jJ͐J|ʯ3*͐~#fo•3͐*|9**s#r***s#r*n& kM*"s͐:͐"*n& kM"*~#fo|%1**s#r**s#r͐~#foi9͐~#fo͗R͐"!")Invalid Buffer!9DM͐*ʅ1͐"F*F!7*F~#fo*7*F~#fo*7*F~#fo͐s#r*F"FÅ7*͐͗R!HR>2"*6"y*y|*/*y k6*y+"y/!"y*y|S/*ykw#w*y+"y0/*~+"y*y||/*y-6*y+"ya/!"* ›5!A|›5ͯQ*#"+! ns*#"*#͗R*)|5*)! n&*)i")*6>2"͵eͭE!HR!9"*n}2"*~#fo"**~#fo"**" **%T:*##~#fo|s:*~#fo"'Ñ:*##~#fo|g}os͐n& kM6͐n& kM6A͐n&-n͐n&|g}o}/o|/g|"'*~#fo|ʲ>*~#fo##*##~#fos#rþ>*##~#fo"%! m"͵e*͐ s#r*##͐s#r͐ |?͐ ##*s#rV*E*)E`is#r*+E! s#r! DMD "E"E"E!?DM!PYڥE^#V*œE! ^#V*ڜE*E*ڈE!s#r͐|ʾ<͐n}ʩ<͐n}ʾ<͐~#fo`is#rÃ<͐|2"*͐"*" ͐"**͐s#rs#r͵e?"F*F!FB*F~#fo*9B*FSwap file full!!9DM͐~#fo|?͐~#fo##͐##~#fos#r?͐###͐##~#fos#r͐##~#fo|@͐##~#fo͐~#fo0FͨBpF͵e*~*$~0F#"$~ͤf:Y}2Y}BFF͵eͨBpF*~pFͤf:Y}o:~pF*~*$~w#"$~ i1fB2F7F!9DM`iw#wœ=!?V!z?`i~#fo)))s#r͐-n͐|g}o|g}o|=`i^#Vr+së=͐-n͐D! DMC*D|ʪD>wêD`i^#V*PD! ^#V*PD*D`iPD! DMD! "D*DhD!>w*D|ʪD*DDM*D`iҪ#|ʤ;!*~#fo*+͕u#|¬;!;V͐͐wQ͐6͐*!M! ͉s!9Swap Read Error!~#fo͐9B*F*s#r*F~#fo͐s#r*F"FA*͐oB*i9*͐͗R! M!")s#r@͐#͐~#fos#r͐5͐n}@͐n& kM"*n&-n*n&|g}o}/o|/g*#~#fo"**F`i~#fo*~#fos#r*~#fo"ËF͐*F!9*#~#foi9!͗R!")*###~#fo|g}o|g}os! m"*|>;"*~#fon*6*##~#fo|u>*##~#fo*~#fos#rÃ>*~#foD^#V*ªD! ^#V*ªD >! DMuD͵e N#F*##~#foDPYD! ")E"+E!?DM!PY'E^#9DM*##! s#r*'`is#r! ^#Vr+s!g<͐n}R<͐n}g<͐~#fo`is#r!<͵e͐2"͐|M?Q M*6*##~#fo^#Vr+s*##~#fo^#Vr+s`iw#w**aN?QMaN?Q|ͣMark in wrong buff!!9DM͐~#fo|K͐##~#fo*K!7LV͐~#fo*K*͐~#foͩ*"*"* "FR** **  v*** "*" !9DM*yoR͐*y!`C*yg++ҕR͐n`is#6͐6͐àI!9!9DM͐6!9DM͐##*s#r͐*s#r͐*s#r!9DM͐ 6 ! ^#Vr+s! ns͐! ~#foPP!͐ ͐v͐ ! s#r*#͗RÔOrO! ^#Vr+s6͐͐ !9DM*)|G*)GH`is#r!B|ʷG!1!")͐J|G!1͵eýG͐KL*)G!9!9DM!B UN*#͗RͯQ**-N`i6#6LN?Q LN*+"*+"* 6*+͗R*#͗RM?QpNÙN!**9=р*|+L*͐~#fo+L*##~#fo"L*|ͣMark in wrong buff!!9DM͐w#w!9DM*#~#foi9*~#fo|ʒL*g++*y#`C!9DM͐"*͐"*R** *"!9DMk`is#r$i! s#r!g+f~#fo|J!]JV͐##~#fo*7J͐##~#fo0͐~#foi9͐~#fo͗R!")Invalid mark!9DM*! s#r͐͐͐ |g}o|ʦP!éP!! s#r͐͐͐ ͐vP! QVP*6͐6͐6͐)w|H!1!")*)͐EH?QEHXG|EH!1͵eH!9DM`iw#w͐#~#fo"*|ʳH**ŒH`i~#fo*|ŠNÙN*~#foi9MM?QʭN!NV͐)wͯQ*" *"*#~#foi9!͗R!")*6!N!9Read err~#fo*͓?rL?"F*F!L*F~#fo|L*F##~#fo*L*F*s#r*Fw#w*F6*F"FÙL!͐Quh͐͐f6i!9!9DM*~?*~ѯg?`is#r͐|^S g|RSlS`i^#Vr+s>S g|lSV8^S!9!9DM!: ~#fo`is#r͐ ~#fo! s#r͐ ͽI`iI!9!9DM͐~#fo*͝J͐~#fo*͝!9DM͐~#f*FI*FKL!Q! 9Write error!9DM͐n&*n&͵e!kQ*~&*~&+)hSwapping...!9DMs#ræH`i~#fo*~#fos#r*~#fo"aH͐úH!9!9DM?`is#r͐~#fo|H`i^#V{_zWr+sH͐!or or no EOF!9DM͐,w`is#rz0O!Q;! s#r͐6͐~#fo! s#rH"F͐ ! s#r*#~#fo"*|_P*i! s#rzGM!͗R*"*" !"*s{2"͐)w!N`iw#w!*͕͐uҙN*!?"*͐ b#`is#r!.͐ b! s#r͐|S͐ ͓r! s#r͵e͐͐S`iw#w͐ ͓r! s#r͐͐o|K͐##~#fo*#K!KV͐~#fo*OK*͐~#foͩ*"*|}K*͐~#fo}K*~#fo"UK*e*~&*~&+f͐h͐͐f6i** Q**R* **" *** * vI!OIV`is#r͐##*s#r͐*s#r͐*s#r͐FI!9No more marks!9DM͐k!9DM9!͗R*~#fo"**\P?Q! s! n}P! ^#Vr+s6 ͐! ~#foO!͐ ͐v͐ ! s#r!T͐! s#r͐ ͐! s#r͐͐ ͐`T! ^#Vr+s͐ns! ^#Vr+s&T͐ 6!9!9DM͐͐B|‹ZV[͐|œZ!1!"yXG|[! ~#fo*yn}[?Q! ~#fo*yn&Z?Q;t! ~#fo*yn&Z[!͐f6i!ÕX!9!9DM͐X!g+)h͐h$i!S s6i`i!Q s#rS5g!P s!Z n}Y!P n}XR!/Z"y*s|I*s|KL*y|_͐|,_!/_!1Ü^!9DM͐!`͋_!9DM͐!`W?Qmt|ͣ‡_?Q͞!9DM!"y*y|V*y)y~#fo͐V*y)y͐s#r͵e*y+"yÏV!vB|V!1?Q ͝W?Q | ]2^H"s|͐W|]`i6,#]`i6 ! w#w͐|^!! =Z|^͐W|]`in},ƒ]!n^͠T! d!z^dh!+ d!'n&;ts{ʞT! ^#Vr+swT!9DM!g+f͐h͐dh6i!9DM g|TU!U*i|g++)hrF`is#r*o|)))))1͵e*y#"yâZ͐|0[! ~#fo*yn}P[͐|?[!B[!*y1͵eKZ! ~#fo*yn}͝!9DM͐++++|Q`i͐^+OY!P n}OY!P n}OY!S n&͐Q`ic!Q s#r;i!P n} lYʆYʆYʵYY!8Zdh!Q ^#Vr+st|ͣ!9DM͐|¤_!1͐|ʳ_XGö_5G|_͐!_!9~#fo|_͐|_!_!1͵eä_͐| `5G| ͝!9DM͐|!W!1͐|0WXG3W5G|mW͐!JW!9~#fo|mW͐|_W!bW!1͵e!W͐|†W5G|†W!(f͒ S5g`is`in}ʺ] ],]Y]y]!].]]R*s|KL2^]!W w#w]! 6#6+]+]!+ ! dd`in},^͒ u|~#foGH! s#r͐: Replace : with : Replacing '' withxa!Udh g|ʙUU*o|)))))u|~#fo,Q|ʹU!*üU! (f*|8c|U!+U! (f͐h!9 -%- !B!Arg: ?Q͝!9DM͐G͐7\̓G͐b\!1?Q b\!1͐̓G7`̓G͐i͐\rZ͐\d!g+f6i!/Z!T9!9DM!"y! ~#fo*yn}V[͐|wZ͐n&vBÃZ͐n&?Q`is#r͐jJ͐v5͐jJ!ͱ3q`!9!9DM*q|0*|8c|`FH`is#rF͐83͐KL͐|aDM͐!͝$X͐!͝!9DM*~*~ѯg?"y*y|`X g|VX!ÕX*y+"y@Xk`is#r$i! s#r͐͠T͐ 'Confirm Replace?!9DM͐!d͋_͐|»^!1XG|^5G|^\|^!13a"y͐|^!1_H"s|dB|V!1!9DMk`is#r$i! s#r͐,ig+)h;i6iS,ig+f͐h͐͐f6i!9Ҕ\͐|”\!1!9DM!"y!+ s! s!(! !͐W|\!;^\!Q^͞X|\2^! n}ʰ\!(!+ !!a^͞XFaF*o|)))))u|~#fo0*q|͐5!9XG|ͣta?Q ͝ta\|ͣta?Q@͝ta?Q.͝!9DMѯgҤg͐c}*~s`i^#Vr+sxg!"]}"[}͹g!9!9DM!"Y}"W}*~}h!~"k*~&}k`iw#w͐*~ѯgh͐͝ʱe?Q}͝ʱe?Q"͝ʱe?Q'͝:~e!e*###e:~2ͭG:~G:~e!&~Ho|#f!&~:~ f!*~} l6i!~"k*~&}kel*W}`is#r*Y}! s#r*W}*~ѯgWl͐h*W}#"W}!"Y}4l͐"W}͐"Y}!9!9DM*~}ʒl!͝c͐!͝c͐!g͝c͐!͝c͐! ͝!9DM! ^#Vr+s6! n&kf͐d j jÁj͐k! ~#fo*~ѯgs#r*_}͐*_}`is#r*~͐! s#r͐͐~j͐*_}`is#r ͐ ҝa͐ ͉xa͐ )0(f!9DM͐͠TS5g`is{ ͝a`in& tY͝! s#rza1b`in}c}6`i^#Vr+sg!"]}"[} hk!9!9DM͐͐f͐n}bh! ^#Vr+sn&(f@h!9DM͐n}ʎh! ^#Vr+f*:~2ͭG:~o&ͯo;i }.1f \f\f-O6if!Y}4~!c}*W}Vfw!]}4 f:_}G:Y}mfmfG> 1f.rf n&!Twl*~&xw*~ѯg|g}o*~&ʹlÒl! n&*~&ͅw!9DM͐*~&l*W}*~ѯg`ism*Y}*~͐h6i͐!9DM͐n}Zd͐n}Dd! ^#Vr+sn&(fWd!_ddh! ^#Vr+sd6i!9DM͓͐r1͐k! n&|g}o|ʼj! n&|g}o͐#i#`is#rj`i6#6*~͐*~ѯg! s#r͐͐k`i~#fo͐(b`in}(b`in}(b`in& tN+b1b;iaR͐;b!9!9DM͐͐n& ts{sb! ^#Vr+sLb!9DM`isn&(flh!9DM*Y}*W}c}nѯgڰhi6i*~}h!~"k*~&}k i*Y}`is#r͐*W}c}nѯg i! nl*]}#"]}͵fO>~1fy.1fO>^1fy@.1f ff!o&*Y}i:~f* :~2ͭG:~G:~f:~2yͰ!9DM͐"W}ѯg`is*~})m`in*~ѯgW|g}onl3m`in& _ ¿w , FNxg>Goyw$ !\&!:oV! ^#Vr+s͐͐~#fos#r*N|8o͐"NBad ptr freed!9DM͐##~#fo#͐~#fo͝ʫo͐##~#fo͐u=ʍu=r:qo&7:)~:,"s!"u*|u**su! ~u6*u*+"*"n! ~#fo͐nѯgWÞs!9!9DM͐`is#r͐n}s! ^#Vr+sùs! ^#Vr+s͐ns! ^#Vr+sn}s͐t7||7zZZ)|/g}/o#|͉k|/g}/o#ɯ2qZZk:q|/g}/o#|/g}/o#:q<2qqDM!xxGyOs#r!9Memory munged!9DM*N*L¹q*H"N*N`is#r`i~#fo͐~#fot)s#r͐*Lq*H`is#r͐*L!ì Î õ"""~#fo͝«o͐~#fo͐~#fo͝!9DM͐##~#fo͐~#foo͐##͐~#fos#ro͐##^#Vr+s*u#"u÷u7*|DM**Vv:v><.v~# x.v >2>2>22!"!r the first time, you should select options 1 through 6 in order, then 5 and 6 again until everything works, then 7, and final! !!&!!"1Ͱ1 q G!G!LG!G!G! G!A G!a G! G! G! G!GT!G2W#!!!͉H! s#r͐+|IUͺ͐:W!"-!"/!9Select a terminal typeizsinisfinregbelregcposhcscleoscleoPerkinEVT5regpadscposscposscposPerkinEsizregbne I/O port characteristics 4 -- Define swap file and misc. 5 -- Edit definitions 6 -- Test terminal and port definitio"!@"!" ʞ!F#x±~#±!b2r~# "2r+}|~#G:rx"2rly 8. Would you like to exit and change disks? !i !W>f!m !a>f!"3ͺ!"-!"/!"_}%xHhex!9DMG! H| upWelcome to the Mince configuration program. This program is used to define the characteristics of your terminal : 1 - Create new type Enter the number of your selection, followed by a CR --> !9DMͬ&G'()͕*h+(,,-͚./elscleoregcposcposVT5sizregbelregcposhcscleosizsinistrlestrcpsfinstrlestrcpscns 7 -- Install definitions 8 -- Exit to operating system Enter the number of your selection, followed by a CR --> !9+w# +6#!6#2w2x*s!>r<o&F=-` r'~h6!+`W?_G! G! G! G! G!@ G!Y G! G! G! G!!!!͉H`is#r͐> >P > >and to create the swap file that Mince uses to store text that will not fit in memory. We recomend that the swap file be the 11ͮ254!9.5w7!"-7ͮ:;x=>?8A!"-M͋!9DM*/|~G!%G!Z H|{ ~ posstrlestrcpscposstrlestrcpscposstrlestrcpshcstrlestrcpscleostrlestrcpscleostrlDMG! G!5͐I!!5xp`is#r͐#|C !5! ͆fÔ ͐JJ*1|W ]!"1! H|s !"1l^*~"S!"3!!~7z?` :>ª@w#G.¶ww#?*>?w#> w#.7:77V > >\ > >b >) >h >5 >n >A >t >M >z À À À À #À AÀ À K$À 5&À first file on the disk Mince will be run on, so that seek time during swapping is minimized. If you are bringing Mince up fo!j H|‘!"-!{G!!!!͉H`is#r͐>>ʧ>>ʭ>>ʳ>>ʹ>>ʿ>estrcpregpadregbelregcpoyk !PUTXTSETPOp !!&!!!!&!"-!"/͐ͼp!9What drive is the swap file on (e.g. A:)? Can't find %s Use these definitions now? !9DMG!j!a{   `OE!y6$ -7rBo&))T])))!y`Iy !9Options: 1 -- Read definitions from an existing swap file 2 -- Define terminal characteristics 3 -- Defi>>>> >> ,>> 8>> D>> P>> \>>h>>t>>€>ers displayed.Does this look right? Did your terminal's bell (or whatever) just ring? Returning to main menu! You need to|!͐!͑K`i^#Vr+s~*~&+`is#r͐|!͐*~&+͑K`i^#Vr+sò!'!ͳKK!*~&+!͑Kѹ>2G!G*R&*Q&!͆f!#!ͳK!a!͆f!*G!݄*m&!/#L!EG!*o&!J#L!cDÞcEÞEÞ!FÞrFÞÓ!9-- Any changes? -- Which item? !9DM"! w#w! H|á!"-!G!ut port OK! !9DM`iw#w͐5`i^#Vr+s! 6#6͐|ʤ`iw#w͐nK|n`i^#Vr+sM͐Ž!~!>Œ>>˜> >¤>ͬ&()͕*h+(,,1154-͚./ͮ2G' edit your terminal definition. Returning to main menu! *1|J!*~}ͣ`w|ͣs*~}ͣs|ͣ!9DM!!!!͑K!/!!͑K!`!!͑K!!ͳK! H|ʌ^!! ͳK*~}w! H|ʌ!!!G!Ń*_&!h#L!wG!*a&!|#L!G!*c&!#L!G!*e&!#L!G!=*g&!!!!͉H`is#r͐>)>t>5>z>A>ʀ>M>ʆ>Y>ʌ>e>ʒ>q>ʘÞ7Þͮ:Þ!!*_! ^#Vr+s>! H|ʼ!G!~!!!!9output Did five asterisks appeaBnBͿBC~!9No terminal type has been selected. Would you like to select one? -- Any changes? -- WhP!&~͔d!G^|ʷ!G!~!!Ê`iw#w͐.^|`i^#Vr+sý^|^!G!~! ͑Kå^!"1!G!!G!9No terminal yet selected! This should go awayThis should remain*****The sc#L!G!e*i&!#L!G*k}J*}J!Gt*k}l!G!*k&yLt! G*X}ʎ!;Þx=Þ>Þ?Þ8AÞ!9-- Any changes? -- Which item? !9DM*/|G!Gå}J<|å!"1l^r? Output port OK! output!9DM͐!G͆f!lG!G Error in your %s port definition. Check the port addich item? !9DM- ! H|¦á!"-!G! !!!͉H`is#r͐>>\>>b>>h>>!Ê! H! s#r! 6#6͐.W͐|L!~!!ÊT! w#ws͐|s!~!!Ê͐|ʌ!reen should be ringed with '*' characters. Thephrase "This should remain" and this descriptionshould be the only other charact!'! ͑K*U}ʜ!&ß!*!1͆f*X}!#! ͳK*\&!J͆f*W}!]!c!k͆f*W} *V}!t!uG!!'!͑K!!!͑K*~&++`is#r͐|r!*~&+͐͑K!!͐͑K`i^#Vr+s4*~&+`is#r͐resses, ready mask and status polarity and try again. !!i!PͿp>2P!@"~!"~>2~>A2~>2~> 2~!,"~>2~>2n>>t>>z>)>ʀ>5>ʆ> A>ʌ> M>ʒ> Y>ʘÞ.5Þw7ÞdCÞCÞ"DÞhDÞG!Ê!9 Type a character, any character --> input input Did you really type a character? inputinput Inp!z͆f*X}/!#! ͳK*[&!͆f*T&*S&!͆f*X}i!#! ͳK*]&!͆f!G*X}ʇʤ 1. %d page swap file 2. preferred cursor row: %d 3. default tab column width: %d 4. default fill column: %d 5. defaulBIOS) input 2. BIOS output Direct port (not BIOS) output Input: 3. input data port: %xH 4. input status port: %xH f)(!a!(͆f)(!(G! w#w)(͐|g'!9 Do you wish to enter the special terminal command codes in Decimlemented17. clear-to-eol: %d 13. biases: row: %d, col: %d18. clear-to-eos: %d 14. padding with characterspadding with defor current)? Creating %dK swap file %s -- Okay? *-|X&G!]&G!& H|X&upThe current definitions have not beʯú!G*Y&L!Gú!Gú! Gú*X}!#!ͳK*Z&! ͆f!+ GTerminal Parameters 1.t indent column: %d 6. keyboard idle delay constant: %d 7. %d MHz CPU !9DMG*/|q$!{%G!%Gr%*3|$!% H 5. status mask: %xH TRUEFALSE 6. char-available bit active %s 7. receiving %d-bit characters Output: 8. output al, Hex, or Octal? (currently %s) ecimal %dDdecimalex %xHhexctal %oOoctal -- %s Enter 'D', 'H', or 'O' --> G!1)lay loopno padding19. home-and-clear: %d G!M!G!^!G*}T !c!G\ !o!G!!G*}w !!G !!G*en installed. Do you want to quit anyway? G!&G!<!!*Q&͉H}2Q! 'G!!@!*R&͉H}2R Nu %d rows, %d columns15. entry radix: %s 2. initialization string 3. de-initialization string 4. home-and-clear 5. clea|$*~*SҾ$!5p`is#r!!~~͐q!"S$!!5xp`is#r*~*S$͐LzM͐ͼpl%!%G!data port: %xH 9. output status port: %xH 10. status mask: %xH TRUEFALSE 11. clear-to-send bit active %s G!h#GG!h)G!) H|/)!)G!݄!m N Does your terminal require a special initialization string to be sent to i} !!G*&!!͆f*&!!͆f*&!"͆f*} !" !"!#"͆f*} ! !!G"͆f*}K!!j"mber of rows on your terminal? Number of columns on your terminal? !9DMG!;(G!a!p(͆fͭMͫf`is! 6#6`in}r-to-eol 6. clear-to-eos 7. cursor pos lead-in 8. cursor pos separator 9. cursor pos trailer10. standard bell charbel5͐I!5*~#!&͆f!*& H|*%r%!5p`is#r!!~~͐q!"S͐LzM͐ͼp!"3!"-!9You m*~!#͆f*~&!#͆f*~&!#͆f*~&!#͆f*~&!#͆f*~!$͆f*~&!;$͆fMiscellaneous parameterst at the beginning of the editing session? Okay, what is it? G!)G!6*G!k* H|)!*G!!o N DG*&!s"͆f*&!"͆f*Ã&!"͆f*ă}>!!"A!!"!"͆fPort parameters 1. BIOS input Direct port (not Dʗ'Hʼ'O' ((!(G!(!W>f!(!a>f)(!(G!(!W>f!(!a>f)(!(G!(!W>f!(!a>l string: no bell stringPad counts:rowcolumn 11. cursor pos %s first16. cursor pos: %dAsciibinary, 12. %s not %scompust select or define a terminal type before installing. Update existing swap file? Create new swap file on which drive ( oes your terminal require a special deinitialization string to be sent to it at the end of the editing editing session? nd column numbers. Usually this is 32 for both the row and the column. Enter 0 if none. Row bias? (in decimal) Columnn Enter 'R' or 'C' --> !9DMG!4/GͭMͫf`is! 6#6`in}A.B..!n/G>2W/!t/G>2W/! w#w!{/g a bell or otherwise alert the operator? !9DMG!5G!5G!$6G!\6G!6G!lq`is!Y!lq!6e a special command to clear from the current cursor position to the end of the screen? Okay, what is it? G!5-G!24G*Y&O}2YG%3>2XG-3>2X Does your terminal require any padding or delays to execute any of the speci Okay, what is it? G!*G!+G!A+ H|*!R+G!Ń!_ N*>2_ Does your terminal have a command to clea bias? (in decimal) G!U1G!1G!1 H|N1!1G!=!g NS1>2g Does your terminal require any special chG/͐|ʭ.*W}+/!/G!/ H}2V!9 Are the row and column codes sent in Ascii or Binary? scii inary EnteG!6G!7G!L7G!`7 H|ʯ5>2÷5>2/G!9 Input can often be done through the CP/M BIOS. You cannot u!j-G!- H|.-!-G!!e N3->2e Does your terminal require any special characters to initiate a cursoral functions? Padding can be done either by sending extra characters or by a delay loop. Pad with characters? Whar the entire screen, leaving the cursor at "home" (the upper left corner)? Okay, what is it? G!+G!+ H|ʙaracters to separate the row code from the column code in a cursor positioning command? Okay, what are they? G!02r 'A' or 'B' --> Should the row and column numbers be complemented before sending? G!C0G!u0G!0G!0G!se the BIOS for input, however, if your system has the common DELETE bug. To find out, type a DELETE (this key is sometim positioning command (Most terminals do.) ? Okay, what is the sequence? !9DMG!N.GͭMͫf`is! 6#6`in}R t is the code for the pad character? (Usually ) G!z4G!4 H|n4!4G! 5G!!k Nx4>2k>2 Does+!,G!!a NÞ+>2a Does your terminal have a special command to clear from the current cursor position to the G!h2 H|)2!2G!e!i N.2>2i Does your terminal require any special characters to terminate the cursor p!!*S&͉H}2S!0G!!!*T&͉H}2T Some terminals require that a bias be added to the row aes labeled "RUBOUT" or "DEL") --> If a "Y" appeared at the end of the last line, then you can use your BIOS; otherwis.C.).!x.G>2U<.!|.G>2U<.! w#w!.G<.͐|-!9 Is the Row or Column to be sent first? ow olum your terminal respond to the standard Ascii bell character, Control-G (07H)? What character string should be sent to rinend of the line? Okay, what is it? G!h,G!,G!, H|a,!,G!!c Nf,>2c Does your terminal havositioning command? Okay, what are they? G!/3G!c3 H|(3!3G!3G!3 H|3>2X!3G!&4G!Le, you will have to dig up your hardware manual to find your input port characteristics. Use BIOS for input? G!7G!=G!;>G!t>G!>G!!!*~&͉H}2~ The Fill Column is where Mince will break lines in fill n> rows, the normal value is (-2)/2, but it can be adjusted to suit preference. Preferred cursor row? G!G2à7>2DG You can probably use your BIOS for output. Use BIOS for output? G!8G!8G! 9mode. A reasonable value, for an 80-column screen, is 65 or maybe 70. (This can be changed dynamically within Mince; theG! G!:G!5;G!o;G!;G!;G*Q&+++!!*~&͉H}2~ n a six second delay on our system. Delay constant? G!sAG!AG!AG!!!*~&͉H}2~ The clock r!:GI8 The size of the swap file is the maximum number of 1K byte pages that can exist at one time (the total of all ͉H}2~ The Indent Column controls the format of filled paragraphs (see the manual). It is almost always 0. (Thi can be changed dynamically within Mince; the number you enter now is just a default.) Initial tab column width? G!= What is the address of the console input data port (in hex)? !CG!DG`P}2 What is the address of the consolThe preferred cursor row is where Mince will try to leave the cursor whenever it adjusts the screen. On a terminal with @e input status port (in hex)? !4DG`P}2 What is the console input status mask (in hex)? !DG!D H}2 9DM!i!~~!Pkr!!~!kr!!~!kr`iw#w!~!Ń`i͘Q!~!`i͘Q!~!`i͘Q!~!`i'N' --> !9DM͐++|ʯH͐+|H͐|H͐!'I͆f͐`is#rH`i6#6`i!7If͐͐ I͐͐ II n&jg|O`i^#Vr+sN͐! n}OO͐! n&jg|OO`i^#Vr+sO}N͐|QN!V9 (the current string is G!F H}2ă Is the status bit TRUE when the port is ready to send a character (if you're not sure, answer "yes" for͐͐q*S*~UM!!~~͐qKM*S!WM͆f*S"~*S#"S MOut of disk space after %d pages! !9 Is the status bit TRUE when a character is ready (if you're not sure, answer "yes" for now)? !EG!9E H|E>2Q!~!=`i͘Q!~!e`i͘Q!~!`i͘Q!~!݄`i͘Q!~!`i͘Q*~}jK*~&mK!}2~*~}ʁK*~&Ä͐ ͐ !:I͆fH͐I!9(default = %d) %dEnter a number between %d and %d --> !9DM`iw#w͐ N҇I`i^#V) Do you wish to enter a new string? Enter a list of %s numbers, separated by spaces -> Bad entry, try again.!9D now)? B*a}GnB*c}"GͿB*_}-GCGdCC"DhDDGcEE!FrF*X}kG!uGGsG!GG How many DM}J!!͐͐q!!~~͐q!9DM*1|M!lq`isM^`is`in} M! M`in`is`in}M`in&Q`in&E>2 Does your terminal send 8-bit characters (if you're not sure, answer "no" for now)? !}EG!EG`P}2 WK!}2~!9!9DM͐͐ͳK͐;P!9DM*1|K*U͐K! QKK͐͐_*1|K`r+snI!9!9DM`i6`i! Jf`in}ʿI`in&g|II! JGØI`in}I!0J`in&!:J͐6gJ!@J͐>fM!a!JP͆f͐!W͆f!]PG͐`is#r`i!Wf͐AP!9(in %s; default = ) !9DM`i6#6`i!Pf͐#padding characters should be sent after How many wait loop cycles should be done after *1|G!GGG~_ !9DMN!9!9DM͐Zn}QN!dOG͐\͐Zn&yL!OG!O H|QN[O!a!O͆f! R͐Zs`is#6! 6#6͐hat is the address of the console output data port (in hex)? !EG!FG`P}2 What is the address of the console *~&ͼr*~*~}|g}o!9DM͐|TL͐!lL͆f͐͐yLbL͐!qL͆f!wLG%s: no %s !9D!9%cEnter a drive letter, e.g. 'A' --> mince.swp%c:%smince.swp!9DM!!͐͐q!!~~͐qP!|ʈPÓP!PGoP͐ÚP!9%xEnter a hex number --> !9DM͐n}P! ^#Vr+sn&QP!~!ŃͪS!~!;P!9DM͐GͭMͫf`is`in}Y8HNFHTH!kHG!bH!oHG!bH!rHG_HH!9es o Enter 'Y' or ! n}RO! 6#6! !W͐! Og͐#|N!OG! w#wRO!\ ~#fo͐Z~4o&͐s͐! n}O͐!output status port (in hex)? !;FG!iFG`P}2à What is the console output status mask (in hex)? !FG!FM`iw#w͐͐L! ~#fo͐n&L`i^#Vr+s!LGÇL!9 !9DM͐!W͆f!9DM!*S?*~ͪS!~!ͪS!~!ͪS!~!=ͪS!~!eͪS!~!ͪS!~!݄ͪS!~!ͪS!i!P!~~kr!!!~kX>ŽW>Y>šW>Y> ¦W> Y> ²W>&Y> ¾W>xY> W>ʛY> W>Y>W>Y>W>#Z>W>RZ>X!WG 2 - Heath H1915 - Scion Microangelo 3 - Televideo 912, 92016 - Teleray 1061 4 - Soroc IQ12017 - Hewlett Pac!݄>f!9DM͐͝g}2o͐!>f>2k>2!9DM>2U>2V>2W> 2S> 2T>2e>2! n}2!9DM͐!Q ^#Vr+s!P nsØSR͐Q6!T9!9DM͐#n&͐͐n&~kr!9DM*1|!T͐+n&gT`is#r`i^#Vr+s[2\!?\![͚]![u\@[!S!([![u\>2U>2V>2W![u]@[!O![2\!Y?\![u\![Ϳ\![͚r!!!~kr!9DM͐#n&͐~#fo~͐kr͐͐~#fos͐~#fo͐#nѯgs#r!9DM*1|R! >ʜZ>X>Z@[!P![!B[[!H[ \2\!Y?\!K[u\!X[͚\@[!O![2\!=?\![[u\!^[Ϳ\!a[͚\kard 2621A 5 - Lear-Siegler ADM-3A18 - Hewlett Packard 2645 6 - Lear-Siegler ADM-31 7 - Perkin-Elmer Bantam 550 8 -͝g}2_͐!Ń>f!9DM͐͝g}2a͐!>f!9DM͐͝g}2c͐!>f!P![2\!]͚\!Xz!T!r! r!rS! ^#Vr+s6*1|WT! n&a_͐a`]͐^T!9!9DM! n& ڔT!\!!!!F]@[!O![2\![u]![͚]![Ϳ]>2U>2V>2W![u\![Ϳ\![͚\@[!O![2\!n} R!R! n&͚`R! n& RR! n&~RR! n&r*U#"UR! n} `RuR! n&r!"UR! n&|@[!O![2\!=?\!d[u\!g[Ϳ\!j[͚\@[!O![2\!=?\!m[u\@[!O![2\!=?\!o[u\!r[͚\ Perkin-Elmer Fox 1100 9 - D.E.C. VT-52 and VT-100 10 - HDS Concept 100 11 - BEEHive 150 12 - Hazeltine 1500 13 - Int?\!]͚]IY!P![2\!Y?\!@]u\!C]͚\EK!9DM>2X͐}2Z͐}2]͐}2[͐ }2\!9DM͐ n&~ڔT!! n&|g}o|T! n&|g}ogT!!UG!&!ͳK!UG!UG!&!ͳK![u]![͚]![Ϳ]>2U>2V>2W![u\![Ϳ\![͚\@[x1wzY8 KY EK+YT*YT*TKJU g}o|ʪR!~Q! n&|g}oQR!^Q! n&@|g}oQR!9DMa!S s͐X!Q s#rͭM!P s{ ʛS͐Q͐@[\!u[u\@[\!x[Ϳ\@[]@[!O![2\!{[[!a?\!~[u\![Ϳ\![͚\!!!!0F]@[!P!ertec Superbrain 14 - Processor Technology SOL !!9DM͐>RW>X>^W>PX>jW>ʃX>vW>ʶX>‚W>͝g}2e͐!>f!9DM͐͝g}2g͐!=>f!9DM͐͝g}2i͐!e>f*Y}*~ѯg^!"Y}!a^UG!UG!&!ͳK!UG! VG!&!ͳK!&VG!AVG!\VG!{VG!VG!VG!VG!VG!VGE~~~  jJK&ayCHJJK&acYHJJK!9DM͐}2Q͐}2R!9DM͐͝g}2m͐XO:S!P n}:S!S n&͐Q͐XS!Q s#r!P n}MSMSÀS͐Q͐X}S!S n&͐Q͐XS!Q s#rØS[2\!F?\![u\@[!O![2\>2U>2V>2W![u]![u\![͚\@[!P![2\!Y?\![u\@[!@!f*[}*W}!^*]}*Y}!^!~b!tb!~b!tb!~b*~&b*W}"[}*Y}"]}Off Screen!9DM!P!&~͔d )0_!9DM͐͐͐##͐͐s#rs#rs#r͐+s#r!9DM͐~#fo͐##~#fo͝*~&Ÿb*W}*~ѯg`isîb*Y}*~ѯg`is*~}b`in*~ѯgW|g}o_b`in&Yd!9!9DM*~}c! ^#Vr+szo|5i! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 Mi! 6Mi! 6! ~#fo! n&! ^#Vr+s~#fo! {nѯO`*W}c}*Y}s!9!9DM! n& a! n&~a]! n&_*]}#"]}*Y}#"Y}*W}c}n*Y}a*W}c}*Y}9!9DM! n&Ln|ͣ2g! n&k|ͣ!9DM! ͐g!9DM! ͐@k!9DM! n} ͝ʙg!~b`iw#w͐*~ѯgһ^͐c}*~s`i^#Vr+sÏ^!"]}"[}~_!9!~b]!~b]c!&~d|͝!!9DM͐~#fo͐~#foEe͐͐~#fos#rn&Re͐^#Vr+sn&!9DM͐##~#fo#͐~#fo͝ʻe͐c*~&_b*~}Tc! ^#Vr+szTc*~&?`is#r͐|Qc`i^#Vr+siOGiCʍiSʾij͐~#f"Y}!9DM*Y}*W}c}nѯg&`Ñ`]*~}F`!~b*~&bÃ`*Y}`is#r͐*W}c}nѯg҃`! _*]}#"]}]c`i^#Vr+s9!y9DM! `ig`iG!9!9DM! n&k|f! n&f! n&!y9DM`iR! `i@kf! h͐6!9!9DM! n&aͯ meansCn`in}6n! ^#Vr+s~#fo͐ ͐?s#r! 4uk! n&Cn!9!9DM! n&Aͯwn! n&Zͯ!9 6 `i6! ^#Vr+sn! s{*8l`i4! ^#Vr+sn! s! n&ͫf}XflOolDxlUʞlS*mCʽmm! 6Þl! 6Þl! ͫorښr> means type the ESCAPE key, release it, then type the DM͐͐ n͐^#Vr+s͐ Ҹn͐0n͐7s!&o͐ ͐͐ ͉͐{n`is͐ ͐͐ )You are looking at the Mince tutorial. While you can read this in hardcopy form, it is more helpful to sit down at a video ter-žl! 6#6! ^#Vr+s! w#w! n&! ͫoo#|l! n&Cn! n&! ^#Vr+sn&o! s{m͐ ! 2Ͱ7*:w !\&! , FNxg>GoyPs$&p7:)~:,"s!"u*|*ujq*~#Aq"*s*ujq#"u*+".q7*+++:G_ character. (The "M" stands for "Meta-command"; ESC is a substitute for another type of shift key, the imag͐{n`in&#&o!9!9DM! n&0ͯJo! n&9ͯ!9DM`iw#w͐~#fon&o}ʛo͐ ?͐minal and use Mince to read it. Just type the command "mince prgintro.doc". Mince commands are generally shifted by the CONnѯg?! nѯg! s#rl! ^#Vr+sn! ͫo͐ ~#fo! s#r! ^#Vr+sn! s{ʛm! n͐n}{m! ^#Vr+sÛm`in}inary "meta-shift" key.) Thus, C-F would be hold the control key and type F. You will often be asked to typspectively) move the cursor from where it currently is to a new place in the given direction. Here in a more graphical form a >> Try C-L now. (You'll notice that it centers the screen where the cursor currently is.) BASIC CURSOR CONTROL ----- at the beginning of a line. Do a few more C-B's. Then do C-F's back to the end of the line and beyond. If moving by chaeed to know is how to move around from place to place in the file. You already know how to move forward a screen, with he time so it would be of great benefit if you learn them now. >> Try doing a few C-N's to bring the cursor down to this line characters to see how they work; don't actually do this, however, until you see >> at the left of the screen. For instance: re the commands: Previous line, C-P : --------------- Getting from screenful to screenful is useful, but how do you reposition yourself within a given screen to aracters is too slow, you can move by words. M-F (remember, type F) moves forward a word and M-B moves back a word. >C-V. To move backwards a screen, type M-V (depress and release the key, then type V.) >> Try typing M-V and then Ce. Move into the line with C-F's and up with C-P's. Now use these four commands to play around a little. Try moving off >> Now type C-V (View next screen) to move to the next screen. (go ahead, do it by depressing the control key and V togeth : Backward, C-B .... Current cursor position .... Forward, C-F : specific place? There are several ways you can do this. One way (not the best, but the most basic) is to use the commands Pr> Type a few M-F's and M-B's. Intersperse them with C-F's and C-B's. You will notice the parallel between C-F and C-B on the-V to move back and forth a few times. SUMMARY ------- The following commands are useful for viewing screenfuls: the top of this screen and see what happens. When you go off the top or bottom of the screen, the text beyond the edge ier). From now on, you'll be expected to do this whenever you finish reading the screen. Note that there is an overlap : Next line, C-N You'll probably find it easy to think of these by letter. P for previousevious, Backward, Forward and Next. As you can imagine, these commands (which are given to Mince as C-P, C-B, C-F, and C-N re one hand, and M-F and M-B on the other hand. Very often Meta characters are used for operations related to English text wher C-V Move forward one screenful M-V Move backward one screenful C-L 'Refresh' the current screen. s shifted onto the screen so that your instructions can be carried out while keeping the cursor on the screen. >> Try to C-B when going from screen to screen; this provides some continuity when moving through the file. The first thing that you n, N for next, B for backward and F for forward. These are the basic cursor positioning commands and you'll be using them ALL teas Control characters operate on the basic textual units that are independent of what you are editing (characters, lines, etct after you type them. Notice that just after you type C-U, the message "Arg: 4" appears there. If no numbers are typed aftercommands now a few times for practice. Since the last two will take you away from this screen, you can come back here wion your screen is different that the text you read in, and hasn't been written out to a file. Remember that most Mince comma Move forward a character C-B Move backward a character M-F Move forward a word M-B ing (sometimes labelled "DELETE" or "DEL" or even "RUBOUT"). More generally, will delete the character immediately). There is a similar parallel between lines and sentences: C-A and C-E move to the beginning or end of a line, and M-A and M- the C-U, it executes the following command 4 times. For now, though, just type in numbers. For instance, C-U 8 C-F moves foth M-V's and C-V's. These are the most often used commands. Like all other commands in Mince, they can be given arguments wnds can be given a repeat count; Note that this includes characters which insert themselves. >> Try that now -- type C-U 8 Move backward a word C-N Move to next line C-P Move to previous line C-A Move to beg before the current cursor position. >> Do this now, type a few characters and then delete them by typing a few tiE move to the beginning or end of a sentence. >> Try a couple of C-A's, and then a couple of C-E's. Try a couple of M-A'srward eight characters. >> Try giving a suitable argument to C-N or C-P to come as close as you can to this line in one jhich cause them to be executed repeatedly. The way you give a command a repeat count is by typing C-U and then the digits bef* and see what happens. You've now learned the most basic way of typing something in Mince and correcting errors. You can dinning of line C-E Move to end of line M-A Move back to beginning of sentence M-E Move mes. Don't worry about this file being changed; you won't affect the master tutorial, because this is just a copy of it , and then a couple of M-E's. See how repeated C-A's do nothing, but repeated M-A's keep moving farther. Do you think that ump. INSERTING AND DELETING ---------------------- If you want to type text, just do it. Characters which you can see,ore you type the command. (C-U stands for "Universal argument".) The digits are echoed at the bottom of the screen slowly, juselete by words or lines just as you can move by words or lines. Here are some of the delete operations: forward to end of sentence M-< Go to beginning of file M-> Go to end of file >> Try all of these in your Mince editing buffer. Notice that a "*" appeared in the line at the bottom of the screen. This means that the text this is right? Here is a summary of simple moving operations including the word and sentence moving commands: C-F such as A, 7, *, etc. are taken by Mince as text and inserted immediately. You can delete the last character you typed by do delete the character just before the cursor C-D delete the character that the cursor is rom you. Notice that if you do several C-K's in a row the text that is killed is all saved together so that one C-Y will yank this screen. >> Do this now, move the cursor and kill that line with C-K. Note that a single C-K will kill the contents ofrned in that they consist of two control characters. They both start with the character Control-X. There is a whole series ocide that you want to get it back? Well, whenever you delete something bigger than a character, Mince saves it for you. To ya file. You put your editing in a file by writing or saving the file. If you look near the botton of the screen you will see positioned on M- delete the word before the cursor M-D delete the word after the cursorall of the lines. A way to tell if this is going to happen or not is the "+" which will appear on the line at the bottom of t the line, and a second C-K will delete the line itself, and make all the other lines move up. The text that has just disappef commands that start with Control-X; many of them have to do with files, buffers, and related things, and all of them consist ank it back, use C-Y. Note that you don't have to be in the same place to do C-Y; this is a good way to move text around. Gea line that starts with "Mince Version 2.3 (Normal) prgintro:" and continues with the filename PRGINTRO.DOC. This is the name C-K delete (kill) from the cursor position to the end of line M-K dhe screen. If it is present, whatever text is killed will be appended to whatever is already there. >> Do this now, type Cared is saved so that you can retrieve it. To retrieve the last killed text and put it where the cursor currently is, type C- of Control-X followed by some other character. C-X C-W writes out the editing buffer C-X C-R reads a finerally, the commands that can destroy a lot of text will save it, while the ones that attack only one character, or nothing b of the permanent file in which the Mince tutorial is stored. This is the file you are now editing. Whatever file you edit, elete (kill) to the end of the current sentence Notice that and C-D vs M- and M-D extend the-K several times. Now to retrieve that killed text: >> Type C-Y. Then move the cursor down a few lines and type C-Y aY. >> Try it; type C-Y to yank the text back. Think of C-Y as if you were yanking something back that someone took away fle into the editing buffer In addition, each of these commands asks for a filename to use. Enter the name, and finish it by ut blank lines and spaces, will not save them. For instance, type C-N a couple times to position the cursor at some line on its name will appear in the same spot. The commands for reading and saving files are unlike the other commands you have lea parallel started by C-F and M-F. C-K and C-E are similar to M-K and M-E. Now suppose you delete something, and then you degain. You now see how to copy some text. FILES ----- In order to make the text you edit permanent, you must put it in typing a carriage-return (). >> Go ahead and try that now; type C-X C-W, and when Mince asks for a filename, type GAR, which tells Mince you'd like to stop editing. (Think of it as an augmented C-C, which usually works in the operating system buffer to whatever file name is in the mode line at the bottom of the screen. It may save some typing. It is not easy foren changed since the file was last written. You also know what the "+" means in relation to the C-K command. SEARCHING -- file anyway. To make a new file, just C-X C-R it "as if" it already existed. Mince will echo "New File" at the bottom of tearch strings, and some progress information when file I/O is going on. This is just the last line at the bottom. The line immBAGE.TXT, then type a . Note that the mode line has now changed to reflect the new file name. (Don't forget to ERAs to get you out of programs.) This does NOT save your file. It will ask if you really want to quit if you have not written ou you to try out making a file and continue with the tutorial. But you can always come back into the tutorial by starting it o------- Mince can do searches for strings (these are groups of contiguous characters or words) either forward through the fihe screen. Then start typing in the text. When you ask to write the file, Mince will really create the file with the text thediately above this is called the MODE LINE. You may notice that it begins Mince Version 2.3 (Normal) buffer: DRIVE:FIe the file after you're done sometime.) If you forget to write out your work and try to read another file, Mince will remindt the editing buffer, however. MODE LINE --------- If Mince sees that you have typed an or C-U or C-Q or a C-X and ver and skipping forward. So, when you feel ready, you should try reading a file named "FOO", putting some text in it, and wrile or backward through it. To search for the string means that you are trying to locate it somewhere in the file and have Mincat you have inserted. From then on, you can consider yourself to be editing an already existing file. Another command is avaLENAME -nn%- * This is a very useful "information" line. You already know what the filename means -- it is the file you hav you that you made changes and ask you whether to clobber them. (If you don't save them, they will be thrown away. That might have not typed the following character in the command sequence, it will show you the prefix you have typed in an area at the bting it; then exit from Mince and look at the file to be sure that it worked. One more immediately useful command is C-X C-Ce show you where the occurrences of the string exist. The command to start a search is C-S. Down in the echo area, you will ilable to prevent retyping filenames all the time. C-X C-S saves the file This command just rewrites the editinge read. What the -nn%- means is that nn percent of the file is above the cursor. The "*" means that the editing buffer has be be what you want!) You should answer with a "N" to keep your editing buffer intact or a "Y" to clobber it and read in the newottom of the screen. This line is called the "echo line"; it echoes numbers typed after a C-U, characters to be included in snotice "Forward Search: :" appear. Type in the string you want to search for (which will appear in the echo area also). ince it has numerous desirable features that you don't know about yet. Documentation is available online and in hardcopy form.ition. But what if you want to search for something earlier in the text? To do this one should type C-R for Reverse search. lp finding the file. We will be playing around with some new commands on this text. In order to keep reading from you are in the middle of an search and type the DELETE key, you'll notice that the last character in the search string is erased. Lesson 4: Searching For this lesson, you will be reading from your terminal r When you finish, type the ESCAPE key and Mince will try to find the next occurrence of the string in your text. If no such The Mince User's Manual completely describes the commands presented in this tutorial, as well as the more sophisticated comm Everything that applies to C-S applies to C-R except that the direction of the search is reversed. GETTING MORE HELP ---r terminal, you will have to type Control V's (View next page) every time you reach the bottom of the scren. Do that now. Ty >> Now type C-S to start a search. Type the word "search" followed by an . Notice where the cursor is positioned ather than from this paper. Get into Mince as usual, and type: Control X Control R lesson4.doc followed by a carrioccurrence exists Mince beeps and tells you that the string was not found. In addition, if you decide you really don't want toands, modes, and editing features. CONCLUSION ---------- You'll probably find that if you use Mince for a few days you -------------- In this tutorial we have tried to supply just enough information to get you started using Mince. There is sope a "Control V" and forget about the paper copy of this lesson. The first command we will learn this time is the "seato. Now type C-S again, immediately followed by . Mince will search for whatever it searched for last time if no age-return. You should see this text appear on your screen. If it does not, and Mince says "New File" in the echo line at th search after all, type C-G and Mince will erase the search string and cancel the C-S command. (More generally, C-G cancels awon't be able to give it up. Initially it may give you trouble. But remember that this is the case with any editor, especiall much available in Mince that it would be impossible to explain it all here. However, you may want to learn more about Mince srch" command, "Control S". Suppose someone has given you a draft for corrections, and somewhere in the middle has marked a phnew string is given. The C-S starts a search that looks for any occurrence of the search string AFTER the current cursor pose bottom of the screen, first make sure that you had typed the name correctly. If not, just try again; if so, stop and get heny command; for example, if you mistakenly type or C-U when you didn't mean to, type C-G to flush the prefixes.) If youy one that can do many things. earch for something earlier in the text? To do this one should type C-R for Reverse search. rase to be changed. It's easy enough to see it on paper, because the place is marked in red ink or the like. But it requiresat is, do not type in any character string to be search for; just hit the ESCAPE key right after the Control S. You should no A forward search begins at the character the cursor is on, continues until the searched-for item is found, and when it is, ed by Control R. All of the features of Control R are identical to Control S, except that, since it searches through the textle while now, since Control V's won't work while we're in the middle of a search.) Mince will respond to the Control S by priDo a search for a nonsense word. If there is no such word between the cursor and the end of the text, as you see, Mince will extra work to find it on the computer. It's almost as though you had been handed the same report, unmarked, and been told thtice the cursor jump to the next occurrence of the word "search". When you do not give the Control S command a new character positions the cursor just after it. So, when you hit the ESCAPE key, you should have seen the cursor jump to one of the occu in reverse, it leaves the cursor before the closest item that matches the string, rather than after it. Notice that the charanting "Forward Search :" in the echo line at the bottom of the screen. Now type in the word: search You will cause the terminal to beep and will print the phrase "Not Found" at the right of the echo line. As you may have guessat some phrase should be deleted! Certainly we could scan through the file looking for the marked place using Controlstring to look for, it searches for whatever you told it last time. This can be quite a timesaver, especially when working wirrences of the word "search" in this lesson. It should still be there now, unless you've had to type Control V's to read more.cter string to be searched for is saved and is the same one for both Control R and Control S. So, you may find yourself typinsee it echoed at the bottom of the screen. If you make a mistake while typing this, you can use the DELETE key, just as you wed by the message that Mince printed in the echo line earlier, "Forward Search", there is a "backward" search as well. It is V's, but it might take a while. Instead, we can use the computer to search through the file, looking for the proper place. th technical papers, where long, hard-to-type phrases are commonly used several times, and you want to find, say, the sixth oc If so, try it again. Type: Control S search ESCAPE Now just try typing: Control S ESCAPE Thg "Control S", a string, and the ESCAPE, and then, if you hear a beep, typing "Control R ESCAPE" because you know the string iould normally. After you've entered the string to search for, type the ESCAPE key. This tells Mince to begin searching. used to search backwards in the text from the current cursor position. The command is called "Reverse search", and is perform Try that now. Type: Control S (You might want to look back at the paper copy of this lesson for just a littcurrence. What happens if there is no character string exactly like the one you type for Control S? Try it and see. s in the text somewhere. Play around with these a little bit, then type Control X Control C to leave the editor. The appeared. Now type another C-K. The line itself has disappeared and all the other lines of text have been moved up. As with Lesson 4, if Mince says "New File", and this text does not appear, something is wrong. Determine the cause and use time-consuming. (Counting lines is even more annoying than typing C-K many times!) Instead, Mince has a command to kill an ent entire lines and their contents, rather than four. You will find this command useful for retyping previously existing lines onext lesson, Lesson 5, should be read off the printed page, but for Lesson 6 we'll be working exclusively on the terminal agaiNow move the cursor to the first line of this paragraph, and move halfway into the line with C-F's or M-F's. Again, type a C-he C-X C-R command to read in the file, if you need to. In this lesson, we are going to learn how to delete whole bunire region of text. It is called C-W (for "Wipe region"). You must define the region of text to be killed first. One Lesson 6: Killing and Moving Text During Lesson 6, you should be reading from your termf text, where you want to remove what the line (or the "rest" of the line, starting at the cursor) says, but want to fill it wn.  message that Mince printed in the echo line earlier, "Forward Search", there is a "backward" search as well. It is K. You will notice that only the part of the line to the right of the cursor was killed. C-K kills text starting with the chches of text, rather than characters or words at a time. The command to delete lines is C-K. (Control K stands for "Kill lin end of the region which C-W will wipe out is shown by where the cursor is in the text. The other end of the region is given inal again, rather than from this manual. Type to the operating system: mince lesson6.doc and wait for Mince to gith something else. Typing many C-K's in a row could get to be a drag, especially if you intend to delete an entire paaracter which the cursor is resting on until it reaches a newline, or the newline itself, if the line is blank. You see".) Move the cursor to the first line of this paragraph with C-P or C-N. Now type a C-K. Whatever was on that line has disby a "mark", which we will now learn how to set. The command which sets the invisible mark is C-@ (for "set the mark AT this et started. By putting a file name on the command line, you cause the file to be automatically read in when Mince starts up. ragraph or chapter. You could count the lines to be deleted and type C-U, twice the number, C-K; this would still be pretty te that in order to physically remove an entire line AND its contents, you must type two C-K's. Similarly, C-U C-K removes two position"). Move the cursor to the beginning of some line in the middle of this paragraph. Type C-@. (Note that on some teiately yank it back with a C-Y in that spot (i.e., without moving the cursor). Then, move the cursor to the spot where you woetrieve the text which was just killed, C-Y (for "Yank back killed text"). Do that now: type a C-Y and the paragraph we just lready being stored. So, you can kill a region of text, with either a C-@/C-W or with a bunch of C-K's (or even M-D's or some between the cursor (at the end of the line) and the invisible mark (at the beginning of the line) should have disappeared. u want to yank it back. C-K, M-D, and M- all save text as well. In general, if you delete anything larger than a chararminals you may have to hold down the Shift key and the Control key to get a C-@.) Down in the echo line you should see the muld like the copy to appear, and type another C-Y. If you want to move a block of text rather than copy it, just don't type thdeleted should appear back where the cursor is now. Now move the cursor down a few lines and type C-Y again. Another combination of all of these), and a C-Y will still yank the entire region back. Mince will only store your "most rece Let's wipe something slightly bigger than a line. Move the cursor to the beginning of this paragraph, and set the mark cter, Mince will save it for you in case you want to move or copy it (or undo a mistake!). As an example, move the curessage "Mark Set." If it does not appear, you may have a poor terminal whose C-@ doesn't send the command. Try typing C-@ age C-Y at the original position. (If deleting text and then yanking it back in the same place in order to do a copy of some tecopy of that text appears at the cursor. Type the C-Y again; the text should be replicated one more time. You've just learnent" bunch of text kills, however. What determines what is "recent" and what is not? The plus-sign at the right of the mode lthere by typing C-@. Now move the cursor to the end of this paragraph and type a C-W. You shouldn't be able to read this sensor to the beginning of this paragraph, and type a couple of C-K's. Notice that a "plus" sign has come on at the right edge oain, and if it doesn't work this time, type a Control SPACE now, and use it from now on if it works, rather than the Control axt makes you nervous, you might want to look at the description of the M-W command in the Mince User's Manual. It works simild how to copy or move text, all with one command, C-Y! To make a copy of some text, wipe it out (using C-@ and C-W) and immedine. If you are about to delete something larger than a character and the plus is not there, you will be throwing away whatevtence any more! What if we make a mistake and wipe out a huge block of text unintentionally? There is a command to rf the mode line. This means that if you continue to type C-K's, the text killed will be added on to whatever killed text is at-sign. Having figured that out, move to the end of the same line and type a C-W. Look at the text; the portion of itarly to C-W, but it does the first C-Y automatically for you.) C-W is not the only command which saves text in case yoer previous bunch of kills you did. In general, all this amounts to is that, if you give any movement commands or insert anytn the last line. Now move into the middle of what's left and type a C-Y. You will see both the first and last lines appear tThis is your first "M-C-" command. Remember that you just type ESC Control W.) You can remember this command by its intimate C-K's, moving to the right place, doing a C-Y, going somewhere else and doing some C-K's or a C-W, moving back to the right pough to make sure that you understand these commands. When you're all done type a C-X C-C and answer "Y" for "yes" whhing after killing some text, you will "close off" the current group of kills. (You will also see the plus-sign go away.) Anhere at once. Play around with all these commands a little bit. Try deleting the last five words of this sentence and relation with C-W (and M-W, if you use it). As M-C-W is sort of hard to think about, there is no substitute for practlace, doing another C-Y, etc. It would be much easier to do C-K's or C-W's in all the various places and then yank the whole en Mince asks you if you want to abandon the text buffer without saving it. You wouldn't want to destroy the file "lesson6.doy C-Y's you type after this will retrieve that group. Any C-K's, M-D's, M-'s, or C-W's you do after this will throw away yanking them back at the beginning of the sentence. Then, move this paragraph so that it is the first paragraph in the lessoice. Move to the beginning of this paragraph and kill the text on the first line, in whatever manner is convenient. Then movthing back with a single C-Y. But we said earlier that movement away from the place of the text killing or wiping causes the c" for the next person, after all. We'll learn more about text buffers and neat tricks you can do with C-Y and lots of differ that group of kills and start a brand new one. There is a command to "turn on the plus sign". This is used if you wn. Try doing C-W's with the cursor both before and after the invisible mark you set, and observe the results. Killing and yae to the last line. Notice that the plus in the mode line has gone off. Type a M-C-W to turn it on, then kill off the text oplus-sign to go off and the current bunch of kills to be "closed off". The command to turn the plus sign back on is M-C-W. (ent buffers in Lesson 8. to the middle of what's left and type a C-Y. You will see both the first and last lines appear tant to move groups of lines from several different places all to one place. Certainly you could do this manually, doing a fewnking text is one of the most complicated, confusing, and hard-to-explain features of Mince. Take your time and experiment en Lesson 8: Buffers You may remember the word "buffer" from Lesson 3, when we u get automatically when you start Mince up. Each of these buffers of text also has a filename associated with it. In this c what character to terminate the filename with, just look in the message asking what file to read; it will always have the "" in it for file commands.) Look at the mode line at the bottom of the screen. Notice the portion that says "main:ho line. Type in the name "other", followed by a carriage-return. Mince will ask you if you want to create a new text bufferers. For example, start using Mince to edit this chapter, called "lesson8.doc", by typing: C-X C-R lesson8.dc", and a number, which tells you how many characters are in the buffer of text. Type a C-L now to redisplay the screen. Theext while we manipulated it, and that files were copied into it and replaced from it. Mince has more than one buffer creen what buffers of text currently exist. This command is C-X C-B, the "list Buffers" command. Try it now. Type: lesson8.doc". In the mode line, "main" is the buffer name. Since we have multiple buffers for storing text, they must be na. We do, so type a "Y" to answer yes. Now the screen is devoid of text. Look at the mode line, and notice that the buffer noc to Mince. (Remember that the disc drives are labelled, and that if the file can't be found, you may have to type " buffer list has been replaced by the original text again. There is a command to create a new buffer, the C-X B commafor manipulating text. This can be handy when you are working on several files at once. For example, this manual is made up C-X C-B You should see a display at the top of the screen, overwriting whatever text was there before. The text is not gonmed in some way, just like files or disc drives. Buffer names may be from one to eight characters long. "main" is the one yoame is now "other". We moved into a brand new text buffer, which has no characters in it. Notice also that the filename in tB:lesson8.doc" or some such for the file name.) (Remember also that "" stands for "carriage-return. If you should forgetnd. It stands for "goto Buffer", and looks similar to the C-X C-B command, so you can remember them both fairly easily. Try tof several chapters, and if we wanted to edit two or three of them, making changes to one based upon the others, it would be ne, just momentarily not displayed; this is an exception to the rule that what you see on the screen is what is in your documenhe mode line associated with this buffer is called "DELETE.ME" This is so that if you mistakenly type a C-X C-W command to writ by creating a buffer with a name appropriate to the file we were about to read in. But Mince can do this automatically for to create a new buffer.) Now that you're in the "lesson6" buffer, read in the file containing Lesson 6. Type: C-X Co the buffer called "other", with its original file name. So, C-X C-F always does an automatic C-X B command for you, either didn't ask you if you wanted to create a new buffer, because one by that name already existed. Type the C-X C-B command again file you want to find has already been read into a text buffer before. If so, it just switches to that buffer, rather than cte the file without giving a filename, the text will be stored in a conspicuously-named file. Type a few characters just so tus. The command C-X C-F (for "Find File") will read in a file, in the same manner as C-X C-R, but will automatically create a-R lesson6.doc The text will appear (if you got the file name right) and the mode line will now have a section sayingto a buffer which contains the file name you want, or to a brand new buffer into which it reads the file. It effectively prev, to list the buffers. Notice that there is an asterisk beside the "other" buffer. This means the same thing as the star on reating a new one and reading in the file. This is almost certainly what you want; if you had made changes to a buffer contaihe buffer isn't empty. Now type a C-X C-B again to see a new list of the text buffers. Notice that the list now shows buffer of the appropriate name for it. Try it now. Type: C-X C-F lesson4.doc The mode line will now say " "lesson6: LESSON6.DOC". Type a C-X C-B again to get your bearings, if you like. It is usually very useful to have theents you from ever having to remember whether of not you had read in a file. Just use C-X C-F all the time. Do a C-X the mode line does: the text buffer hasn't been written out to a file since it has been modified. Now go to another nning a file and then did a find-file, you would want to see the modified version. Try it now. Type: C-X C-F lesson6 two buffers, "main" and "other". Going to a new text buffer did not delete the old one; it is just waiting for whenever you lesson4: LESSON4.DOC", and the text of Lesson 4 should be on the screen. The C-X C-F find-file command does just a lit buffer name be the same as the first half of the file name which Mince and the computer system use. We just accomplished thaC-B to get a handle on what text buffers and files we have again. There is certainly a lot of junk, so let's get rid of some ew buffer, called "lesson6". Type: C-X B lesson6 Y (The "Y" is in answer to the question asking if we want .doc Note that this puts you back in the "lesson6" buffer. Try: C-X C-F delete.me This puts you intwant to go back to it. Do that now; type: C-X B main The Lesson 8 text will appear again. Note that C-X B tle more than automatically selecting a "nice" buffer name. It will look through all the Mince buffers you have to see if theof those old buffers. The command to do this is C-X K (for "Kill buffer"). Type: C-X K lesson4 This will kor copy text from one place to another in a file. This method works on multiple files in separate buffers as well. You can kthe changes were made. (Remember the star in the C-X C-B listing and at the right end of the mode line now?) Answer "Y" for ybe the first paragraph of Lesson 6. Don't forget that the text is still yankable again; you may want to go back tich we are currently working on, and so it asks us which buffer we would like to go to instead. Type "main" followed by a carhe file "lesson6.doc". (1) M-< to the beginning of lesson8. (2) C-N down to the first line of the paragraph. ill the buffer called "lesson4", which contains the file "lesson4.doc". Be sure to keep the two distinct in your mind. C-X Kill some text in one buffer, do a C-X B command to another buffer, and yank back the killed text in the new buffer. Les, and let Mince delete the buffer. You can check this out with a C-X C-B listing if you like. What advantages doo the other buffer and repair it with a C-Y. We have learned some commands in this lesson which you might not use quriage- return, and Mince will then switch you back to the "main" buffer (which has the Lesson 8 text in it), and try to delete (3) C-@ to set the mark at the beginning of the first line. (4) M-] to get to the end of the paragraph. and C-X B work with buffer names, and C-X C-F, C-X C-R, and C-X C-W all work with file names. Do a C-X C-B again, and noticeet's work through an entire example in detail. This is a chance for us to review some of the many commands that you have leares using several buffers have besides allowing you to look at several files back and forth? It allows you to move or copy texite at first. Sooner or later, though, you will be using them regularly. If you get into the habit of using C-X C-F to read the "other" buffer. But there is another message at the bottom of the screen: Mince will ask you if you are sure that (5) C-W to wipe out the paragraph. (6) C-X B to the buffer "lesson6" (7) M-< to the beginning of that buffer that the buffer named "lesson4" is no longer there. Now type: C-X K other This command is intendened in Lessons 6, 7, and 8. The task is to take the first paragraph of this text, Lesson 8, and make it the first paragraph ot from one to the other as well. In Lesson 6, we used the killing mechanism (or C-W wiping or M-W copying mechanism) to move in a file initially, you will find it easier to use the multiple buffers later when you need to. Experiment some more with bu you want to kill the buffer, because it has some text (those few characters) in it which has not been written out to a since . (8) C-N down to just before the start of the first paragraph. (9) C-Y to yank the text back. It should now d to delete the buffer called "other", which just happens to be the one on your screen now. Mince will not delete a buffer whf Lesson 6. The buffer which we are now in, "main", contains the file "lesson8.doc". The other buffer, "lesson6", contains tffers and moving text back and forth among them. When you exit Mince with the C-X C-C command, be sure NOT to write out the brk C-X C-Z View Other Window's Previous Screen C-X 1 One Window C-X 2 Two Windows C-X . Set Indent Column C-X = Where Am I ranspose Characters C-U Universal Argument C-V View Next Screen C-W Wipe Region C-X Control-X Command Prefix C-Y Yank raph M-\ Delete Surrounding Whitespace M-] Forward Paragraph M-a same as M-A M-b same as M-B M-c same as M-C M-d samlete Character Backward Control Characters C-@ Set Mark C-A Beginning Of Line C-B Backwardy Same as Y Don't Replace, And Find Next M-C-W Make previous delete M-< Beginning Of Buffer M-> End Of Buffers, so that Lessons 6 and 8 are intact for the next person to use them. ] to get to the end of the paragraph. C-X B Select Buffer C-X F Set Fill Column C-X K Kill Buffer C-X M Add Mode C-X O Switch Window C-X ^ Grow Current Window Killed Text C-[ same as C-\ Delete Indentation Control-X Commands C-X Set Tab Se as M-D M-e same as M-E M-f same as M-F M-h same as M-H M-k same as M-K M-l same as M-L M-q same as M-Q M-r same Character C-D Delete Character Forward C-E End Of Line C-F Forward Character C-G Abort/Cancel Prefix C-H same as ?@[\]C-X b same as C-X B C-X f same as C-X F C-X k same as C-X K C-X m same as C-X M C-X o same as C-X O pacing C-X C-B List Buffers C-X C-C Exit to Command Level C-X C-F Find File C-X C-I same as C-X C-X C-M Delete Mode as M-R M-s same as M-S M-t same as M-T M-u same as M-U M-v same as M-V M-w same as M-W > C-I same as C-J Newline Insert, Indent same C-K Kill Line C-L Redisplay Screen C-M same as C-N Next Linorward Word M-H Mark Whole Paragraph M-K Kill Sentence Forward M-L Lowercase Word M-Q Fill Paragraph M-R Replace Strin^_`{|}~ Space) Self Insert (Back Space, BS) same as (Tab) Tab Insert (Return, Carriage Return, Meta Commands M- Delete Word Backward M-C-H same as M- M-C-K Kill Entire Line M-C-R Query Replace StrinC-X C-R Read File C-X C-S Save File C-X C-V View Other Window's Next Screen C-X C-W Write File C-X C-X Exchange Point And Ma Fill Mode Space Auto Fill Space Page Mode All Printing Characters Self Overwritee C-O Open line C-P Previous line C-Q Quote Next Character C-R Reverse String Search C-S Forward String Search C-T Tg M-S Center Line M-T Transpose Words M-U Uppercase Word M-V View Previous Screen M-W Copy Region M-[ Backward Parag CR, Ret, Enter) Newline Insert (Escape, Esc, Alt, Alt Mode) Meta Command Prefix (Delete, Del, Rubout) Deg C-G Abort Space Same as Y ! Replace Rest . Exit , Replace And Request Confirmation Y Replace And Find Next Overwrite Character Backward Space Overwrite/Delete Character Forward C-A To First Non-White C-B Backward Character VT (vertical tab) 12. 014 0C ^L FF (form feed, new page) 13. 015 0D ^M CR (carriage return) 14. 016 0E Graphic Name (Meaning) 0. 000 00 ^@ NUL (used for padding) 1. 001 01 ^A SOH (starenthesis 41. 051 29 ) right parenthesis 42. 052 2A * asterisk (star) 43. 053 2B + plus sign 44. 054 2C , comma . 033 1B ^[ ESC (escape, alter mode, SEL) 28. 034 1C ^\ FS (file separator) 29. 035 1D ^] GS (group separator) On Line C-E To Last Non-White C-F Forward Character On Line C-H same as C-N Next Line Forced C-P Previous Line F^N SO (shift out) 15. 017 0F ^O SI (shift in) 16. 020 10 ^P DLE (data link escape) 17. 021 11 ^Q DC1 (device cot of header) 2. 002 02 ^B STX (start of text) 3. 003 03 ^C ETX (end of text) 4. 004 04 ^D EOT (end of transmissio 45. 055 2D - minus sign (dash) 46. 056 2E . period (decimal point, dot) 47. 057 2F / (right) slash 30. 036 1E ^^ RS (record separator) 31. 037 1F ^_ US (unit separator) 32. 040 20 space or blank 33. 0orced C-Q Insert Next Character C-X \ Delete Trailing Whitespace L Lowercase Word M-Q Fill Paragraph M-R Replace Strinntrol 1, XON) 18. 022 12 ^R DC2 (device control 2) 19. 023 13 ^S DC3 (device control 3, XOFF) 20. 024 14 ^T DC4 (devn) 5. 005 05 ^E ENQ (enquiry) 6. 006 06 ^F ACK (acknowledge) 7. 007 07 ^G BEL (bell or alarm) 8. 010 0 48. 060 30 0 numeral zero 49. 061 31 1 numeral one 50. 062 32 2 numeral two 51. 063 33 3 numeral three 5241 21 ! exclamation mark 34. 042 22 " double quote 35. 043 23 # number sign (hash mark) 36. 044 24 $ dollar sign ice control 4) 21. 025 15 ^U NAK (negative acknowledge) 22. 026 16 ^V SYN (synchronous idle) 23. 027 17 ^W ETB (end 8 ^H BS (backspace) 9. 011 09 ^I HT (horizontal tab) 10. 012 0A ^J LF (line feed) 11. 013 0B ^K . 064 34 4 numeral four 53. 065 35 5 numeral five 54. 066 36 6 numeral six 55. 067 37 7 numeral seven 56. 070 3 USASCII Character Set as modified for printing and the inclusion of Meta characters Decimal Octal Hex 37. 045 25 % percent sign 38. 046 26 & ampersand sign 39. 047 27 ' single quote (apostrophe) 40. 050 28 ( left partransmission block) 24. 030 18 ^X CAN (cancel) 25. 031 19 ^Y EM (end of medium) 26. 032 1A ^Z SUB (substitute) 278 8 numeral eight 57. 071 39 9 numeral nine 58. 072 3A : colon 59. 073 3B ; semi-colon 60. 074 3C < less-than ser-case letter charlie 100. 144 64 d lower-case letter delta 101. 145 65 e lower-case letter echo 102. 146 66 f lower-cletter VICTOR 87. 127 57 W upper-case letter WHISKEY 88. 130 58 X upper-case letter XRAY 89. 131 59 Y upper-case let 128. 200 80 ~^@ Meta NUL 129. 201 81 ~^A Meta SOH 130. 202 82 ~^B Meta STX 131. 203 83 ~^C Meta ETX 132. 204 84 ~^upper-case letter JERICHO 75. 113 4B K upper-case letter KAPPA 76. 114 4C L upper-case letter LIMA 77. 115 4D M uppemeo 115. 163 73 s lower-case letter sierra 116. 164 74 t lower-case letter tango 117. 165 75 u lower-case letter unicorign 61. 075 3D = equal sign 62. 076 3E > greater-than sign 63. 077 3F ? question mark 64. 100 40 @ atsign 65ase letter foxtrot 103. 147 67 g lower-case letter golf 104. 150 68 h lower-case letter hotel 105. 151 69 i lower-case ter YANKEE 90. 132 5A Z upper-case letter ZEBRA 91. 133 5B [ left square bracket 92. 134 5C \ left slash (backslash)D Meta EOT 133. 205 85 ~^E Meta ENQ 134. 206 86 ~^F Meta ACK 135. 207 87 ~^G Meta BEL ... 159. 237 9F ~^_ Metr-case letter MIKE 78. 116 4E N upper-case letter NOVEMBER 79. 117 4F O upper-case letter OSCAR 80. 120 50 P uppern 118. 166 76 v lower-case letter victor 119. 167 77 w lower-case letter whiskey 120. 170 78 x lower-case letter xray . 101 41 A upper-case letter ALPHA 66. 102 42 B upper-case letter BRAVO 67. 103 43 C upper-case letter CHARLIE 68. letter india 106. 152 6A j lower-case letter jericho 107. 153 6B k lower-case letter kappa 108. 154 6C l lower-case let 93. 135 5D ] right square bracket 94. 136 5E ^ uparrow (carat) 95. 137 5F _ underscore 96. 140 60 ` (single) a US 160. 240 A0 ~ Meta space 161. 241 A1 ~! Meta exclamation mark ... 253. 375 FD ~} Meta right curly brace 25-case letter PAPPA 81. 121 51 Q upper-case letter QUEBEC 82. 122 52 R upper-case letter ROMEO 83. 123 53 S upper-cas121. 171 79 y lower-case letter yankee 122. 172 7A z lower-case letter zebra 123. 173 7B { left curly brace 124. 174 7104 44 D upper-case letter DELTA 69. 105 45 E upper-case letter ECHO 70. 106 46 F upper-case letter FOXTROT 71. 107 ter lima 109. 155 6D m lower-case letter mike 110. 156 6E n lower-case letter november 111. 157 6F o lower-case letter back quote (grave accent) 97. 141 61 a lower-case letter alpha 98. 142 62 b lower-case letter bravo 99. 143 63 c low4. 376 FE ~~ Meta tilde 255. 377 FF ~^? Meta DEL ----------------------------------------------------------------- Noe letter SIERRA 84. 124 54 T upper-case letter TANGO 85. 125 55 U upper-case letter UNICORN 86. 126 56 V upper-case C | vertical bar 125. 175 7D } right curly brace 126. 176 7E ~ tilde 127. 177 7F ^? DEL (delete, rub out) 47 G upper-case letter GOLF 72. 110 48 H upper-case letter HOTEL 73. 111 49 I upper-case letter INDIA 74. 112 4A J oscar 112. 160 70 p lower-case letter pappa 113. 161 71 q lower-case letter quebec 114. 162 72 r lower-case letter rotes: The "Meta" form of each character is created by adding 128 (decimal) to that character's ASCII value. To prevent ae BELL '\7' #define BS '\10' #define TAB '\11' #define LF '\12' #define CR '\15' #define ESC '\33' #define DEL '\177' #.swp" #define SWAP1FNAM "a:mince.swp" int mark, arg, argp, lcol, psstart, sstart, send, cnt, tmp; int altpnt, altstart, slinit, tabinit, indentinit, mhz; int delaycnt, npages, swapbase; /* spare area - patches */ int spare[10]; /* !!!!!!!! /* CP/M only */ #define TYPE_AHEAD 1 /* type ahead is detectable */ #define SUSER 1 /* single user systems (paging messag8 byte terminal descriptor */ char ctrlz; char nrows, ncols, rowbias, colbias; char rowfirstp, compp, binaryp; char mbiguity, the following alternate forms can be used for printing: 94. 136 5E ^ can be printed as ^= 126. 176 7E ~ can define NL '\212' #define ROWMAX 60 #define COLMAX 132 #define KBBUFMAX 80 int prow, pcol, srow, scol, tabincr, tlrow; cendp, topp, divide, altbuff; int (*functs[3*128])(), (*lfunct)(), fillwidth, indentcol; char strarg[STRMAX], mode[MODEMAX], !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!! WARNING: You may not change the size or order of ANYTHINes) */ /* Universal global declarations */ #define TRUE (-1) #define FALSE 0 #define NULL 0 #define INPUT 0 #define Opadp, padchar; char nhclpad, ncleolpad, ncpospad, ncleowpad; struct str { char idx; /* index into space */ chabe printed as ^~ 222. 336 DE ~^ can be printed as ~^= 254. 376 FE ~~ can be printed as ~^~ left curly brace 124. 174 7har clrcol[ROWMAX], tline[COLMAX+1]; char *lindex; struct { char *head, *tail, *bottom, *top, space[KBBUFMAX]; } kbdq;namearg[BUFNAMMAX]; int stat_col, abort, cmnd, cbuff, del_buff, tmark; struct cbuffer { int bbuff, bmark; char bname[BG. !!!!! !!!!! The spare array directly above may be used freely but it MUST !!!!! !!!!! remain the SAME SIZE. You may not adUTPUT 1 #define UPDATE 2 #define HOME 0,0 #define FORWARD (-1) #define BACKWARD 0 /* MINCE globals */ #define MODEMAX r len; /* length */ } hcl, cleol, cleow, cpos1, cpos2, cpos3, bell, init, deinit; char strspc[73]; } terminal; /* special swap file header terminal globals */ #define NOPAD 0 /* values for padp */ #define CHARPAD 1 /* pad withUFNAMMAX], fname[FILMAX], bmodes[MAXMODES]; } buffs[BUFFSMAX]; int pnt_row; /* TTY globals */ #define NUL '\0' #defind any globals after this !!!!! !!!!! point!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ /* END OF MINCE.G20 #define STRMAX 40 #define MAXMODES 4 #define BUFFSMAX 7 #define BUFNAMMAX 9 #define FILMAX 15 #define SWAPFNAM "mince struct portdesc { char biosp, dataport, statport, datamask, readymask, polarity; } inport, outport; char prefrow, fil/* MINCE.GBL - This is the global variables and constants for MINCE, to be included in each source file. */ #define CPM 1 characters */ #define DELAYPAD 2 /* pad with wait loop */ #define FIRST 255 #define SECOND 0 struct termdesc { /* 12BL - Global variable definitions for Mince. */ har nrows, ncols, rowbias, colbias; char rowfirstp, compp, binaryp; char y*"y*" y*o|-͐|!]03! 9Mince Copyright (C) 1981 by Mark of the Unicorn Inc. mince.swpa:mince.swpCTSTRLESTRILOWCASCMAKEBUBREADFITMAXROBCREMRCSWITCHECHUINIf6!͐ ͐͐ !͐")!$ó|~*y++~*y !*y|Y++\*y*y|l*y#o!*!-`i^#Vr+sé!9Mince Version 2.6 () : $,2<@DY]avz}DOINCRD!an't Open Swap FileDELETE.MEmainNew File&?CUYgnr!LVnSCRNRA9DM!{2`|{2$|!!#`is#rz!!-`is#rz!9 !!~~͐ *~&" |*~&""|*~&"_}y ͐ ͐͐")'-0͐*3!92NT\cilo~yP SETUEDICLRECHTSETPOITMAXROTFINEXIQ!9DM͐͐ !++ ! BISBEFOSCRNRANBCREMRBPNTTOMBISATMRBISSTARINNERDSTMAXROTKBRDBKILLMRDOSCRNRDOINCRDMODEFLATSETPOIBGETCOTMAXCOTMAIEDIԓSETUaNEWDSzMODELININCRDScDOINCRDӅINNERDS* WHEIGH PREFLIN SCRNRAN;DOSCRNR]CMAKEBUCSWITCHgCFINTCLRWINMODELINTMAXROBSETMOBSCRNMRT !"y*y ++L*y*y#"y%!"a} ͐"q|! w#w!"y*y|*y)))))u|w#w*y+"y͐Ҙ! ~#fo##~#fo7! ~#fo##~#fo6!#&+2;BORWcjq{TKBRDBTSTMRBSCRNMRBISATMRBMRKTOPTSETPOIASMDSTCLEOTGETCOTMAXCOBISENBSHOVEIB+03:@ELTKBRDINCRDSKBWAITGETKTKBCH!"k|*k||Ž|, "m|!"y!"y*y|ʋ*mFORC6!9DM*)! s#r* y|k*y|n* y|n ! s#NDBUx*3:?JTDISSTTMAXROTPRNTSTTCLEOTGETCOTSETPOITMAXCOTPRNTCH!9DM!!++ ~#fo##~#fo! ! ! ~#fo##~#fo! !"o|! ~#fo##~#fo$|͝! s#rè!N!X!"o|!"y'++"y*"UFBMOVBPNTTOMTKBCHBISAFTEBSETMO9!9DM! 6#6͐`is#r͐|)y~#fo!c!9~#fo*m|)y~#fo"|*y+"y|!"yA "'*-0GWtPUTOPEEXIREATINIBINIBCREAr* y *y|ʪ|ª͐ * y ͐*y|ʽ*y++*y|!*y#`is#r͐|%|%!L| ! *o|)))))u| ! *o|)))))u|  "i|*y++!*y+`is#r͐|͐ @|@͐ |’͐ |͐ !͐*$~6͐"a}!|$u|! s#r͐ s#r͐~#fo|›!͐~#fo ͐##s#r͐ ͐! 6#6͐|͐͐6!l be sent. The seller reserve the right to make changes, additions, and improvements to the software at any time; no guarantBMAKECOTOBEGLIBMOVBMRKTOPBPNTTOMBKILLMR$!9DM`is#r͐|ʕ#"y*y or other damages be assumed by the seller. Any user of this software uses it at his or her own risk. Due to the ill-defined'!*͐# -0͐ |4͐ 3|4͐|4͐"U}! w#w`i^#Vr+sT|i͐ | ^#Vr+s͐ ͐ ͐!9Too many buffers+AMPY\`d STRCPBSWITCHSETMODEdee is made that future versions of the software will be compatible with any other version. The parts of this disclaimer are#"y*yq|E*y|*y ?Ò"y*yҴ*y+"yÛ|!* y! nature of "fitness for purpose" or similar types of guarantees for this type of product, no fitness for any purpose whatsoevei͐ 6͐ ͐ |ʦ|¦* y!"y͐|ʦ͐ "U}*U}ì!91bejrw} !9DM*o|)))))u|!`|͐"o|*o|)))))u|~#fo*o|)))))u|##~#fo"y *G`STRCMq! severable and fault found in any one part does not invalidate any other parts. Copyright (c) 1981 by Mark of the Unicorn *y!"y͐͐!!9-<?JNgjowTKBCHERROBCREATBSWITCHr is claimed or implied. The physical medium upon which the software is supplied is guaranteed for one year against any phys #>AFNSYafot~TMAXRO(*y|*y$*y+++ WHE/* BINDINGS.C - Set up the key bindings for Mince The seller of this software hereby disclaims any and all guarantees and wa9DM`i6#6͐|a͐)))))u|~#fo|U͐)))))u|͐|a`i^#Vr+s͐h!92LS_f Created for Version 2.3 10/4/80 JTL Updated to version three 1/7/81 JTL This file contains the function table initialBCREMRSTRCP/!9DM`i6#6͐|O͐)))))u|~#fo|O`i^#Vr+s$͐|f!͐)))))ical defect. If it should fail, return it to the seller, and a new physical medium with a copy of the purchased software shalIGHTMAXRO% *~?++DOSCRNR! BCREMRPREFLINBGETCOTMAXCORNLSRCrranties, both express and implied. No liability of any form shall be assumed by the seller, nor shall direct, consequential,izers and mode set up functions */ #include "mince.gbl" finit1() /* initialize the control and self insert key bindingsotImpl; /* C-_ */ functs[DEL] = MRDelChar; /* DEL */ } finit2() /* set up the Meta key bindings */ { int cnt; in functs[17] = MQuote; /* C-Q */ functs[18] = MRSearch; /* C-R */ functs[19] = MSearch; /* C-S */ functs[20] = MSwapCha'] = MFSent; /* M-E */ functs[128+'F']=functs[128+'f'] = FWord; /* M-F */ functs[128+'H']=functs[128+'h'] = MMrkPara; /* M-H functs[2] = MPrevChar; /* C-B */ functs[3] = MNotImpl; /* C-C */ functs[4] = MDelChar; /* C-D */ functs[5] = MEndLin */ functs[128+11] = MDelELin; /* M-C-K */ functs[128+18] = MQryRplc; /* M-C-R */ functs[128+23] = MMakeDel; /* M */ { int cnt; int MInsert(), MSetMrk(), MBegLin(), MPrevChar(); int MNotImpl(), MDelChar(), MEndLin(), MNextChar(); int MNotImpl(), MAbort(), MDelELin(), MQryRplc(); int MMakeDel(), MToStart(), MToEnd(), MBSent(); int BWord(), MCapWord(), MDer; /* C-T */ functs[21] = MArg; /* C-U */ functs[22] = MNextPage; /* C-V */ functs[23] = MDelRgn; /* C-W */ functs[ */ functs[128+'K']=functs[128+'k'] = MDelSent; /* M-K */ functs[128+'L']=functs[128+'l'] = MLowWord; /* M-L */ functs[128; /* C-E */ functs[6] = MNextChar; /* C-F */ functs[7] = MAbort; /* C-G */ functs[8] = MRDelChar; /* C-H */ /-C-W */ functs[128+'<'] = MToStart; /* M-< */ functs[128+'>'] = MToEnd; /* M-> */ functs[128+' '] = MSetMrk; /* Mt MAbort(), MDelLin(), NewDsp(), MNewLin(); int MNextLin(), MOpenLin(), MPrevLin(), MQuote(); int MRSearch(), MSearch(), MSwlWord(), MFSent(); int FWord(), MMrkPara(), MDelSent(), MLowWord(); int MFillPara(), MReplace(), MCntrLine(), MUpWord(); i24] = MCtrlX; /* C-X */ functs[25] = MYank; /* C-Y */ functs[26] = MNotImpl; /* C-Z */ functs[ESC] = MMeta; /* ESC */+'Q']=functs[128+'q'] = MFillPara; /* M-Q */ functs[128+'R']=functs[128+'r'] = MReplace; /* M-R */ functs[128+'S']=functs[12* C-I */ functs[10] = MIndent; /* C-J */ functs[11] = MDelLin; /* C-K */ functs[12] = NewDsp; /* C-L */ functs[13] = - */ functs[128+'A']=functs[128+'a'] = MBSent; /* M-A */ functs[128+'B']=functs[128+'b'] = BWord; /* M-B */ functs[128+'CapChar(), MArg(); int MNextPage(), MDelRgn(), MCtrlX(), MYank(); int MMeta(), MDelIndent(), MRDelChar(), MIndent(); font MPrevPage(), MCopyRgn(), MBPara(), MDelWhite(); int MFPara(), MRDelWord(), MSetMrk(), MSwapWord(); for (cnt=128; cnt<25 functs[28] = MDelIndent; /* C-\ */ functs[29] = MNotImpl; /* C-] */ functs[30] = MNotImpl; /* C-^ */ functs[31] = MN8+'s'] = MCntrLine; /* M-S */ functs[128+'T']=functs[128+'t'] = MSwapWord; /* M-T */ functs[128+'U']=functs[128+'u'] = MUpWoMNewLin; /* C-M */ functs[14] = MNextLin; /* C-N */ functs[15] = MOpenLin; /* C-O */ functs[16] = MPrevLin; /* C-P */ ']=functs[128+'c'] = MCapWord; /* M-C */ functs[128+'D']=functs[128+'d'] = MDelWord; /* M-D */ functs[128+'E']=functs[128+'er (cnt=0; cnt<128; ++cnt) functs[cnt] = MInsert; TKbChk(); functs[0] = MSetMrk; /* C-@ */ functs[1] = MBegLin; /* C-A */6; ++cnt) functs[cnt] = MNotImpl; TKbChk(); functs[128+7] = MAbort; /* M-C-G */ functs[128+8] = MRDelWord; /* M-C-Hrd; /* M-U */ functs[128+'V']=functs[128+'v'] = MPrevPage; /* M-V */ functs[128+'W']=functs[128+'w'] = MCopyRgn; /* M-W */ */ functs[256+'K']=functs[256+'k'] = MKillBuff; /* C-X K */ functs[256+'F']=functs[256+'f'] = MSetFill; /* C-X F */ functs /* C-X C-S */ functs[256+22] = MNxtOthrWind; /* C-X C-V */ functs[256+23] = MFileWrite; /* C-X C-W */ functs[256+2s[6] = MPFChar; functs[8] = MPBackSpace; functs[9] = MPTab; functs[14] = MPNextLine; functs[16] = MPPrevLine; Wind(); int MNxtOthrWind(), MPrvOthrWind(), MGrowWind(); #ifdef UNIX int MUnix(); #endif for (cnt=256; cnt<384; ++cnt)the key bindings */ finit2(); finit3(); for (cnt=MAXMODES-1; cnt>=0; --cnt) { switch (buffs[cbuff].bmodes[cnt]) { #i functs[128+'['] = MBPara; /* M-[ */ functs[128+'\\'] = MDelWhite; /* M-\ */ functs[128+']'] = MFPara; /* M-] */ [256+'M']=functs[256+'m'] = MAddMode; /* C-X M */ functs[256+'O']=functs[256+'o'] = MSwpWind; /* C-X O */ functs[256+'^'] = 4] = MSwapMrk; /* C-X C-X */ functs[256+26] = MPrvOthrWind; /* C-X C-Z */ functs[256+'.'] = MSetIndent; /* C-X . */ functs[256+'\\'] = MTrimWhite; strcat(mode,"Page "); break; } } if (!*mode) strcpy(mode,"Normal "); mode[st functs[cnt] = MNotImpl; TKbChk(); functs[256+2] = MLstBuffs; /* C-X C-B */ functs[256+3] = MExit; /* C-X C-C */ fdef LARGE case 'c': functs[13] = MCIndent; strcat(mode,"C "); break; case 's': Rebind(MInsert,MSInsert); functs[128+DEL] = MRDelWord; /* M-DEL */ } finit3() /* set up the Control-X key bindings */ { int cnt; int MNotImMGrowWind; /* C-X ^ */ } SetModes() /* Set the modes according to the bmodes array */ { int cnt; int MFillChk(), #ifdef UNIX functs[256+'!'] = MUnix; /* C-X ! */ #endif functs[256+'='] = MPrintPos; /* C-X = */ functs[256+'1'] rlen(mode)-1]='\0'; ModeLine(); } UInit() /* Do user code initilization */ /* This function is called once at the vefuncts[256+6] = MFindFile; /* C-X C-F */ functs[256+7] = MAbort; /* C-X C-G */ functs[256+9] = MSetTabs; /* C-X Ta strcat(mode,"Save "); break; #endif case 'f': functs[' '] = MFillChk; strcat(mode,"Fill "); break; capl(), MLstBuffs(), MExit(), MFindFile(); int MAbort(), MSetTabs(), MDelMode(), MFileRead(); int MFileSave(), MFileWrite(), MMInsert(), MOverwrite(), MPBegLine(); int MPBChar(), MPEndLine(), MPFChar(), MPBackSpace(); int MPNextLine(), MPPrevLine(), = MOneWind; /* C-X 1 */ functs[256+'2'] = MTwoWind; /* C-X 2 */ functs[256+'B']=functs[256+'b'] = MSwitchTo; /* C-X B ry begining. It may be used to do any initilization required for user code */ { } /* END OF BINDINGS.C - set up key bindb */ functs[256+13] = MDelMode; /* C-X C-M */ functs[256+18] = MFileRead; /* C-X C-R */ functs[256+19] = MFileSave; se 'p': Rebind(MInsert,MOverwrite); functs[1] = MPBegLine; functs[2] = MPBChar; functs[5] = MPEndLine; functSwapMrk(), MSetIndent(); int MPrintPos(), MSwitchTo(), MKillBuff(), MSetFill(); int MAddMode(), MOneWind(), MTwoWind(), MSwpMTrimWhite(), MPTab(); #ifdef LARGE int MNewLin(), MCIndent(), MSInsert(); #endif *mode='\0'; finit1(); /* Set up ings */ ndings */ finit2(); finit3(); for (cnt=MAXMODES-1; cnt>=0; --cnt) { switch (buffs[cbuff].bmodes[cnt]) { #il" MSetMrk() /* set the user mark to the point */ { BMrkToPnt(mark); Echo("Mark Set"); } MBegLin() /* move tontee is made that future versions of the software will be compatible with any other version. The parts of this disclaimer aCol(); while(arg-- > 0) NLSrch(); BMakeCol(lcol); } MOpenLin() /* insert a newline after the current position */ { ed nature of "fitness for purpose" or similar types of guarantees for this type of product, no fitness for any purpose whatsoerent */ { int IsWhite(); BInsert(NL); BMove(-1); ToBegLine(); MovePast(IsWhite,FORWARD); cnt=BGetCol(); NLSrch( the beginning of the current line */ { ToBegLine(); } MPrevChar() /* move back a character */ { BMove(-arg); argre severable and fault found in any one part does not invalidate any other parts. Copyright (c) 1981 by Mark of the Unicorn BInsert(NL); BMove(-1); } MPrevLin() /* move to the previous line */ { if (!VMovCmnd(lfunct)) lcol=BGetCol(); whiver is claimed or implied. The physical medium upon which the software is supplied is guaranteed for one year against any ph); TIndent(cnt); } MDelLin() /* delete the current line */ { tmark=BCreMrk(); if (arg>0) { if (!BIsEnd() && Bu/* COMM1.C This is part one of the mince command set The seller of this software hereby disclaim any and all guarantees and =0; } MDelChar() /* delete the current character */ { BDelete(arg); arg=0; } MEndLin() /* move to the end of Created for version two 8/27/80 JTL Updated to version three 1/7/81 JTL This file contains the control character cole (arg-- > 0) RNLSrch(); BMakeCol(lcol); } MQuote() /* quote next character */ { tmp=DelayPrompt("Quote:"); KbWaysical defect. If it should fail, return it to the seller, and a new physical medium with a copy of the purchased software shff()==NL) BMove(1); else ToEndLine(); } else ToBegLine(); KillToMrk(tmark,(arg>0)); BKillMrk(tmark); } MNewLin(warranties, both express and implied. No liability of any form shall be assumed by the seller, nor shall direct, consequentia the current line */ { ToEndLine(); } MNextChar() /* move the point to the next character */ { BMove(arg); arg=0;mmand execution routines for the mince editor. There are also a small number of subordinate routines. */ #include "mince.gbit(); cnt=TGetKb(); while (arg-- > 0) { BInsert(cnt); TKbChk(); } if (tmp) ClrEcho(); arg=0; } MRSearch() all be sent. The seller reserve the right to make changes, additions, and improvements to the software at any time; no guara) /* insert a newline */ { BInsert(NL); } MNextLin() /* move down one line */ { if (!VMovCmnd(lfunct)) lcol=BGetl, or other damages be assumed by the seller. Any user of this software uses it at his or her own risk. Due to the ill-defin } MAbort() /* abort the current operation */ { TBell(); arg=0; } MIndent() /* Indent next line same as cur /* reverse string search */ { if (!GetArg("Reverse Search : ",ESC,strarg,STRMAX)) { arg=0; return; } tmark=CreMrk(); BToStart(); BCopyRgn(tmark,buffs[cbuff].bbuff); BKillMrk(tmark); BSwitchTo(buffs[cbuff].bbuff); } MMeta()own a page */ { BPntToMrk(sstart); for (cnt=WHeight()+PrefLine()-2; cnt>0; --cnt) NLSrch(); ScrnRange(); } MDelRgn()(BGetCol()+1,FORWARD); } MPEndLine() /* go to end of line less white space */ { ToEndLine(); MDelWhite(); } MPBters */ { if (BIsEnd() || Buff()==NL) BMove(-1); if (!BIsStart()) BMove(-1); tmp=Buff(); BDelete(1); BMove(1); BInsg=0; } /* Page mode commands */ MOverwrite() /* overwrite instead of inserting */ { if (!BIsEnd() && !IsNL()) { MBCreMrk(); while (arg-- > 0) if (!StrSrch(strarg,BACKWARD)) { BPntToMrk(tmark); Error("Not Found"); break; } BKi /* Process Meta commands */ { tmp=DelayPrompt("Meta:"); KbWait(); cmnd=TGetKb()|128; if (tmp) ClrEcho(); (*functs /* delete from the point to the mark */ { KillToMrk(mark,BIsBeforeMrk(mark)); } MCtrlX() /* process cntrl-x commaackSpace() /* rub out previous character */ { if (BGetCol()==0) return; MPBChar(); if (!BIsEnd() && !IsNL()) { MPFChert(tmp); } MArg() /* set up arguments */ { int tchar, eflag, cflag; tmp=0; cflag=FALSE; arg *= 4; eflag=ArPFChar(); BMove(-1); BDelete(1); } BInsert(cmnd); } MPBegLine() /* move to the first non-white character */ {llMrk(tmark); arg=0; ClrEcho(); } MSearch() /* forward string search */ { if (!GetArg("Forward Search : ",ES[cmnd])(); } MDelIndent() /* delete the indentation from this line */ { tmark=BCreMrk(); ToBegLine(); MDelWhite();nds */ { tmp=DelayPrompt("Control-X:"); KbWait(); cmnd=(TGetKb() & ~128)+256; if (tmp) ClrEcho(); (*functs[cmnd])(); ar(); BMove(-1); BDelete(1); } BInsert(' '); BMove(-1); } MPTab() /* move over a tab stop */ { ForceColgEcho(arg); while ((tchar=TGetKb())>='0' && tchar<='9') { tmp=tmp*10+tchar-'0'; cflag=TRUE; eflag |= ArgEcho(tmp); int IsWhite(); ToBegLine(); MovePast(IsWhite,FORWARD); if (IsNL()) MDelWhite(); } MPBChar() /* move to the leC,strarg,STRMAX)) { arg=0; return; } tmark=BCreMrk(); while (arg-- > 0) if (!StrSrch(strarg,FORWARD)) { BPntToMr BPntToMrk(tmark); BKillMrk(tmark); arg=0; } MInsert() /* self inserting commands */ { BInsert(cmnd); } MR } MYank() /* Insert the delete buffer at the point */ { BMrkToPnt(mark); BSwitchTo(del_buff); BToEnd(); tmark=B(BGetCol()+TWidth(BGetCol(),TAB),FORWARD); } MPNextLine() /* move to the next line in exact same column */ { MNextLin( } if (cflag) arg=tmp; if (eflag) ClrEcho(); cmnd=tchar; argp=TRUE; (*functs[cmnd])(); } MNextPage() /* move dft one character */ { ForceCol(BGetCol()-1,BACKWARD); } MPFChar() /* move to the right one character */ { ForceColk(tmark); Error("Not Found"); break; } BKillMrk(tmark); arg=0; ClrEcho(); } MSwapChar() /* swap two characDelChar() /* delete the previous character */ { tmark=BCreMrk(); BMove(-arg); BDelToMrk(tmark); BKillMrk(tmark); ar); ForceCol(lcol,FORWARD); } MPPrevLine() /* move to previous column in same column */ { MPrevLin(); ForceCol(lcolre severable and fault found in any one part does not invalidate any other parts. Copyright (c) 1981 by Mark of the Unicornrt */ { static unsigned in_cnt; BInsert(cmnd); if (++in_cnt>256) { MFileSave(); in_cnt=0; } } #endif /* ver is claimed or implied. The physical medium upon which the software is supplied is guaranteed for one year against any ph,FORWARD); } #ifdef LARGE /* C Mode commands */ MCIndent() /* Indent for C code */ { int IsWhite(), wid; tmark=/* COMM2.C This is part two of the mince command set The seller of this software hereby disclaim any and all guarantees and Created for version two 8/27/80 JTL Updated to version three 1/7/81 JTL This file contains the Meta command executiEND OF COMM1.C -Mince command routines */ nsert(' '); BMove(-1); } MPTab() /* move over a tab stop */ { ForceColysical defect. If it should fail, return it to the seller, and a new physical medium with a copy of the purchased software shBCreMrk(); ToBegLine(); MovePast(IsWhite,FORWARD); if (BIsAfter(tmark)) BPntToMrk(); wid=BGetCol(); while (BIsBefore(twarranties, both express and implied. No liability of any form shall be assumed by the seller, nor shall direct, consequentiaon routines for the mince editor. There are also a small number of subordinate routines. */ #include "mince.gbl" /* Only wall be sent. The seller reserve the right to make changes, additions, and improvements to the software at any time; no guaramark)) { if (Buff()=='{') wid += indentcol; else if (Buff()=='}') wid -= indentcol; BMove(1); TKbChk(); } BPntTl, or other damages be assumed by the seller. Any user of this software uses it at his or her own risk. Due to the ill-definhen seperate files */ MDelELin() /* delete entire line */ { tmark=BCreMrk(); ToBegLine(); KillToMrk(tmark,BACKWARD);ntee is made that future versions of the software will be compatible with any other version. The parts of this disclaimer aoMrk(tmark); BKillMrk(tmark); BInsert(NL); TIndent(wid); } /* Auto save mode */ MSInsert() /* Auto save self inseed nature of "fitness for purpose" or similar types of guarantees for this type of product, no fitness for any purpose whatsoe NLSrch(); lfunct = MDelELin; KillToMrk(tmark,FORWARD); BKillMrk(tmark); } MQryRplc() /* Query replace string */ */ { int IsWhite(); if (argp) fillwidth=arg; arg=0; tmark=BCreMrk(); BMove(-1); MFPara(); BMove(-1); if (BIsE MovePast(IsToken,FORWARD); } MMrkPara() /* set point and mark around paragraph */ { BMove(-1); MFPara(); BMrkToreMrk(); BPntToMrk(tmark); MoveTo(IsToken,BACKWARD); BlockMove(tmark,tmp); MovePast(IsToken,BACKWARD); BlockMove(tmaen,BACKWARD); MovePast(IsToken,BACKWARD); } MCapWord() /* capitalize word */ { ToWord(); if (BIsEnd()) return; B /* replace string */ { DoReplace(FALSE); } MCntrLine() /* center the line */ { if (argp) fillwidth=arg; else ar { DoReplace(TRUE); } MMakeDel() /* make the previous command a kill */ { } MToStart() /* move to the begining nd() || IsGray()) { BPntToMrk(tmark); BKillMrk(tmark); return; } BMove(1); tmp=BCreMrk(); MBPara(); while Pnt(mark); MBPara(); } MDelSent() /* delete sentence */ { int tmark; tmark=BCreMrk(); if (arg==0) MBSent(); rk,tmp); BKillMrk(tmark); BPntToMrk(tmp); BKillMrk(tmp); } MUpWord() /* uppercase a word */ { ToWord(); whileInsert(ToUpper(Buff())); BDelete(1); if (IsToken()) MLowWord(); } MDelWord() /* delete the current word */ { tmarg=fillwidth; if ((arg -= indentcol) < 1) return; ToBegLine(); MDelWhite(); ToEndLine(); tmp=BGetCol(); if (tmp<=arg)of the buffer */ { BMrkToPnt(mark); BToStart(); } MToEnd() /* move to the end of the buffer */ { BMrkToPnt(mark(BIsBefore(tmp)) { ToWhite(FORWARD); if (BGetCol() > fillwidth) { ToWhite(BACKWARD); MDelWhite(); BInsert(NL);else MFSent(); KillToMrk(tmark,arg!=0); BKillMrk(tmark); } MLowWord() /* lowercase a word */ { ToWord(); while ( (!BIsEnd() && IsToken()) { BInsert(ToUpper(Buff())); BDelete(1); TKbChk(); } } MPrevPage() /* move to the pk=BCreMrk(); FWord(); KillToMrk(tmark,FORWARD); BKillMrk(tmark); } MFSent() /* move forward a sentence */ { FWo { ToBegLine(); TIndent(indentcol+(arg-tmp)/2); ToEndLine(); } arg=0; } MSwapWord() /* transpose words */ ); BToEnd(); } MBSent() /* move backwards one sentence */ { BWord(); ToSentEnd(BACKWARD); if (!BIsStart()) ToWh SIndent(indentcol); ToWhite(FORWARD); } MovePast(IsWhite,FORWARD); if (IsNL() && BIsBefore(tmp)) { BDelet!BIsEnd() && IsToken()) { BInsert(ToLower(Buff())); BDelete(1); TKbChk(); } } MFillPara() /* fill paragraph revious page */ { BPntToMrk(sstart); for (cnt=WHeight()-PrefLine()-2; cnt>0; --cnt) RNLSrch(); ToBegLine(); ScrnRange()rd(); ToSentEnd(FORWARD); } FWord() /* Move foward a word of text */ { int IsToken(); MoveTo(IsToken,FORWARD); { int IsToken(); MoveTo(IsToken,FORWARD); if (BIsEnd()) return; tmark=BCreMrk(); MovePast(IsToken,FORWARD); tmp=BCite(FORWARD); ToNotWhite(FORWARD); } BWord() /* Move backwards a word of text */ { int IsToken(); MoveTo(IsToke(1); MDelWhite(); BInsert(' '); } } BPntToMrk(tmark); BKillMrk(tmark); BKillMrk(tmp); } MReplace() ; } MCopyRgn() /* copy region to kill buffer */ { CopyToMrk(mark,BIsBefore(mark)); } MBPara() /* move backward) > fillwidth) { ToWhite(BACKWARD); ToNotWhite(BACKWARD); } MDelWhite(); tmp = !BIsAtMrk(tmark); /* does traioever is claimed or implied. The physical medium upon which the software is supplied is guaranteed for one year against any Srch() && !IsParaEnd()) TKbChk(); ToNotWhite(BACKWARD); } MRDelWord() /* delete the previous word */ { tmark=BCreMrk/* COMM3.C This is part three of the mince command set The seller of this software hereby disclaim any and all guarantees an one paragraph */ { ToNotWhite(BACKWARD); while (RNLSrch()) { BMove(1); if (IsParaEnd()) break; BMove(-1); TKbCling spaces */ BInsert(NL); SIndent(indentcol); if (tmp) { BPntToMrk(tmark); BInsert(' '); } BKillMrk(tmphysical defect. If it should fail, return it to the seller, and a new physical medium with a copy of the purchased software (); BWord(); KillToMrk(tmark,BACKWARD); BKillMrk(tmark); } MNotImpl() /* Command not implemented */ { Error("Unkd warranties, both express and implied. No liability of any form shall be assumed by the seller, nor shall direct, consequenthk(); } ToNotWhite(FORWARD); } MDelWhite() /* delete spaces and tabs around point */ { while (!BIsEnd() && IsWhitark); } } /* END OF COMM2.C - Mince command routines */  BMove(-1); if (IsWhite()) BDelete(1); else { BMove(shall be sent. The seller reserve the right to make changes, additions, and improvements to the software at any time; no guanown command"); arg=0; } /* Fill mode commands */ MFillChk() /* check to see if we are beyond fillwidth and ial, or other damages be assumed by the seller. Any user of this software uses it at his or her own risk. Due to the ill-defe()) { BDelete(1); TKbChk(); } while (!BIsStart()) { BMove(-1); if (IsWhite()) BDelete(1); else { BMove(rantee is made that future versions of the software will be compatible with any other version. The parts of this disclaimerdo something about it */ { if (BGetCol() < fillwidth) { BInsert(' '); } else { tmark=BCreMrk(); while (BGetCol(ined nature of "fitness for purpose" or similar types of guarantees for this type of product, no fitness for any purpose whats1); break; } TKbChk(); } } MFPara() /* move forward one paragraph */ { ToNotWhite(FORWARD); while (NL are severable and fault found in any one part does not invalidate any other parts. Copyright (c) 1981 by Mark of the Unico| strcmp(tfname,buffs[cnt].fname)); --cnt); TKbChk(); if (cnt<0) { cnt=CFindBuff(tbname); if (cnt>=0) { if (!Ge; for (cnt=BUFFSMAX-1; cnt>=0; --cnt) if (buffs[cnt].bbuff) tmp |= BModp(buffs[cnt].bbuff); if (tmp && !Ask("Abandon Modir Modified Buffer? ")) { ClrEcho(); return; } if (!GetArg("File To Read : ",CR,buffs[cbuff].fname,FILMAX)) rettmp)); TPrntStr(buffs[cnt].bname); TSetPoint(tmp,9); if (BModp(buffs[cnt].bbuff)) TPrntChar('*'); else TPrntChar(' 'wDsp(); /* force redisplay */ } MDelMode() /* remove a mode */ { arg=0; if (!(tmp=GetModeId("Delete Mode : "))rn Created for version two 8/27/80 JTL Updated to version three 1/7/81 JTL This file contains the Control-X commandtArg("Buffer Exists! Buffer to Use : ", CR,tbname,BUFNAMMAX)) return; LowCase(tbname); cnt=CFindBuff(tbname); fied Buffer(s)? ")) return; abort=TRUE; } MFindFile() /* Find a file */ { char tfname[FILMAX], tbname[BUFNAMMAX]; urn; #ifdef CPM UpCase(buffs[cbuff].fname); #endif if (!BReadFile(buffs[cbuff].fname)) Echo("New File"); else ClrEcho();); TPrntChar(' '); #ifdef CPM itot(BLength(buffs[cnt].bbuff)); #else ltot(BLength(buffs[cnt].bbuff)); #endif TSet) return; for (cnt=MAXMODES-1; cnt>=0; --cnt) if (tmp==buffs[cbuff].bmodes[cnt]) { while (cnt>0 && buffs[cbuff].bmodes[ execution routines for the mince editor. There are also a small number of subordinate routines. */ #include "mince.gbl" / ClrEcho(); } if (cnt<0) if ((cnt=CMakeBuff(tbname,tfname))<0) return; *(buffs[cnt].bmodes)='\0'; strcpy(buffs[c arg=0; *tfname='\0'; do if (!GetArg("File to Find : ",CR,tfname,FILMAX)) return; while (*tfname=='\0'); strip(tbn ModeLine(); } MFileSave() /* write the buffer to the default file */ { arg=0; Echo("Writing..."); if (!BWriteFiPoint(tmp,18); TPrntStr(buffs[cnt].fname); TKbChk(); } TSetPoint(++tmp,0); TCLEOL(); BSetMod(BScrnMrk(tmp)); TFcnt]) { buffs[cbuff].bmodes[cnt]=buffs[cbuff].bmodes[cnt-1]; --cnt; } buffs[cbuff].bmodes[cnt]='\0'; SetM* Only when seperate files */ MLstBuffs() /* print a list of the buffers */ { tmp= -1; tlrow = -1; /* forget any savnt].fname,tfname); BSwitchTo(buffs[cnt].bbuff); if (!BReadFile(tfname)) Echo("New File"); } CSwitchTo(cnt); ScrnRaname,tfname); #ifdef CPM UpCase(tfname); #endif LowCase(tbname); for (cnt=BUFFSMAX-1; cnt>=0 && (buffs[cnt].bbuff==NULL |le(buffs[cbuff].fname)) Error("Can't open file"); else Echo ("File Written"); } MNxtOthrWind() /* scroll the other windorce(); KbWait(); if (tmp>=divide) ModeLine(); } MExit() /* exit this level of the editor */ { arg=0; tmp=FALSEodes(); } } MFileRead() /* read a file into the buffer */ { arg=0; if (BModp(buffs[cbuff].bbuff) && !Ask("Clobbeed row */ for (cnt=BUFFSMAX-1; cnt>=0; --cnt) if (buffs[cnt].bbuff) { TSetPoint(++tmp,0); TCLEOL(); BSetMod(BScrnMrk(ge(); } MSetTabs() /* Set the tab increment to arg */ { if (argp) tabincr=arg; else tabincr=BGetCol(); arg=0; Neow down */ { if (divide>=TMaxRow()-2) return; MSwpWind(); while (arg-- > 0) MNextPage(); MSwpWind(); } MFileWrite((); } MOneWind() /* switch to one window mode */ { if (divide>=TMaxRow()-2) return; topp=TRUE; BSetMod(BScrnMrk(di MPrintPos() /* print the current position */ { #ifndef CPM long tmp; #endif BSwapPnt(mark); tmp=BLocation(); B return; } if (cnt==cbuff) MSwitchTo(); if (cnt==cbuff) { Error("Can't delete current"); return; } if (BModp(dentcol=arg; else indentcol=BGetCol(); Echo("Indent Column is "); itot(indentcol); arg=0; } #ifdef UNIX MUnix() ; if (cnt<0 && (!Ask("Create new buffer?") || (cnt=CMakeBuff(namearg,"DELETE.ME"))<0)) return; CSwitchTo(cnt); ScrnRang) /* write the buffer to a file */ { arg=0; if (!GetArg("File To Write : ",CR,buffs[cbuff].fname,FILMAX)) return; #ivide)); divide=TMaxRow()-2; BKillMrk(altstart); BKillMrk(altpnt); sendp=FALSE; } MTwoWind() /* Switch to two windSwapPnt(mark); Echo("Point "); #ifdef CPM itot(BLocation()); #else ltot(BLocation()); #endif TPrntStr(" length "); buffs[cnt].bbuff) && !Ask("Delete Modified Buffer?")) return; if (divide: ",CR,cmnd_line,80)) return; TSetPoint(TMaxRow()-1,0); TCLEOL(); TForce(); TFini(); system(cmnd_line); while is "); itot(fillwidth); arg=0; } MKillBuff() /* delete a buffer */ { int cnt; arg=0; if (!GetArg("Delete Buf*/ { BSwapPnt(mark); arg=0; } MPrvOthrWind() /* scroll the other window up */ { if (divide>=TMaxRow()-2) return; altstart=BCreMrk(); BSwapPnt(sstart); altbuff=cbuff; ModeLine(); } MSwitchTo() /* switch buffers */ { int cnt itot(BGetCol()); TPrntStr(" mark "); #ifdef CPM itot(tmp); #else ltot(tmp); #endif TForce(); KbWait(); ClrEcho*/ { arg=0; if (!(tmp=GetModeId("Mode Name : "))) return; for (cnt=MAXMODES-1; cnt>=0; --cnt) { if (!buffs[cbuff].(wait(&status) != -1); printf("[Hit to return to Mince]"); while (getchar()!='\n'); TInit(); NewDsp(); } #endif fer : ",CR,namearg,BUFNAMMAX)) return; LowCase(namearg); if ((cnt=CFindBuff(namearg))<0) { Error("Does not exist"); MSwpWind(); while (arg-- > 0) MPrevPage(); MSwpWind(); } MSetIndent() /* set the indent column */ { if (argp) in; arg=0; if (!GetArg("Switch to Buffer : ",CR,namearg,BUFNAMMAX)) return; LowCase(namearg); cnt=CFindBuff(namearg)bmodes[cnt]) buffs[cbuff].bmodes[cnt]=tmp; if (tmp==buffs[cbuff].bmodes[cnt]) { SetModes(); return; } } ErroNEW_PAGpFREE_PA1PAGE_SPtmark); } /* END OF COMM3.C - Mince command routines */ ndow we are in */ { int cnt; if (divide>=TMaxRow()-2) retu*s#r**s#r͐~#fo͐~#fo ͐"!")Invalid Buffer),0;k|ERROFREE_PAq/* set new point */ BKillMrk(tmp); topp = !topp; /* switch top for bottom */ } MGrowWind() /* grow the current wind-6*y+"yÑ!"#M"*! s#rz*##"#*6*6*##* s#r**s#r* "ür("No More Mode Room"); } MSwpWind() /* Switch which window we are in */ { int cnt; if (divide>=TMaxRow()-2) retu !9DM͐*)͐|3!d͐#~#fo|X͐#~#fo͐3͐6Del cur buff'*.?Qow */ { if (divide>=TMaxRow()-2) return; BSetMod(BScrnMrk(divide)); divide += topp? arg : -arg; if (divide>TMaxRow()-6)M"%*%w#w*"'*'##w#w  ;XfNEW_PAG!9DM`i6#6͐|B͐ kn}rn; tmp=altstart; /* switch alt and cur screen start */ altstart=sstart; sstart=tmp; tmp=altpnt; /* switch alt and cVTWIDTMAKE_OFTKBCHMAKE_CUBMOV}!9DM͐+|**5t*)|V*)*n&*)")*# divide=TMaxRow()-6; if (divide<3) divide=3; ModeLine(); arg=0; } /* page mode commands */ MTrimWhite() { tmark=B`i^#Vr+s͐|Q!ü͐ k! s#r!!͐"|ˆ!ü͐6͐6͐*s#r͐wur point */ altpnt=BCreMrk(); cnt=cbuff; /* switch buffers */ if (altbuff!=cbuff) CSwitchTo(altbuff); altbuff=cnt; syP PUT;!Copyright (c) 1981 by Mark of the Unicorn AINITKBCHAALLOE !9DM͐"+!COPYRIGBINIOBCREATBSWITCHԨBDELBUFoBMOVBDELTOMBDELETŮBINSER BCOPYRG BFLUS;MAKE_CUINTO_ME]GET_MEM"*҃*#"*€* "t*+"Ó!")*͐`is#r͐|͐*͐t͐**#BCreMrk(); BToStart(); while (!BIsEnd()) { ToEndLine(); MDelWhite(); BMove(1); } BPntToMrk(tmark); BKillMrk(#w͐ü!9 4@IOuERROMAKE_CUMAKE_OF !9DM͐|+͐n}5!*|]*endp=FALSE; /* fix up sstart, psstart, and send */ BPntToMrk(sstart); BMove(-1); BMrkToPnt(psstart); BPntToMrk(tmp); !"!"!"y*y|Z*y k6*y+"y5!"y*y|*ykw#w*y+"y`*~+"y*y|*y##~#fo**t ͐|9**#~#fo !t*##~#fo *b`i~#fo*s#r*~#fo 3!6!|W*! s#rc͐K͐͐҂͐! s#r͐*͐ *͐"*+! ns*#"*# *)|*)! n&*) ")*6>2"! ,39>^gzERROBISAFTEBSWA*~#fo##*##~#fos#r*w#w*##*%s#r*%*s#r*"%%uGET_MEMTGETROTGETCODSKWARSEERE"**###~#fo³͐! s#r! ~#fo͐s#r*6>2"*|W*~#fo|*##~#fo|W*~#fo"! w#w*| `is#r ! s#r !*n&?*~*+#|!*~#fo*+#|!͐͐*!͐|t͐!9"03;Mfx+37W_iqBISAFTEBSWAPPNBISBEFOBDELET͐"?"F*F!*F~#fo**F~#fo**F~#fo͐s#r*F"Fú*͐!PPNBCREMRBISBEFOGETGATKBCHBSWITCHPAGE_SPMOVMEMAKE_OFVSETMOBMOVBPNTTOMBKILLMR0AERRODSKUNWA:!9DM͐n}4!"*6*͐ns*6* ͐0*##~#fo"*~#fo! s#r͐* ** !"ì*"*! s#r͐*ڕ*~#fo|ʕ*~#fo"!6!9Swap Write Error7ERcfvyINTO_ME{!9DM*͐*|o*BDELTOM!9DM͐|1͐͐ |ʉ*͐~#foo͐~#fo* É**!$>2"*6͐͐'Å͐*͐-͐|o͐ ! 9Can't copy to self)EHLPXfnr!9DM͐*R!xo͐! s#rzq͐ ! s#r*`is#r͐|K*͐~#fos#r͐~#fo|`is#r ! s#r !͐n&?*~*+#|!*~#fo*+#|!*͐ w#w͐͐**͐͐|͐!!9-03Rm1=JUu*s#r***s#r*n& kM*"s͐͐"*n& kM"*~#fo"*n}2"* ͐  &.7=Pim}GETGATKBCHBDELUPFREE_PABDELUPMAKE_CUMAKE_OFBDELETVSETMO+1:@U]adt!)<EIQZdlTKBCHTGETROTGETCODSKWARSEEWRITERRODSKUNWA.͐~#fo*! s#r**! s#r>2"* ! s#r͐*! s#r͐|c**!͐͐6͐*!M! ͉s!9Swap Read Error/25TKBCHBFLUSERROHPAGE_SPGETGAMAKE_OFTWIDTTKBCHBINSUVSETMO!9DM** =!|=*#"~#fo"**~#fo"**" **%*##~#fo|*~#fo"'.*##~#fo*~#fos#r!9DM͐|2͐`is#r*͐*f**`is#r͐|u`iw#w* ͐" *͐!9DM*'"*~#fo|e*n}T*n}e*~#fo")*~#fo|{* ~#fo~#fo| !9DM*##! s#r*'`is#r! ^#Vr+s!v͐n}a͐n}v͐~#fo`is#r0͐*6>2"*͐"*" ͐"**͐s#rs#r ?"F*F!I*F~#fo*<*F#fos#r͐##~#fo|y͐##~#fo͐~#fos#rÌ͐#͐~#fos#r͐5͐n}6͐n& kM"*n&BCSMATCTKBCHm M!")*|@*##~#fo3**+"* *W*+" f!  s! "*|¢ "*~#fo *6*##~#fo|N*##~#fo*~#fos#r\*~#fo"'*~#fo|ʋ*ÃO$+q+p+qy͏ , $  ͌ 9!z6 # L!zw͌j# X:z 0 ͘*'`is#r͐|͐n}ʸ͐n}͐~#fo`is#rÒ͐|!5 !,͐n}%͐ ~#~#fo͐<*F*s#r*F~#fo͐s#r*F"F*͐r**͐! .9-n*n&|g}o}/o|/g|g}os͐n& kM6͐n& kM6z͐n&"/5=R\_hk*~A[  SSISAFTTKBCHf "X"Z"\*X!k"^##^#V*=~#fo##*##~#fos#r×*##~#fo"%! "*͐ s#r*##͐s#r͐ |͐ ##*s#r͐###*s#r͐=N#Fy}80*z{¯#z+++ ¥ z#½# · 9!`͠ y9!rͷfo6͐ ~#fo͐ns͐,!9Fatal Paging FaultBQ_tw*ERROAALLOGET_MEGV]o-n͐n&|g}o}/o|/g|g}os͐6\w4NEW_PAGINTO_MEMOVMETKBCHMAKE_CUMAKE_OFy*Z!k"`*^"bDM*``iw^#V*! DMV*^DM!"d*``iڳ##^#V*ª|ʳ"d! DMÂ*d|S|͐*s#r͐#*s#r**s#rs#r*6*͐s͐4*S!9Swap file full! yPAGECHNEXTCHABCSMATCBMOVTKBCHD M!")' :! !  #(+2;?EMAFRETKBCHl!9DM`iw#w͐*~Q͐-n}Q`i^#Vr+s ͐*~u!\BCSEARCPAGECH˂NEXTCHABCRSEARBCSMATCȔSUBSEԴSSISAFTŅBDELUPBDELUPBINSUЮASMDSbxʇ {z~#o}o҃!9DM*~#fo**"|@!**n& kM"͐*~#fo*͐ >wS`i^#V*! ^#V**``i! DM! "b*^!>w*\|S*bDM*^`iS^#V*S! ^4COehls+LjQAFRE!9DM͐~#fo|8͐~#fo##͐##~#fos#rO͐###͐##~BMAKE_CUMAKE_OF/ **,*~#fo!!)*#"*#"** "MAKE_CUMAKE_OF!S`i~#fo)))s#r͐-n͐|g}o|g}o|`i^#Vr+sÄ͐-n͐|g}o|g}oi.g> >کÝ!p+q*DM͡:͆ ͆:_2:`!!:*& N͆!4!6J#V*S >! DM, +9>LORW`lux(4D#ͧ;ڧ zç~E#;ڧ}“"e:L*iͯ*e}¸|¸*e; ZQ{z| }TKBCHBKILLMR!9DM*)|+*)z`is#r!|I! !")͐ |k! O͐ʔ*~ʔ :Y}o:~*~*$~w#"$~ iV[$'*/:AKORY\_hkw!++""P>28!"9:]yP PUT;!Copyright (c) 1981 by Mark of the Unicorn d!9DM`iw#w*#~#fo"**N`i~#foQT# N#F*##~#foPY !M "I"K!?DM!PYG^#V*>*I`is#r*K! s#r! DMCOPYRIGBLOCATIOBTOSTARԾBTOENBSHOVEIDBISSTARԉBISENijBGETCOBMAKECO̳BLENGTUBCSEARCBCRSEARBCREMR˃BSCRN*)z!9#),9?FU[bfiqxBCRSEARBMOVBUFBISENTKBCHh!9DM!|/! !w 1_ĤU># !L6-75A_!N^#V- g  g R*~#fos#r*~#fo"͐*[!9%LYMAKE_CUMAKE_OF' *#~#fo!!") (+4E "z"|"~!?DM!PYx^#V*o! ^#V*o*~*[! s#ro*z`is#r*|! MR;BTSTMRZBSETMOēBMRKTOPάBPNTTOMBSWAPPNԟ BISATMR BISBEFOQ BISAFTE BKILLMR BREADFI BWRITEFɀBMODKBUFcDS!")*)͐f f |f!5 %,BENQV]ad|!9DM`iw#w͐#~#fo"*|l**ů2[\ͤ>2N!""͖ Q¾:L͕ =" ͖ Q" ="=> 2 QMAKE_CUMAKE_OF) *###~#fo*!")MAKE_CUMAKE_OF* *###~#fo*#!")s#r! DM  !.>AOY\evA!?DMPY!?^#V*6! ^#V*6! s#r! DM,=TKBCKWARsDSKUNWAGETGA5VSETMOSUBSEcMAKE_OFƭE`i~#fo*s#r_`i~#fo*~#fos#r*~#fo"͐s!9 .CjqBISENBUFTOLOWEMAKE_OFMAKE_CU=&="&! BL<"e=L=W*e}o"gU_ *e"iͧ>::Mʓ^#V#*|͝**#~#fo͝ +**ͯ'**###~#fo͝BCREMRBCRSEARBMOVBISBEFOHATPRTCHATWIDTPAGECHNEXTCHA !}"$~*a}T ʔ*~*$~T#"$~ :Y}2Y},& TKBCHBMOV!9DM|Ž! n&ʎ ! n&ʎ*# **ڈ*~#fo|fo|V*~#fo*6?"F*F!ڸ*F~#fo|ʫ*F##~#fo*«*F*s#r*Fw#w*F6*F"F]!8!͐~#fo*d*͐~#foͩ*"*|ʒ*͐~#foʒ*~#fo"j*|ͣMark in w ~#fog!͐ ͐͐ ! s#r*#ëÉ! ^#Vr+s6͐͐ ͐͐ |g}o|ʽ)!9'!9DM͐67!9DM͐##*s#r͐*s#r͐*s#rERROBSWITCHMAKE_CUMAKRead error or no EOF43@OTiu +Tcfo#&/2AILW[^gjnw{ʈ*~#fo!  !")|¬!!ñ!!&)8;?OWfr}BISSTARBMOVTKBCHBUF͐ ! s#rz ! *"*" !"*s{2"͐!ó`iw#w!*͐]*!?rong buff! .15IpERRO!9DM͐~#fo|0͐##~#fo*8!͐~#fo*d*͐~#!!! s#r͐͐͐ ͐!7*6͐6͐6͐*F*F!!.! 9E_OF!9DM͐~#fo|.!x͐##~#fo*R͐##~#fo͐~#fo ͐~#fo !")CREAGET_MEMBCREMRMAKE_CUMAKE_OFBUFWRITERROCLOSBPNTTOMBKILLMRC$!9DM͐TOLOWEb!9DM|'!! ! n&[ ! n&!  ,03BEI"*" !"! >2"͐|ʞ ž*6*##~#fo^#Vr+s*##~#fo^#Vr+s`iw#w**%foͩ*"*|ʔ*͐~#foʔ*##~#fo"j*|ͣMark in wrong buff! .15Ip!9DM͐wWrite error2?EHmEVmqt%,!9DM͐n& *n&TKBCHTDISSTInvalid mark"%)AO\mBMRKTOPBPNTTOMW !9DM*! s#r͐ ~#fo`is#r͐ ~#fo! s#r͐ `i`is#rzG!.! s#r͐6͐~#fo! s#r "F͐ ! s#r*#~#fo"*|v* !*~#fo"**YERRO!9DM?`is#r͐~#fo|6`i^#V{_zWr+s͐!U!`is#r͐##*s#r͐*s#r͐% *# **`i6#6 *+"*+"* 6*+ *# ä4]!*#wMAKE_CUFREE_PAOPEMAKE_OFCLOSREABUFGETGANEW_PAGERRO!!9DM*#~#fo*~#6 !**~&*~&+Swapping... #TKBCHTSETPOITCLEOTFORCG!9DM*~&!9DK9!9DM͐~#fo*͝5͐~#fo*͝ERRO!9DM͐~#fo|0͐##~#fo*s! s! n}! ^#Vr+s6 ͐! ~#fo!͐ ͐͐ ! s#r! 6 ! ^#Vr+s! ns͐! *s#r͐É!9No more marks!4CFJ!9DM͐k2!9DM͐n`is#6͐6*|N]*~#foq!͐*" *"*#~#fo! !")*6!ó!9*~&+ ͐͐ ,1>CMOVME** **g* **" **re of "fitness for purpose" or similar types of guarantees for this type of product, no fitness for any purpose whatsoever is endif trow=TGetRow(); tcol=TGetCol(); Echo("Arg: "); itot(targ); TCLEOL(); TSetPoint(trow,tcol); TForce(); retur#fo**F6*F~#fo*m*F~#fo*m*F͐m*F"F)*F"F͐kږrable and fault found in any one part does not invalidate any other parts. Copyright (c) 1981 by Mark of the Unicorn Crea* **"* "Ý** ** *** "*" #Se}SUBSETMAXROX claimed or implied. The physical medium upon which the software is supplied is guaranteed for one year against any physical /* SUPPORT.C - supporting functions for Mince The seller of this software hereby disclaim any and all guarantees and warrantn(TRUE); } Ask(mesg) /* Ask a yes/no question in the echo line */ char *mesg; /* Space or y or Y mean yes, anything e*F6͐ |*F͐k*F~#fo**F~#fo**F"F6ß!9.1ewted for version two 9/16/80 JTL Updated to version three 1/7/80 JTL This file contains several useful subroutines that!9DM*y0͐*y!*y++V͐++*y#+5>FQTKBCHBISAFTE !defect. If it should fail, return it to the seller, and a new physical medium with a copy of the purchased software shall be ies, both express and implied. No liability of any form shall be assumed by the seller, nor shall direct, consequential, or olse is no */ { char tchar; int yes; Echo(mesg); while (TRUE) { if (yes = ((KbWait(),tchar=TGetKb())==' ' || ToUppe'9O^k>!9DM͐"*͐"*<** *"% can be generally used. */ #include "mince.gbl" ArgEcho(targ) /* internal routine to display current argument */ int t9DM͐k##~#fo*3͐k`is#r͐k"F*F͐چ*F~#fo*ʆ*F"FX*Fsent. The seller reserve the right to make changes, additions, and improvements to the software at any time; no guarantee isther damages be assumed by the seller. Any user of this software uses it at his or her own risk. Due to the ill-defined natur(tchar)=='Y')) break; if (tchar == BELL || tchar == DEL || tchar == BS || ToUpper(tchar)=='N') break; TBell(); arg; { int trow, tcol; #ifdef SUSER if (targ==4) for (cnt=delaycnt*mhz; cnt>0; --cnt) if (TKbRdy()) return(FALSE); #͐)͐k"F*F͐*F##~#fo**F|*F"Fé*F͐k&*F"F##~ made that future versions of the software will be compatible with any other version. The parts of this disclaimer are seve } ClrEcho(); return (yes); } BlockMove(from,to) /* move a block of characters between Point and From to befoalse */ { int trow, tcol; #ifdef SUSER for (cnt=delaycnt*mhz; cnt; --cnt) if (TKbRdy()) return (FALSE); #endif trow=TCreMrk(); BToStart(); BDelToMrk(ltmark); BKillMrk(ltmark); } if (forwdp) BToEnd(); else BToStart(); BSwitchTo(d); TPrntStr("' with '"); NLPrnt(new); TPrntChar('\''); } IncrDsp(); KbWait(); tchar=TGetKb(); rcmp(tmname,"save")) return('s'); #endif if (!strcmp(tmname,"fill")) return('f'); if (!strcmp(tmname,"page")) return('p'); replace and replace string */ int query; { char tchar; int exit; char old[STRMAX], new[STRMAX]; arg=0; *old = *nre To. Assume Point is before From */ int from, to; { int tmp; while (BIsBefore(from)) { tmp=Buff(); BSwapPnt(toGetRow(); tcol=TGetCol(); Echo(mesg); TSetPoint(trow,tcol); TForce(); return(TRUE); } DelCmnd(lfunct) /* tell ifbuffs[cbuff].bbuff); BCopyRgn(tmark,del_buff); } Debug(message,value) /* useful for debugging commands */ char *message switch (tchar) { case BELL: ClrEcho(); BKillMrk(tmark); return; case ' ': case ',': /* comma's return(FALSE); } ClrEcho() /* Clear the echo line */ { int trow, tcol; trow=TGetRow(); tcol=TGetCol(); TSetew = '\0'; do if (!GetArg(query ? "Query Replace : " : "Replace : ",ESC, old,STRMAX)) return; while (*old=='\); BInsert(tmp); BSwapPnt(to); BDelete(1); } } change(old,new) /* change old string into new */ char *old, * previous command is a delete command */ int (*lfunct)(); { int MDelLin(), MDelWord(), MRDelWord(), MMakeDel(); int MDelR; int value; { char tchar; Echo(message); itot(value); IncrDsp(); return((tchar=TGetKb())==DEL || tchar==BS); }turn comes later... */ case 'Y': case 'y': break; case '!': query=FALSE; break; case '.': exPoint(TMaxRow()-1,0); TCLEOL(); TSetPoint(trow,tcol); TForce(); } CopyToMrk(tmark,forwdp) /* copy point to mark to de0'); if (!GetArg("with : ",ESC,new,STRMAX)) return; tmark=BCreMrk(); if (query) tchar=','; else tchar=' '; exit=Fnew; { BMove(-strlen(old)); BDelete(strlen(old)); while (*new) BInsert(*new++); } CheckMode(tmname) /* see if theregn(), MCopyRgn(), MDelELin(), MDelSent(); return(lfunct==MDelLin || lfunct==MDelWord || lfunct==MRDelWord || lfunct==MMak DelayPrompt(mesg) /* echo mesg if no char is typed within interval */ char *mesg; /* return true if mesg printed, else fit=TRUE; continue; default: continue; } } change(old,new); if (tchar==',') { IncrDsp(); if lete buffer */ int tmark, forwdp; { int ltmark; BSwitchTo(del_buff); if (!DelCmnd(lfunct)) { BToEnd(); ltmark=BALSE; while (!exit && StrSrch(old,FORWARD)) { if (query) { if (tchar==',') { Echo("Replacing '"); NLPrnt(ol is a mode of this name */ char *tmname; { LowCase(tmname); #ifdef LARGE if (!strcmp(tmname,"c")) return('c'); if (!steDel || lfunct==MDelRgn || lfunct==MDelELin || lfunct==MDelSent || lfunct==MCopyRgn); } DoReplace(query) /* do query(!Ask("Confirm Replace?")) change(new,old); } } ClrEcho(); BPntToMrk(tmark); BKillMrk(tmark); } Echo(mesg) /eak; } TForce(); } if (nstr!=stemp) { *nstr='\0'; strcpy(str,stemp); } else NLPrnt(str); TSetPoint(TMaxemp; while ((KbWait(),inpt=TGetKb())!=term) { if (inpt==BELL) { ClrEcho(); return(FALSE); } if (nstr-stemp>=ctuation */ { return(IsNL() || Buff()=='.' || Buff()=='?' || Buff()=='!'); } IsParaEnd() /* check for end of paragratPoint(trow,tcol); TForce(); } ForceCol(col,forwardp) /* force the column to be col */ int col, forwardp; { BMakeCo /* locate character in string */ char *tstr, tchar; { int cntr; for (cntr=0; *tstr; ++cntr) if (*tstr++==tchar) return* Say something useful in the echo line */ char *mesg; { TSetPoint(TMaxRow()-1,0); TCLEOL(); /* clear whatever was thRow()-1,0); TForce(); return(TRUE); } GetModeId(msg) /* read in and check a mode id */ char *msg; { char *tmnamelen-1 && inpt!=DEL && inpt!=BS) { nstr=RubOut(stemp,nstr,tcol); TBell(); } switch (inpt) { case CR: TPrnph*/ { return(BIsEnd() || Buff()==TAB || IsNL() || Buff()=='@' || Buff()=='.'); } IsSentEnd() /* check for end of sl(col); if (col<=0) return; if (BGetCol()>col && (BMove(-1), Buff()!=TAB)) BMove(1); SIndent(col-BGetCol()); if (BGetCol(cntr); return(-1); } IsClose() /* do we have a closing character */ { return(Buff()==')' || Buff()==']' || Buff(ere */ TPrntStr(mesg); /* display the message */ TForce(); } Error(mesg) /* Display an error message */ char *mes[STRMAX]; int id; *tmname='\0'; if (!GetArg(msg,CR,tmname,STRMAX)) return(FALSE); if (id=CheckMode(tmname)) return(id)tStr(""); *nstr++=NL; break; case BS: case DEL: if (nstr>stemp) nstr=RubOut(stemp,nstr,tcol); brentence. you begin at, for example, a '.'. it skips over as many of ')}]"' or "'" as it finds, and tells you whether y()>col && !forwardp) BMove(-1); } GetArg(mesg,term,str,len) /* input a string argument */ char *mesg, term, *str; int l)=='}' || Buff()=='"' || Buff()=='\''); } IsGray() /* tell if current char is white space */ { return(IsWhite() ||g; { int trow, tcol; trow=TGetRow(); tcol=TGetCol(); TDisStr(TMaxRow()-1,TMaxCol()-25,mesg); /* Display the message *; Error("Unknown Mode"); return(FALSE); } SIndent(arg) /* put in the right number of spaces */ int arg; { #ifndefeak; case '\21': /* ^Q */ KbWait(); inpt=TGetKb(); default: TPrntChar(inpt); *nstr++=inpt; brou wind up at a whitespace character */ { int IsClose(); BMove(1); MovePast(IsClose,FORWARD); return(BIsEnd() || en; { char stemp[80], inpt, *nstr, tcol; TDisStr(TMaxRow()-1,0,mesg); TCLEOL(); tcol=TGetCol(); TForce(); nstr=st Buff()==NL); } IsNL() /* check for Newline */ { return(Buff()==NL); } IsNLPunct() /* check for Newline or pun/ TBell(); /* Ring the terminal bell */ TForce(); KbWait(); TSetPoint(TMaxRow()-1,TMaxCol()-25); TCLEOL(); TSe CPM register int cnt; #endif for (cnt=arg; cnt>0; --cnt) { BInsert(' '); TKbChk(); } } index(tstr,tchar) IsGray()); } IsToken() /* tell if current char is part of a token */ { return(isalpha(Buff()) || isdigit(Buff())); 1); while (!(forwdp?BIsEnd():BIsStart()) && (*pred)()) { BMove(forwdp?1:-1); TKbChk(); } if (!forwdp && !BIsStart() loc=BLocation(); len=BLength(buffs[cbuff].bbuff); #ifdef CPM if (loc<655) itot((loc*100)/len); else if (loc<6550) itot((strip(to,from) /* get main part of file name */ char *to, *from; { int left, right; char *tptr; #ifdef UNIX left=0 int tmark, forwdp; { CopyToMrk(tmark,forwdp); BDelToMrk(tmark); } LowCase(str) /* convert a string to all lower caon */ { return(BCSearch(NL)); } Rebind(from,to) /* change all references to From to To */ int (*from)(), (*to)(); { } IsWhite() /* tell if current char is limited white space */ { return(Buff()==' ' || Buff()==TAB); } itot(n) ) BMove(1); } MoveTo(pred,forwdp) /* go forward or back to a thingy */ int (*pred)(), forwdp; { if (!forwdp) BMove(-1loc*10)/(len/10+1)); else itot(loc/(len/100+1)); #else if (len==0) len=1; itot((int)((loc*100)/len)); #endif TPrntStr(; while (index(from+left,'/')>=0) left += index(from+left,'/')+1; right=index(from+left,'.'); if (right<0) right=strlen(frse */ char *str; { while (*str=ToLower(*str)) ++str; } #ifndef CPM ltot(n) /* print a number on the terminal */ for (cnt=383; cnt>=0; --cnt) { if (functs[cnt]==from) functs[cnt]=to; TKbChk(); } } RNLSrch() /* Reverse sear /* print a number on the terminal */ unsigned n; { if (n>9) itot(n/10); TPrntChar(n%10+'0'); } KbWait() /* wait ); while (!(forwdp?BIsEnd():BIsStart()) && !(*pred)()) { BMove(forwdp?1:-1); TKbChk(); } if (!forwdp && !BIsStart()"%- "); if (TKbRdy()) return; TPrntChar(BModp(buffs[cbuff].bbuff) ? '*' : ' '); TPrntChar(DelCmnd(lfunct) ? '+' : ' '); om); else right += left; #else left=index(from,':')+1; right=index(from,'.'); if (right<0) right=strlen(from); TKbChklong n; { if (n>9) ltot(n/10); TPrntChar((char)(n%10)+'0'); } #endif ModeFlags() /* Display the mode flags */ { #ch for the next new line */ { return(BCRSearch(NL)); } RubOut(ostr,str,tcol) /* delete a character for getarg */ char for a character to be typed */ { #ifdef SUSER unsigned cntr; for (cntr=15*delaycnt*mhz; cntr>0; --cntr) if (TKbRdy()) re) BMove(1); } NLPrnt(str) /* print a string with ""'s */ char *str; { while (*str) if (*str!=NL) TPrntChar(*sTCLEOL(); } MovePast(pred,forwdp) /* go forward or back past a thingy */ int (*pred)(), forwdp; { if (!forwdp) BMove(-(); if (left>=right) { left=0; right=strlen(from); } #endif if (right-left>8) right=left+8; for (tptr=from+left;ifdef CPM unsigned loc, len; #else long loc, len; #endif if (TKbRdy()) return; TDisStr(TMaxRow()-2,stat_col," -"); *str, *ostr, tcol; { *--str='\0'; TSetPoint(TGetRow(),tcol); NLPrnt(ostr); TCLEOL(); TForce(); return(str); } turn; while (!TKbRdy()) BFlush(); #else TKbWait(); #endif } KillToMrk(tmark,forwdp) /* delete region directioned */ tr++); else { TPrntStr(""); ++str; } TForce(); } NLSrch() /* Search for the next new line combinati tptr=tabincr; cnt-=tabincr) { BInsert(TAB); TKbChk(); } SIndent(cnt); } i.g> >کÝ!p+q*DM͡:͆ ͆:_2:`!!:*& N͆!4!6Jardp) BMove(1); for (cnt=1; !BIsEnd() && str[cnt]; ++cnt) { if (Buff()!=str[cnt] && ToLower(Buff())!=str[cnt]) break; int MNextLin(), MPrevLin(); return(lfunct==MNextLin || lfunct==MPrevLin); } /* END OF SUPPORT.C - supporting routines fo } if (tmp) return; BMove(forwardp ? 1:-1); } } ToWhite(forwardp) /* Move to whitespace */ int forwardp; { ~!c}*W}.w!]}4 W:_}G:Y}EEG> .JlO>~ y. O>^ y@.  +7BGMSZ`hpxTWToNotWhite(forwardp) /* move to non whitespace */ int forwardp; { int IsGray(); MovePast(IsGray,forwardp); } ToSenÃO$+q+p+qy͏ , $  ͌ 9!z6 # L!zw͌j# X:z 0 ͘ BMove(1); TKbChk(); } if (!forwardp || str[cnt]!='\0') BMove((forwardp?1:0)-cnt); TKbChk(); } return (str[cnr Mince */ ) /* move to a sentence end */ int forwardp; { int IsNLPunct(); while (TRUE) { MoveTo(IsNLPunct,forwar int IsGray(); MoveTo(IsGray,forwardp); } ToWord() /* move to the beginning of a word */ { int IsToken(); MovIDT" !o&*Y} ATPUTCH M 0:~* :~2ͭG:~G:~:~2tEnd(forwardp) /* move to a sentence end */ int forwardp; { int IsNLPunct(); while (TRUE) { MoveTo(IsNLPunct,forwar=N#Fy}80*z{¯#z+++ ¥ z#½# · 9!`͠ y9!rͷt]=='\0'); } ToBegLine() /* move to the beginning of the line */ { if (BCRSearch(NL)) BMove(1); } ToEndLine() /yͰ#O!B N#N ¾SP.* |} !9":q!"=terminal.ncols) { pcol=0; Error("Off Screen"); } if (srow==prow && scol=somewhere new as well as fancy things like clear to end of line and clear to end of screen. */ #include "mince.gbl" TInitabincr-(pcol%tabincr); while (tcol) { TPrntChar(' '); --tcol; } break; case NL: pcol=0; if (pn the max # of rows on the terminal */ { return(terminal.nrows); } TMaxCol() /* Return the max # of columns on the teO=!9 Ÿ!6q!2qC J R q!z z=naO $q$,!=pcol) return; put_string(&terminal.cpos1); put_coord(FIRST); put_string(&terminal.cpos2); put_coord(SECOND); put_strit() /* set up the keyboard input queue */ { int trow; QInit(&kbdq,KBBUFMAX); put_string(&terminal.init); for (trowrow=' ' && ichar<='~') { TForce(); TPutChathe active point */ int irow, icol; { prow=irow; pcol=icol; } TGetRow() /* Return the row the terminal is on */ th(colcnt,tchar) /* determine width of tchar */ int colcnt; char tchar; { int wid, delta; if (tchar>=' ' && tchar<='~TDisStr(row,col,string) /* Display a string at row,col */ int row, col; char *string; { TSetPoint(row,col); while (*strtrow=prow; tcol=pcol; while (prow=10) put_num(num/10); TPutChar(num%10+'0'); } put_pad(npads) /* do paddinol; if (terminal.cleow.len) { TForce(); put_string(&terminal.cleow); put_pad(terminal.ncleowpad); } else { ut a command string */ struct str *sdef; { int tlen; char *tptr; tptr=&terminal.strspc[sdef->idx]; for (tlen=sdef->reak; } return(wid); } TCLEOL() /* Clear to end of line */ { int tcol; if (pcol>=clrcol[prow]) return; TFo) : ((inp(inport.statport)&inport.readymask) == inport.polarity)) if (!QFull(&kbdq)) QShove(inport.biosp ? bios(3) : g */ int npads; { int cnt; if (terminal.padp == CHARPAD) while (npads--) TPutChar(terminal.padchar); if (terminal.padd ptr freed*-1[ERROTKBCH !9DM*N`is#r͐~#fo! s#r`i~#fo͐~#fo)s#r͐*Ld͉"J*H"N*H*J)"L*L6#6*N*Js#rACOALESAFINDNE !9DM͐ | ! *N|?!͐͐*Jʏ͐͐*J?!!9Abegin = %u., Aend = %u., Acap = %u. at %u., ͐*LM͐~#fo|X!͐~#fo|`i~#fo͐~#fos#r! ~#fo͐~#fo)s#r"͐?î!p == DELAYPAD) while (npads--) for (cnt=mhz*8; cnt; --cnt); } /* END OF TERM.C - terminal support code */ = outpor~#fo|l!͐~#foڌ͐*Lñ! ~#fo͐~#fos#r-*N͐s#r!9Memory munged.! *N`is#r͐ ###͉! s#r*N~#fo͐Қ*N~#fo͐Ú*N͐—! M*N~#fo!%u. %c ** Last obj ends on Aend + %d. ** -- %u. allocated, %u. free -- ** total = Asize + %u. ** "O\br9Memory munged />KNRVcPRINTAB. !9DM*N*L*H!! s#r`is#r*H! s#r͐* Ubei{ABERROTKBCH !9DM*N*L(*H"N*N`is#r`i~#fo͐~#fo)s#r͐*L s#r*N͐s#r*N`is#r*N͐)"N͐͐*N͐͐s#r͐## !9&,adz}-1LPiJ!9DM͐͐͐##͐͐s#rs#rs#r͐+s#rT!9DM͐~#fo͐L͐~#fo|d!fg!a͐~#fo?͐!͐~#foҷ`i~#fo͐~#fos#r͐~#fo|! f*H`is#r͐*Lڂ͐~#fo|Š!͐~#fo|ø͐*N²`iw#wø 1͐"N!9Memory mungedERROt!9DM͐*H,͐*L4!f! ^#Vr+s͐͐~#fos#r*N|d͐"NBa~#foA͐͐~#fos#rn&N͐^#Vr+sn&"?[!9DM͐##~#fo͐~#foB͐##͐~#foyP PUT5!Copyright (c) 1980 Jason T. Linhart TOPOFMEENDEXc !9DM"H͐~#fo͐~#fos#r! ~#fo͐~#fo)s#rB͐*L5͐*L!͉!͐?͐COPYRIGAINIIAALLOAFREACOALESÚAFINDNEؖALEΛASPACAPRTWRLĬQINI QGRAg QSHOV QEMPT( QFULS C[s$!9DM! ^#Vr+s~#fo+?ABERRO !9DM`iw#w*H! s#r͐*Lʡs#rP͐##^#Vr+s! ns$@&!9DM͐~#fo͐##~#fo͝g!9DM͐##~#fo#͐~#fo͝c͐for AsmDsp define TPutChar ; shadowing C version define ATPutChr ; print-char function for AsmDsp enddir ; *** -- global equates for Mince assembly code }þ0START ADDR = $ END ADDR = $PAST END OF FILE$s*)^Mark of the Uni lhld 1 lxi d, 6 dad d pchl ; bios (3) (returns to TKC7) TKC5 lda inport + 1 ; inport.dataport sta iohack +equ extorg + 0461h clrcol equ extorg + 0463h tline equ extorg + 049Fh lindex equ extorg + 0524h kbdq equ extorg + 0526h te) ... mov b, a lda inport + 4 ; inport.readymask ana b ; ... & inport.readymask) ... mov b, a lda inport + 5##~#fo͐~#fo͝c͐~#fo͐~#fo͝$E************************************************************* ; TKbChk Check for keyboard input and queue it prelude ; ATERM.ASM Hand-coded terminal routines ; ; Copyright 1981 by Mark of the Unicorn Inc. ; Created from code in TERM.C 81.6 1 call iohack ; inp (inport.dataport) mov b, a lda inport + 3 ; inport.datamask ana b ; inp (inport.dataportrminal equ extorg + 057Eh inport equ extorg + 05E7h curbuff equ extorg + 0612h curpage equ extorg + 0614h curchar equ extorg ; inport.polarity cmp b reloc jz, TKC3 ; ... == inport.polarity) ... pop b ret TKC3 lxi h, kbdq push h ; MINCE.LIB Global equates for Mince assembly code ; ; Copyright 1981 by Mark of the Unicorn Inc. ; Created from MINCE.GBLTKbChk, push b lda inport + 0 ; inport.biosp ora a reloc jz, TKC1 ; if (inport.biosp .19 Gyro ; maclib cmac maclib bds maclib mince direct define TKbChk ; shadowing C version d) & inport.datamask TKC7 mov l, a ; character in a mvi h, 0 push h exrel call, QShove ; QShove (..., &kbdq) po + 0616h curplen equ extorg + 0618h curcptr equ extorg + 061Ah cpstart equ extorg + 061Ch cgstart equ extorg + 061Eh cgend exrel call, QFull ; QFull (&kbdq) pop d mov a, h ora l reloc jnz, TKC4 ; if (!QFull (&kbdq)) ... lxi h, kbdq TRUE equ 01h MAXMARK equ 018h NL equ 08Ah extorg equ 07900h ; *** change this line for -e change *** prow equ ex? reloc , TKC2 push h lhld 1 inx h inx h inx h pchl TKC2 ora a reloc jnz, TKC3 ; ... bios (2)efine TPrntCha ; shadowing C version define ATPrtChr ; print-char function for AsmDsp define ATWidth ; width function p d pop d pop b ret TKC4 exrel call, TBell pop b ret postlude TKbChk ; ****************************equ extorg + 0620h savecol equ extorg + 0629h scrnmarks equ extorg + 0801h marks equ extorg + 099Eh ; End of MINCE.LIB push h lda inport + 0 ; inport.biosp ora a reloc jz, TKC5 ; inport.biosp ? ... reloc , TKC7 push h torg + 0457h pcol equ extorg + 0459h scol equ extorg + 045Dh tabincr equ extorg + 045Fh outport equ extorg + 05EDh tlrow : ... pop b ret TKC1 lda inport + 2 ; inport.statport sta iohack + 1 call iohack ; ... ((inp (inport.statport************************************ ; TPrntCha (c) Print a character ; sets up registers, then calls ATPrtChr preludpop b ret postlude ATPrtChr ; **************************************************************** ; ATWidth (charnr b ATPC4 sub b reloc jp, ATPC4 mov b, a ATPC5 mvi a, 20h reloc call, ATPC0 ; ATPrtChr (' ') mvi l, 1 inr b C3 call iohack ; inp (outport.statport) mov b, a lda outport + 4 ; outport.readymask ana b mov b, a lda outpo'~') dcr l ; TForce flag mov c, a exrel cm, TForce exrel call, ATPutChr ; ATPutChr (char) lxi h, pcol inr mutChar, ATPutChr call ma1toh push b mov c, l ; c => c exrel call, ATPutChr pop b ret postlude TPe TPrntCha, ATPrtChr call ma1toh mov a, l mvi l, 0 ; force TForce call exrel jmp, ATPrtChr postlude TP) Fast TWidth (in usual case) ; Takes in A; result in H prelude ATWidth, TWidth cpi 20h reloc jm, ATW1 reloc jnz, ATPC5 pop b ret ATPC3 cpi 80H reloc jm, ATPC6 ; if (char & 0x80) ... mov c, a mvi a, 7Eh reloc rt + 5 ; outport.polarity cmp b reloc jnz, TPC3 ; loop while not ready lda outport + 1 ; outport.dataport sta ioh ; ++pcol mov a, m lxi h, clrcol xchg lhld prow dad d ; &clrcol[prow] cmp m reloc jm, ATPC2 ; if (clutChar ; **************************************************************** ; ATPutChr (char) Output a character for ATrntCha ; **************************************************************** ; ATPrtChr (char) Print a char for AsmDsp ; (char >= ' ' ... cpi 7Fh reloc jp, ATW1 ; ... && char <= '~') lxi h, 1 ; ? 1 ret ATW1 mov l, a mvi h, 0call, ATPC0 ; ATPrtChr ('~') mov a, c ani 7Fh mvi l, 1 reloc call, ATPC0 pop b ret ATPC6 mov c, a mvi a, ack + 4 mov a, c call iohack + 3 ; outp (outport.dataport, c) ret postlude ATPutChr ; ; End of ATERMrcol[prow] <= pcol) ... mov m, a ; clrcol[prow] = pcol ATPC2 lxi h, scol inr m ; ++scol pop b ret ATPC1 cpi PrtChr ; char is in C prelude ATPutChr lda outport + 0 ; outport.biosp ora a reloc jz, TPC1 ; if (outport.; char is in A ; if L <= 0, calls TForce (for talking to rest of world) ; if L > 0, punts TForce prelude ATPrtChr, ATPC0 push b cpi 20h reloc jm, ATPC1 ; if (char >= ' ' ... cpi 7Fh reloc jp, ATPC1 ; && char <= ; **************************************************************** ; TPutChar (c) Output a character prelude TPM"%*%w#w*"'*'##w#w  ;XfNEW_PAG!9DM`i6#6͐|B͐ kn}BDELTOM!9DM͐|1͐͐ |ʉ*͐~#foo͐~#fo* É**VTWIDTMAKE_OFTKBCHMAKE_CUBMOV}!9DM͐+|**5t*)|V*)*n&*)")*#B`i^#Vr+s͐|Q!ü͐ k! s#r!!͐"|ˆ!ü͐6͐6͐*s#r͐wP PUT;!Copyright (c) 1981 by Mark of the Unicorn AINITKBCHAALLOE !9DM͐"+! ͐  &.7=Pim}GETGATKBCHBDELUPFREE_PABDELUPMAKE_CUMAKE_OFBDELETVSETMOCOPYRIGBINIOBCREATBSWITCHԨBDELBUFoBMOVBDELTOMBDELETŮBINSER BCOPYRG BFLUS;MAKE_CUINTO_ME]GET_MEM"*҃*#"*€* "t*+"Ó!")*͐`is#r͐|͐*͐t͐**##w͐ü!9 4@IOuERROMAKE_CUMAKE_OF !9DM͐|+͐n}5!*|]*!"!"!"*|Z* k6*+"5!"*|*kw#w*+"`*+"*|*!9DM͐|2͐`is#r*͐*f**`is#r͐|u`iw#w* ͐" *͐NEW_PAGpFREE_PA1PAGE_SP##~#fo**t ͐|9**#~#fo !t*##~#fo *b`i~#fo*s#r*~#fo *s#r**s#r͐~#fo͐~#fo ͐"!")Invalid Buffer),0;k|ERROFREE_PAq-6*+"Ñ!"#M"*! s#rz*##"#*6*6*##* s#r**s#r* "ü"**###~#fo³͐! s#r! ~#fo͐s#r*6>2"*|W*~#fo|*##~#fo|W*~#fo"! w#w*|!͐|t͐!9"03;Mfx+37W_iqBISAFTEBSWAPPNBISBEFOBDELET !9DM͐*)͐|3!d͐#~#fo|X͐#~#fo͐3͐6Del cur buff'*.?Q0*##~#fo"*~#fo! s#r͐* ** !"ì*"*! s#r͐*ڕ*~#fo|ʕ*~#fo"!6!9Swap Write Error7ERcfvyINTO_ME{!9DM*͐*|o*!$>2"*6͐͐'Å͐*͐-͐|o͐ ! 9Can't copy to self)EHLPXfnrfo6͐ ~#fo͐ns͐,!9Fatal Paging FaultBQ_tw*ERROAALLOGET_M!9DM͐*R!xo͐! s#rzq͐ ! s#r*`is#r͐|K*͐~#fos#r͐~#fo|`is#r ! s#r !͐n&?**+#|!*~#fo*+#|!*͐ w#w͐͐**͐͐|͐!!9-03Rm1=JUu*s#r***s#r*n& kM*"s͐͐"*n& kM"*~#fo"*n}2"*+1:@U]adt!)<EIQZdlTKBCHTGETROTGETCODSKWARSEEWRITERRODSKUNWA.EMAFRETKBCHl!9DM`iw#w͐*Q͐-n}Q`i^#Vr+s ͐*u!\͐~#fo*! s#r**! s#r>2"* ! s#r͐*! s#r͐|c**!͐͐6͐*!M! ͉s!9Swap Read Error/25TKBCHBFLUSERROHPAGE_SPGETGAMAKE_OFTWIDTTKBCHBINSUVSETMO!9DM** =!|=*#"~#fo"**~#fo"**" **%*##~#fo|*~#fo"'.*##~#fo*~#fos#r!9DM*'"*~#fo|e*n}T*n}e*~#fo")*~#fo|{* ~#fo~#fo|!S`i~#fo)))s#r͐-n͐|g}o|g}o|`i^#Vr+sÄ͐-n͐|g}o|g}o3!6!|W*! s#rc͐K͐͐҂͐! s#r͐*͐ *͐"* !9DM*##! s#r*'`is#r! ^#Vr+s!v͐n}a͐n}v͐~#fo`is#r0͐+! ns*#"*# *)|*)! n&*) ")*6>2"! ,39>^gzERROBISAFTEBSWA*~#fo##*##~#fos#r*w#w*##*%s#r*%*s#r*"%%uGET_MEMTGETROTGETCODSKWARSEERE `is#r ! s#r !*n&?**+#|!*~#fo*+#|!͐͐*s! "*|¢ "*~#fo *6*##~#fo|N*##~#fo*~#fos#r\*~#fo"'*~#fo|ʋ*͐"?"F*F!*F~#fo**F~#fo**F~#fo͐s#r*F"Fú*͐!*'`is#r͐|͐n}ʸ͐n}͐~#fo`is#rÒ͐|!5 !,͐n}%͐ ~#PPNBCREMRBISBEFOGETGATKBCHBSWITCHPAGE_SPMOVMEMAKE_OFVSETMOBMOVBPNTTOMBKILLMR0AERRODSKUNWA:!9DM͐n}4!"*6*͐ns*6* ͐~#fo##*##~#fos#r×*##~#fo"%! "*͐ s#r*##͐s#r͐ |͐ ##*s#r͐###*s#r͐EGV]oTKBCHBMOV!9DM|Ž! n&ʎ ! n&ʎ*# **ڈ*~#fo|-n͐n&|g}o}/o|/g|g}os͐6\w4NEW_PAGINTO_MEMOVMETKBCHMAKE_CUMAKE_OFyTKBCHBKILLMR!9DM*)|+*)z`is#r!|I! !")͐ |k! O͐|͐*s#r͐#*s#r**s#rs#r*6*͐s͐4*S!9Swap file full!P PUT;!Copyright (c) 1981 by Mark of the Unicorn d!9DM`iw#w*#~#fo"**N`i~#foCOPYRIGBLOCATIOBTOSTARԾBTOENBSHOVEIDBISSTARԉBISENijBGETCOBMAKECO̳BLENGTUBCSEARCBCRSEARBCREMR˃BSCRNʈ*~#fo!  !")|¬!!ñ!!&)8;?OWfr}BISSTARBMOVTKBCHBUF!9DM*~#fo**"|@!**n& kM"͐*~#fo*͐ *)z!9#),9?FU[bfiqxBCRSEARBMOVBUFBISENTKBCHh!9DM!|/!4COehls+LjQAFRE!9DM͐~#fo|8͐~#fo##͐##~#fos#rO͐###͐##~*~#fos#r*~#fo"͐*[!9%LYMAKE_CUMAKE_OF' *#~#fo!!")MR;BTSTMRZBSETMOēBMRKTOPάBPNTTOMBSWAPPNԟ BISATMR BISBEFOQ BISAFTE BKILLMR BREADFI BWRITEFɀBMODKBUFcDSTOLOWEb!9DM|'!! ! n&[ ! n&!  ,03BEI*6>2"*͐"*" ͐"**͐s#rs#r ?"F*F!I*F~#fo*<*F!")*)͐f f |f!5 %,BENQV]ad|!9DM`iw#w͐#~#fo"*|l**#fos#r͐##~#fo|y͐##~#fo͐~#fos#rÌ͐#͐~#fos#r͐5͐n}6͐n& kM"*n&MAKE_CUMAKE_OF) *###~#fo*!")MAKE_CUMAKE_OF* *###~#fo*#!")KWARsDSKUNWAGETGA5VSETMOSUBSEcMAKE_OFƭYERRO!9DM?`is#r͐~#fo|6`i^#V{_zWr+s͐!U!`is#r͐##*s#r͐*s#r͐~#fo͐<*F*s#r*F~#fo͐s#r*F"F*͐r**͐! .9E`i~#fo*s#r_`i~#fo*~#fos#r*~#fo"͐s!9 .CjqBISENBUFTOLOWEMAKE_OFMAKE_CU-n*n&|g}o}/o|/g|g}os͐n& kM6͐n& kM6z͐n&#*|͝**#~#fo͝ +**ͯ'**###~#fo͝BCREMRBCRSEARBMOVBISBEFO*s#r͐É!9No more marks!4CFJ!9DM͐k2!9DM͐n`is#6͐6*|N]*~#foq!͐*" *"*#~#fo! !")*6!ó!9fo|V*~#fo*6?"F*F!ڸ*F~#fo|ʫ*F##~#fo*«*F*s#r*Fw#w*F6*F"F]!*&+ ͐͐ ,1>CMOVME** **g* **" **8!͐~#fo*d*͐~#foͩ*"*|ʒ*͐~#foʒ*~#fo"j*|ͣMark in w ~#fog!͐ ͐͐ ! s#r*#ëÉ! ^#Vr+s6͐͐ ͐͐ |g}o|ʽ)!9'!9DM͐67!9DM͐##*s#r͐*s#r͐*s#rERROBSWITCHMAKE_CUMAKRead error or no EOF43@OTiu +Tcfo#&/2AILW[^gjnw{͐ ! s#rz ! *"*" !"*s{2"͐!ó`iw#w!*͐]*!?* **"* "Ý** ** *** "*" #Se}SUBSETMAXROX rong buff! .15IpERRO!9DM͐~#fo|0͐##~#fo*8!͐~#fo*d*͐~#!!! s#r͐͐͐ ͐!7*6͐6͐6͐*F*F!!.! 9E_OF!9DM͐~#fo|.!x͐##~#fo*R͐##~#fo͐~#fo ͐~#fo !")CREAGET_MEMBCREMRMAKE_CUMAKE_OFBUFWRITERROCLOSBPNTTOMBKILLMRC$!9DM͐"*" !"! >2"͐|ʞ ž*6*##~#fo^#Vr+s*##~#fo^#Vr+s`iw#w**%!9DM*0͐*!*++V͐++*#+5>FQTKBCHBISAFTE !foͩ*"*|ʔ*͐~#foʔ*##~#fo"j*|ͣMark in wrong buff! .15Ip!9DM͐wWrite error2?EHmEVmqt%,!9DM͐n& *n&TKBCHTDISSTInvalid mark"%)AO\mBMRKTOPBPNTTOMW !9DM*! s#r͐ ~#fo`is#r͐ ~#fo! s#r͐ `i`is#rzG!.! s#r͐6͐~#fo! s#r "F͐ ! s#r*#~#fo"*|v* !*~#fo"**% *# **`i6#6 *+"*+"* 6*+ *# ä4]!*9DM͐k##~#fo*3͐k`is#r͐k"F*F͐چ*F~#fo*ʆ*F"FX*F#wMAKE_CUFREE_PAOPEMAKE_OFCLOSREABUFGETGANEW_PAGERRO!!9DM*#~#fo*~#6 !**&*&+Swapping... #TKBCHTSETPOITCLEOTFORCG!9DM*&!9DK9!9DM͐~#fo*͝5͐~#fo*͝ERRO!9DM͐~#fo|0͐##~#fo*s! s! n}! ^#Vr+s6 ͐! ~#fo!͐ ͐͐ ! s#r! 6 ! ^#Vr+s! ns͐! ͐)͐k"F*F͐*F##~#fo**F|*F"Fé*F͐k&*F"F##~ s#r*N͐s#r*N`is#r*N͐)"N͐͐*N͐͐s#r͐## !9&,adz}L͐~#fo|d!fg!a͐~#fo?͐!͐~#foҷ`i~#fo͐~#fos#r͐~#fo|! f*H`is#r͐*Lڂ͐~#fo|Š!͐~#fo|ø͐*N²`iw#wø 1͐"N!9Memory munged#fo**F6*F~#fo*m*F~#fo*m*F͐m*F"F)*F"F͐kږERROt!9DM͐*H,͐*L4!f! ^#Vr+s͐͐~#fos#r*N|d͐"NBaP PUT5!Copyright (c) 1980 Jason T. Linhart TOPOFMEENDEXc !9DM"H͐~#fo͐~#fos#r! ~#fo͐~#fo)s#rB͐*L5͐*L!͉!͐?͐COPYRIGAINIIAALLOAFREACOALESÚAFINDNEؖALEΛASPACAPRTWRLĬQINI QGRAg QSHOV QEMPT( QFULS C[s$!9DM! ^#Vr+s~#fo+?ABERRO !9DM`iw#w*H! s#r͐*Lʡ*F6͐ |*F͐k*F~#fo**F~#fo**F"F6ß!9.1ewd ptr freed*-1[ERROTKBCH !9DM*N`is#r͐~#fo! s#r`i~#fo͐~#fo)s#r͐*Ld͉"J*H"N*H*J)"L*L6#6*N*Js#rACOALESAFINDNE !9DM͐ | ! *N|?!͐͐*Jʏ͐͐*J?!!9Abegin = %u., Aend = %u., Acap = %u. at %u., ͐*LM͐~#fo|X!͐~#fo|`i~#fo͐~#fos#r! ~#fo͐~#fo)s#r"͐?î!'9O^k>!9DM͐"*͐"*<** *"%~#fo|l!͐~#foڌ͐*Lñ! ~#fo͐~#fos#r-*N͐s#r!9Memory munged.! *N`is#r͐ ###͉! s#r*N~#fo͐Қ*N~#fo͐Ú*N͐—! M*N~#fo!%u. %c ** Last obj ends on Aend + %d. ** -- %u. allocated, %u. free -- ** total = Asize + %u. ** "O\br9Memory munged />KNRVcPRINTAB. !9DM*N*L*H!! s#r`is#r*H! s#r͐* Ubei{ABERROTKBCH !9DM*N*L(*H"N*N`is#r`i~#fo͐~#fo)s#r͐*L-1LPiJ!9DM͐͐͐##͐͐s#rs#rs#r͐+s#rT!9DM͐~#fo͐@* ͡. ;ͣW!E# ¡ # ¬# ·@ʴʥzʖ=ʐ=|zJz?4)z zG:ꆠo& !9BHSVt{ATPRTCH }. TFORCATPUTCH| 44-O!Y4ÃO$+q+p+qy͏ , $  ͌ 9!z6 # L!zw͌j# X:z 0 ͘i.g> >کÝ!p+q*DM͡:͆ ͆:_2:`!!:*& N͆!4!6J~#foA͐͐~#fos#rn&N͐^#Vr+sn&"?[!9DM͐##~#fo͐~#foB͐##͐~#foO=!9 Ÿ!6q!2qC J R q!z z=naO $q$,!~!c*W.w!]4 W:_G:YEEG> .JlO>~ y. O>^ y@.  +7BGMSZ`hpxTW=N#Fy}80*z{¯#z+++ ¥ z#½# · 9!`͠ y9!rͷÃO$+q+p+qy͏ , $  ͌ 9!z6 # L!zw͌j# X:z 0 ͘s#rP͐##^#Vr+s! ns$@&!9DM͐~#fo͐##~#fo͝g!9DM͐##~#fo#͐~#fo͝c͐;,!Ù!;qz8O! !;,z;qyO! ͣͣW_͕qyO! ͣ͒qyIDT" !o&*Y ATPUTCH M 0:톷* :2ͭG:G::2 yPAGECHNEXTCHABCSMATCBMOVTKBCHD M!")' :! !  #(+2;?=N#Fy}80*z{¯#z+++ ¥ z#½# · 9!`͠ y9!rͷBCSEARCPAGECH˂NEXTCHABCRSEARBCSMATCȔSUBSEԴSSISAFTŅBDELUPBDELUPBINSUЮASMDSbxʇ {z~#o}o҃##~#fo͐~#fo͝c͐~#fo͐~#fo͝$EyͰ#O!B N#N ¾SP.* |} !9":q!" >کÝ!p+q*DM͡:͆ ͆:_2:`!!:*& N͆!4!6JTKBCHTPRNTCHATPRTCHATWIDT~TPUTCHAҳATPUTCH $10 !~=W!xe ~#Xbxʇ {z~#o}o҃BCSMATCTKBCHm M!")*|@*##~#fo3**+"* *W*+" f!  #ͧ;ڧ zç~E#;ڧ}“"e:L*iͯ*e}¸|¸*e; ZQ{z| }ʔ*~ʔ :Yo:*~*$w#"$ iV[$'*/:AKORY\_hkw!++""P>28!"9:]P SETUEDICLRECHTSETPOITMAXROTFINEXIQ!9DM͐͐ !++ !QT# N#F*##~#foPY !M "I"K!?DM!PYG^#V*>*I`is#r*K! s#r! DMMAIEDIԓSETUaNEWDSzMODELININCRDScDOINCRDӅINNERDS* WHEIGH PREFLIN SCRNRAN;DOSCRNR]CMAKEBUCSWITCHgCFI"/5=R\_hk*~A[  SSISAFTTKBCHf "X"Z"\*X!k"^##^#V*= !w 1_ĤU># !L6-75A_!N^#V- g  g R+03:@ELTKBRDINCRDSKBWAITGETKTKBCH!"k*k|Ž|, "m!"!"*|ʋ*m (+4E "z"|"~!?DM!PYx^#V*o! ^#V*o*~*[! s#ro*z`is#r*|! NDBUx*Z!k"`*^"bDM*``iw^#V*! DMV*^DM!"d*``iڳ##^#V*ª|ʳ"d! DMÂ*d|Sů2[\ͤ>2N!""͖ Q¾:L͕ =" ͖ Q" ="=> 2 Q)~#fo!c!9~#fo*m)~#fo"*+"|!"A "'*-0GWtPUTOPEEXIREATINIBINIBCREAs#r! DM  !.>AOY\evA!?DMPY!?^#V*6! ^#V*6! s#r! DM,=TKBC>wS`i^#V*! ^#V**``i! DM! "b*^!>w*\|S*bDM*^`iS^#V*S! ^=&="&! BL<"e=L=W*e}o"gU_ *e"iͧ>::Mʓ^#VTSTRLESTRILOWCASCMAKEBUBREADFITMAXROBCREMRCSWITCHECHUINIf6!HATPRTCHATWIDTPAGECHNEXTCHA !"$*aT ʔ*~*$T#"$ :Y2Y,& #V*S >! DM, +9>LORW`lux(4D9DM!{2`{2$!!#`is#rz!!-`is#rz!9 !!~͐ *&" *&""*&"_ ͐ ͐͐")'-0͐*3!92NT\cilo~ BISBEFOSCRNRANBCREMRBPNTTOMBISATMRBISSTARINNERDSTMAXROTKBRDBKILLMRDOSCRNRDOINCRDMODEFLATSETPOIBGETCOTMAXCOT#"*q|E*|* ?Ò"*Ҵ*+"Û|!* !NTCLRWINMODELINTMAXROBSETMOBSCRNMRT !"* ++L**#"%!"a i͐ 6͐ ͐ |ʦ|¦* !"͐|ʦ͐ "U*Uì!91bejrw}͐"q! w#w!"*|*)))))uw#w*+"͐Ҙ! ~#fo##~#fo7! ~#fo##~#fo6!#&+2;BORWcjq{TKBRDBTSTMRBSCRNMRBISATMRBMRKTOPTSETPOIASMDSTCLEOTGETCOTMAXCOBISENBSHOVEIBFORC6!9DM*)! s#r* |k*|n* |n ! s#*!"͐͐!!9-<?JNgjowTKBCHERROBCREATBSWITCH*3:?JTDISSTTMAXROTPRNTSTTCLEOTGETCOTSETPOITMAXCOTPRNTCH!9DM!!++ #>AFNSYafot~TMAXRO(*|*$*+++ WHE ~#fo##~#fo! ! ! ~#fo##~#fo! !"o! ~#fo##~#fo$|͝! s#rè!N!X!"o!"'++"*"UFBMOVBPNTTOMTKBCHBISAFTEBSETMO9!9DM! 6#6͐`is#r͐r* *|ʪ|ª͐ * ͐*|ʽ*++*|!*#`is#r͐|%|%BCREMRSTRCP/!9DM`i6#6͐|O͐)))))u~#fo|O`i^#Vr+s$͐|f!͐)))))!L ! *o)))))u ! *o)))))u  "i*++!*+`is#r͐|IGHTMAXRO% *?++DOSCRNR! BCREMRPREFLINBGETCOTMAXCORNLSRC *"*" *o-͐|!]03! 9Mince Copyright (C) 1981 by Mark of the Unicorn Inc. mince.swpa:mince.swpC͐ @|@͐ |’͐ |͐ !͐*$6͐"a!|$͐ ͐͐ !͐")!$ó|~*++~* !*|Y++\**|l*#o!*u! s#r͐ s#r͐~#fo|›!͐~#fo ͐##s#r͐ ͐! 6#6͐|͐͐6!!-`i^#Vr+sé!9Mince Version 2.6 () : $,2<@DY]avz}DOINCRD!BMAKECOTOBEGLIBMOVBMRKTOPBPNTTOMBKILLMR$!9DM`is#r͐|ʕ#"* an't Open Swap FileDELETE.MEmainNew File&?CUYgnr!LVnSCRNRA'!*͐# -0͐ |4͐ 3|4͐|4͐"U! w#w`i^#Vr+sT|i͐ | ^#Vr+s͐ ͐ ͐!9Too many buffers+AMPY\`d STRCPBSWITCHSETMODEdATPRTCHATWIDT%ATPUTCHTtL RESEARCH SID VERS 1.4$10 !~=W!xe ~#Xbxʇ {z~#o}o҃ !9DM*o)))))u!`͐"o*o)))))u~#fo*o)))))u##~#fo" *G`STRCMq!cc bindings.c -e7900 cc comm1.c -e7900 cc comm2.c -e7900 cc comm3.c -e7900 cc support.c -r10 -e7900 cc term.c -e7900 l2 mii.g> >کÝ!p+q*DM͡:͆ ͆:_2:`!!:*& N͆!4!6Jcc bindings.c -e8100 cc comm1.c -e8100 cc comm2.c -e8100 cc comm3.c -e8100 cc support.c -r10 -e8100 cc term.c -e8100 l2 lm9DM`i6#6͐|a͐)))))u~#fo|U͐)))))u͐|a`i^#Vr+s͐h!92LS_fnce bindings comm1 comm2 comm3 vbuff1 vbuff3 vbuff2 -l support aterm term util til dqÃO$+q+p+qy͏ , $  ͌ 9!z6 # L!zw͌j# X:z 0 ͘ince bindings comm1 comm2 comm3 lvbuff1 lvbuff3 lvbuff2 -l support laterm term lutil dq=N#Fy}80*z{¯#z+++ ¥ z#½# · 9!`͠ y9!rͷ yTPRNTCHo& TWIDTTGETCO o&TPUTCHAi& ͷ~P »ǻ2ú/Ɩc Û ǻ2 ǻ2» ǻ2"!@"!" ʞ!F#x±~#±!b2r~# "2r+}|~#G:rx"2r ~#fo`i^#Vr+s)~#fo! K̀(D ! ~#fo͐)~#fo! W)í ͐|ʀ ! ~#fo͐)~#fo*H#"H+kH̀(í n^#V# ~#fo^#& ~#fo!+!#!+!#!+!+}|z{|}|zr BDS C, vsn. 2.1 !9DM{2 K{2 K{2K{2K{2K>2K!"H!"H!! K̀(!"-K͐͐͞3"3K3"5K͹ !"F! K!ͷ’P͌Q!ͷªP}QxQ!ͷ͓G@Q! ͷ y͓Gþ!ͷ ͓Q!ͷ0ǻ2» ú ǻ2 ǻ2d²Ɯce+w# +6#!6#2w2x*s!>r<o&F=-` r'~h6!+`W?_! ~#fo͐)~#fo*H#"H+kÌ(`i^#Vr+s*K} !H! K̀(* K} ! ! *H#"H+kÌ(* K} 7||7ɯ2qZZ)z|/g}/o#|͉k|/g}/o#ɯ2qZZk:q|/g}/o#|/g}/o#:q<2qqDM!xxGyOJ!"8*-K"/K!"1KMAIN!9DM͐!+ T(!6 T(!!! 6#6`i6#6͐͐ҹ ! ~#fo͐)~#fon͓Q͌Q!.ͷ6y#G͙Qà!2ͷQ͓͌Q!>ͷq eg͙Q:zJEË1ǻ25D4 #?5??5@o6ͼ2)26TD bb4 5 ?55@o6ͼ2Ն5h6!~7z?` :>ª@w#.¶66*>?w#> w#.7:77! ! *H#"H+kÌ(!9Usage is: l2 {program files} -l {library files} [-w] -L-W-WA-WS-M-m argument)v|͔`i|)Öxڷz/W{/_ѯzW{_=yOxGæ2qZZ͉M|}ȯ|g}o)|/g}/o}-G !d ! ~#fo͐)~#fo(|4 ! w#wD !g ! ~#fo͐)~#fo(|_ >2KD !j ! ~#fo͐)~#fo(|C–EQyQxQRQ** {zҷ*~#" <AOGƐ'@'OxƐ'@'ON# 3Ն6D445h626+5T 5(51-"( 715ɵQOz!@!a{   `OE!y6$ -7rBo&))T])))!y missing. Unknown option: '%s' DEFFMDEFFDEFF2MDEFF2!9DM*3K"%K*K}j * K} ! ! !9K"| ! !!*3K!#z/W{/_!9~#fo! ! ! ! ! ! !9~#A"s!`*"!"!Y">2>2>22!"! {2K{2KD !n ! ~#fo͐)~#fo(|¿ {2K{2KD !r ! ~#fo͐)~#fo(|& `i^#Vr+s͐ !u !!*K͞+86OP'+FÎr ͖ 8{ Ăy0 2͵ ^#V#*~#fo^#*~#fo^#V#*n^#* !9DM!T(͐͐ʹ G*8++|ͩ*K}mMark of the Unicorn Linker fo9K# ! !*3K`is#r͐~#fo! s#r͐*3K!9K#*%K͐"%K!9K"x *%K"%K6!9Kڐ!!*%K"7K͐*7K!9K#͐ҽ!&! ** Out of memory -- switching to disk mode ** Disk write error!!!K"!́!9 **** Beginning second disk pass **** COMOVLDisk write error! !9DM!!F!9K#s#r*8+++|*1K͐"1K*8++|<͐ *%K͐4*%K͐ "%K!9!9DM͐ +|gA͐ ͐ +`is#r͐#~#!T(*HkI3*H#"H+6y*%K*3K*/K")K*'K|*)K"'K!9Enter the name of a file to be searched: !9 -- read error!!9DM͐ 6*8+++|ʆ*%K*3K*/K! s#r*8+|q͐͐ ~#fo͏͐ ͐CM.CCCC.CCCCan't open C.CCC C.CCC: read error! !9DM`iw#w͐*H ! ͐kH͐kH!9K" Module won't fit in memory at all! -- read error! !9DM!T͐kI͐kI!9K"|͐kI!!*8+|r! n}r!`i!9K#!! !9K#!!+K!9K#`in}i͐"'Ko!"'KÄ!!!9Kfo͐ڱ͐#~#fo͐͐s#rA͐#~#fo͐ ! s#r͐n}*͐6!! ^#Vr+s͐#~#fo! s#r͐#͐!9DM! w#w`iw#w͐*F͐ k8 n}s͐|O!T(͐ k8T(!T(! 6#6`i^#Vr+ss#rÚ͐ ~#fo! s#r͐͐|)###! s#r͐͐n}!!k! s#r͐`is#r͐n}"͐#͐J|! ͐kH! W) ͐kH!W)͐|͝F! s#r͐n} ͐J! s#r! ͱ ͐ n}!XW)K͐kI!gW)!!F!9K#!{!`iw#w͐*FC͐ k8 n}7͐ k"F! s#r͐n}ʥ! pÎ! ^#Vr+s͐~#fo! s#r͐!9-- read error! !9DM*8++| *%K͐ ~#fos#r͐ n}A*8+|A͐ ͐#͐s#r!9!9DM͐n}h!! s#r*F+ k8`is#r͐Æ!9*** Missing functions: !9DM`iw#w͐*F͐ k8 n}͐ k8 6`i^#Vr+s÷!s#r! ^#V!r+s`iͱ `i^#Vr+s͐~#fo! s#r͐! s#r͐͐ `is#r`i^#Vr+s~#fo! s#r͐͐¤ *7K͐~#fo͐ *8+++| !T(͐T(!7T(! ^#Vr+sQ !9K"`i^#Vr+s !9CRLCan't op8!! s#rz7͐͋*7K͐ k8`i^#Vr+s!9K"!9CRLCan't open %s << Scanning %s >> -- Re*5Kڐ*8+|$!T(!"8*8+++|X*%K*3K*3K!K&#|X!!*/K*%K*3K"/K*3K"%K*%K͐*5!8ڵ͐͐R|¢õ`i^#V{ _zWr+s|͐!8 *F k8`is#r͐͐O ͐ ͐ 6͐ "8*-K"/K!T(*K}+!!H8!!H!H!K͊"͹ wʹ G*%K*3K*3K!K&#|!K'|!! s#r͐*%K! s#r*8++|! ^#Vr+sz͐ ͐͐͐͐`i^#Vr+s~#foRæ! ~#fo͐en %s << Loading %s >> Duplicate program function '', not linked. !9DM`iw#w͐*Hy͐6`i^#Vr+sU|ʫad error! !9DM! ͱ ! ^#Vr+s~#fo`is#r! ͱ ͐~#fo͐! s#r!͐!9K"|! !͐w#w*F#"F͐!9MAIN!9DMF`is#r͐n}a͐͐R|W͐g`ip1!g!9!9DM͐ͱ P&|g}o͐n}͝|g}o}2MP*LP&|g}o͐n}͝|g}o}2NP*KP&|g}o}2KP*LP&|g}o}2LPѯgW!*KP*L!9DM!;͐g.*F!O͐g.*)K!j͐g.*'K!͐g.*'K*+K!͐g.*1K!͐g.*5K#fo͐-(`is#r͐͐͐͐~#fo4! ~#fo͐s#r͐~#fo͐s#r! ~#fo͐!8͹)!!H!EL!H+|!!`iw#w͐*Fr!EL͐ k8 ~#fo;!!EL! f+!EL͐ "!"c4!x4a:$$$.sub!9DM͐!͐͜4s#r͐~#fo#|P"!!͐͐~#fo4͐##w#w͐w͐^#Vr+s!9DM͐|͐~#fo`is#r͐͐s#r͐! s#r×!9w*K}!\!H!`!H!HPѯgW *NP} *MP} !*MP}5 *NP}5 !*MP}J *NP}J !Z!9DM͐͐ns͐#n}† ͐n&|g}o`is#r*8+|2͐*%K͉!͐g.!9 Link statistics: Number of functions: %d Code ends at: 0x%x s#r͉͐! s#r͐|0%͐͐͐~#fo4! s#r͐#|$͐&͐##~#fo͐s#r͐͐%͐k8͗,͐+++|0!EL!5͗,f͐ k8|)Y!EL! f+!EL! f+`i^#Vr+sù͐|#w͐!9DM͐͐V5s#r͐~#fo#|¸"!͐##w#w͐w#w͐!9DM͐~#fo~5!9DM͐#!!K͊"|͝|B*%K*3K*3K!K&#|B!K'|J!d!!K"!́COMOVLDisk write error! !9DM*sï ! ^#Vr+s! ^#Vr+sn&|g}o|W !9DM͐^#Vr+sn&|g}o| ù !9DM͐n&|g}o|!͐n} Externals begin at: 0x%x Externals end at: 0x%x Jump table bytes saved: 0x%x Link space remaining: %dK !9DM͐n͐?&! ~#fo͐?s#r8%! w#w͐~#fo¼%!͐͐~#fo4! s#r͐#|‚%͐Ï!EL!7͗,*K}ʟ!EĹ!EL!f+!EL,!EL<.*K}!9!H!EL!H+|!=!!EĹ!EL!f+#͐ +|<#! ~#fo͐##~#fo?͐~#fos#r͉͐`is#r͐͐##~#foʩ#!͐͐~#fó5#|ʣ3K`is#r! KJ! s#r*K}M* K}͐6*͐#6#6`i^#V!r+s6*3K`is#r͐#͐ ~#fos#r*3K`is#r`i^#V!! ^#Vr+s ͐͐n&|g}os! ^#Vr+s6!9DM`i6#6͐|!͐͐?|g}o! s#r! ~#fo}2͐n}.2͐͐n&͕.s! ^#Vr+s! ^#Vr+s6.͐͐̀(!9DM! ^#Vr+sn}2KP! ^#Vr+sn}2LP*K&͐##^#Vr+s͐w#w͐Ҽ%͐͐?&͐)! s#r͐͐͐4͐~#fo͐s#!EL,!EL<.!9SYMCan't create .SYM file LNKCan't create .LNK file !9DM͐ ~#fo͐ ~#foͩ#!͐͐~#fo4#|©#!#͐͐)s#r͐##͐s#r͐#!9!9DM͐#!&͐~r+s*'Ks#r`i^#Vr+s`i^#Vr+s*)Ks#r`i^#Vr+s*'K*+Ks#rd͐#͐ ~#fos#r!9!9DM!U! *F͐ Ҕ!!7×!!0s#r͐ ͐f+`i^#Vr+sJ!!9!9DM͐ ͐͐͐W)!!!9DM͐+| r͐͐&! 9!9DM͐ -&!'͐ ~#fo|&͐ ~#fo͐-(! s#r͐͐ ͐ ~#fo#Vr+s! ns&!9DM! ^#Vr+sn`is{,`in} ,͐! f+͐`in&f+#|,!,ß,!,!9!9!*!9~#foڟ**͐ ͐͐͐͐'2! ~#fo͐s#r]*`i~#fo͐s#r7*! ~#fo1! ^#Vr+s! ^#Vr+sns! ^#Vr+s! ^#Vr+s0͐6! ! s#r! n}1! ^#Vr+s!ҏ1! ^#Vr+s! n}ʆ1!9DM͐`is#r! ^#Vr+s! ^#Vr+sns{ʸ(Ò(͐ÿ(!9!9DM`iw#w! ~#fo͐n! ~#fo͐n}")!sn`is{2`in}%2! ! s#r! 6#6! s! s! s͐n}-W/! ^#Vr+s! 4͐n}0g/! 4͐n&P3}ʄ/! 3͐ 4͐ ~#fo͐s#r! ~#fo͐s#r! ~#fo͐s#r͐ ~#fo+'͐ ##^#Vr+s͐ w#wDM͐-!3.͐##~#fo/-!3.͐##~#fo`is#r͐͐͐~#fo5͐|-!3.͉͐s#r)!9!9DM͐͐V5s#rz9+!͐͐s#r͐##6#6͐~#fo!9DM͐+|†+! n&!0É1! sT1͐! ^#Vr+sns{ʸ1! ^#Vr+sÏ1! n}1! ^#Vr+s!1! ^#Vr+s6 11! ^#Vr+s`ins ~#fo`i^#Vr+sn})!N)(! ~#fo͐n! ~#fo͐nѯgWN)!9!y9DM! `i.`iT(!9!Ç/!! s#r! ^#Vr+sn`is{./! 3! s#r! 4! ^#Vr+sn`is`in&͕.}D/U70X@0OI0Cʏ0S01͐~!͐ ͐ ~#fo5+'!'͉͐! s#r͐|r'͐͐ ͐ ~#fo5͐r'!'! ~#fo+?`is#r͐##~#fo| .!͐͐͐4͐##~#fo͐s#r͐~#fo͐s#r!!͐~#N6͐++|¤+! n&!̈́6͐+++|+! n&!̈́6͐++++|+! n} +! !̈́6! n&!̈́6͐#2! ^#Vr+s`ins.͐6!9!9DM! ^#Vr+szt2͐n`is! ^#Vr+s͐ ns! ^#Vr+s`ins/2!9!9DM`iw#w! ^#Vr+sn}ʩ)`i^#Vr+sÊ)͐ð)!9!9DM͐͐k! s#r͉͐! s#r͐| +͐͐k#fo|70! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 O0! 6O0! 6! ~#fo! n&! ^#Vr+s~#fo! ͬ2)s#r͐͐ ͐ ͐k4͐ ~#fo͐s#r͐k͐'!9!9DM͐~#fo|&(!fó53.͐##6#6͐͐s#r!3.!9!9DM͐V.!͐~#fo~5!y9DM! `i.͐#^#Vr+sz,,͐^#Vr+s! ns&!͐͐~#fo5V,!͐##6#6͐͐s#r͐^9DM! n&aͯڨ2! n&zͯ!9DM͐͐ 2͐^#Vr+s͐ 2͐02͐7s!&G3͐ ! s#r͐͐! s#r͐͐! s#r͐ `is#r͐͐*͐͐ ! s#r͐|*͐͐ ͐͐͐ѯgs#r81! ^#Vr+s! ^#Vr+s~#fos! ^#Vr+s81! n}0! 6#6! ^#Vr+s~#fo! s#r͐n}81͐|8͐͐~#fo5&(!!!9DM͐͐L(͐P(͐!9DM͐n}~(! ^#Vr+sn&N6\(`i͗,Ì.!9!9DM! n&}2|ʼ.! n&.! n&!h9DM! ^#Vr+s~#fo! s#r͐! s#r! ^#Vr+͐͐ ͉͐ͬ2`is͐ ͐͐ )͐ͬ2`in&#&G3!9!9DM! n&0ͯ{3! n&9ͯ7:,*͗6:*ʣ5}|2q 55:qw5! {w7:)~:,"!9DM`iw#w͐~#fon&P3}3͐ ?͐^#Vr+snѯg`is#rÍ3͐3!9**+ 6  #F#s!"u*|*uL6*~##6"*s*uL6#"u*+"6  h6  l6_ x6x 4~#47*|DM**]4A4><54~# x54 >Goy6$sub»%»0úÛ++:G_*DM!4o&7,2q*&:q):4=4=r:qo&7:)~:,"s!"u*|65**s;5! ~656*u*+"*"*u#"u57*c4\!*͜4#