00020 ** GLOOM 3-D V1.2 DEMONSTRATION GRAPHICS ENGINE ** 00040 ** BY JOHN KOWALSKI (SOCK MASTER) FOR 6809 COCO 3 ** 00060 ** COPYRIGHT (C) 1996 BY JOHN KOWALSKI. ** 00080 00100 START EQU 3584 00120 ORG START 00140 SETDP START/256 00160 TEMP FCB 0 00180 GFBANK FCB 0 GFENGINE MMU BANK 00200 DISTEM FDB 0 00220 DISTAX FCB 0 DRAW ROUTINE TEMP 00240 NEWBAR FDB 0 00260 OLDBAR FDB 0 00280 TURN FCB 0 00300 SPEED FCB 0 00320 GFYX EQU GOON+1 00340 CTAADD EQU DIREC1+1 00360 ENGINE LDY NEWBAR 00380 DIR EQU *+1 00400 LDD #0 00420 ADDD #64 00440 STB 255 04860 LDB #255 04880 AZER STB ,-X 04900 CMPX #0 04920 BHI DLOOP 04940 LDB #255 04960 STB $0000 04980 LDD #$3031 05000 STD 65444 05020 *ANDCC #175 UNMASK IRQ & FIRQ 05040 DUH JSR ENGINE **THIS IS WHERE THE GAME GOES 05060 JSR KEYIN DECODE KEYBOARD CONTROLS 05080 LDB TURN 05100 LDA KEYBUF+5 05120 ANDA #8 05140 BNE NOLEFT 05160 SUBB #3 05180 CMPB #-24 05200 BGT NOLEFT 05220 LDB #-24 05240 NOLEFT LDA KEYBUF+6 05260 ANDA #8 05280 BNE NORITE 05300 ADDB #3 05320 CMPB #24 05340 BLT NORITE 05360 LDB #24 05380 NORITE CMPB #0 05400 BGE POSIT 05420 ADDB #2 05440 BCC POSIT 05460 CLRB 05480 POSIT BLE NEGIT 05500 SUBB #2 05520 BCC NEGIT 05540 CLRB 05560 NEGIT STB TURN 05580 SEX 05600 ADDD DIR 05620 STD DIR 05640 LDB SPEED 05660 LDA KEYBUF+4 05680 ANDA #8 05700 BNE NOUP 05720 ADDB #3 05740 CMPB #32 05760 BLT NOUP 05780 LDB #32 05800 NOUP LDA KEYBUF+3 05820 ANDA #8 05840 BNE NODOWN 05860 SUBB #3 05880 CMPB #-32 05900 BGT NODOWN 05920 LDB #-32 05940 NODOWN CMPB #0 05960 BGE FORWAR 05980 ADDB #2 06000 BCC FORWAR 06020 CLRB 06040 FORWAR BLE BACKWA 06060 SUBB #2 06080 BCC BACKWA 06100 CLRB 06120 BACKWA STB SPEED 06140 CMPB #0 06160 BGT GOPOS 06180 BEQ GONO 06200 LDD DIR 06220 ADDA #1 06240 ANDA #1 06260 BSR ANGLE 06280 LDA SPEED 06300 NEGA 06320 BRA GOGO 06340 GOPOS LDD DIR 06360 BSR ANGLE 06380 LDA SPEED 06400 GOGO LDU 362,X 06420 PSHS A 06440 BSR MULTIP 06460 ADDD XLOC 06480 STD XLOC 06500 LDU 360,X 06520 PULS A 06540 BSR MULTIP 06560 ADDD YLOC 06580 YOKE1 CMPA #129 PREVENT FROM WALKING OFF MAP AREA 06600 BHI YOKE 06620 ADDD #64 06640 BRA YOKE1 06660 YOKE CMPA #190 06680 BLO YOKE2 06700 SUBD #64 06720 BRA YOKE 06740 YOKE2 STD YLOC 06760 GONO JMP DUH DO IT ALL AGAIN 06780 ANGLE ANDA #1 *CALC MOVEMENT ANGLE SUBROUTINE 06800 BNE FIRST 06820 LDA #12 06840 MUL CALC RADAR TABLE LOCATION 06860 BRA SECOND 06880 FIRST LDA #12 06900 MUL 06920 ADDA #12 06940 SECOND STA 65446 MMU BANK 6 FOR RADAR POINTER 06960 INCA 06980 STA 65447 MMU BANK 7 FOR RADAR POINTER 07000 LSRB 07020 LSRB 07040 LSRB 07060 ORB #192 (OFFSET TO 49152-65535 WORKSPACE) 07080 STB (A$:A$""135,0:-R)SS0TD -g*(423943)051-}+(423943)4249-,(423943)4551--TT(423944)48: TT1 TT947-.T12(TT)2:T:T0(0):51.#/I(423944):I8364: I8265: I7166: I6667:51.Z0T015: T,((A$,1(T2),2)):T:423943,0:51.1DCM(3):CM(3)CM(2):CM(2)CM(1):CM(1)CM(0):CM(0)D.2CM03:11CM,CM(CM):CM.340/465496,0:M"NIBLOADR":65497,0:(&HCFC3)&H8D &HE76,&HCE:&HE77,&HE7/ 5/0665496,0:M"SQZLOADR":65497,0/67/865496,0:E,0:35,15:0,0:"Reading";:J1:S311: DR,17,S,A$,B$:A11283209(A$,A8,3)"NIB"((A$,A,1))0 F$(J)(A$,A,11):JJ1 : (A$,A8,3)"SQZ" ((A$,A,1))0 F$(J)(A$,A,11):JJ10!:A:A1128320;(B$,A8,3)"NIB"((B$,A,1))0 F$(J)(B$,A,11):JJ1 : (B$,A8,3)"SQZ" ((B$,A,1))0 F$(J)(B$,A,11):JJ1068,0:HN;:1?A$(&H7C)(&HFF):PP115:B$B$A$((&HB0)PP)(&H12):PP:A160:1024A,((B$,A,1)):A:1024A,57:01025:1@A$"00010203040506070809101112131415":1AA$"00043236374433383552535455603534":2BA$"00022016182219232630585150172106":2ECA$"00010809111025312724141513292812":2D32,15:"Delay (3-30): ";A$:TD(((A$))): TD3 TD302: TDTD602EA015:A,0:A:NLSS:30:SSSS1:SSK1 SS1:69:694433383552535455603534":2BA$"000220161& 32::"TEXT FILE READER"&+ 2000&m:"PRESS 1 FOR SINGLE SPACING":"PRESS 2 FOR DOUBLE SPACING"&( I$"4" C$"4" : C$"8"&2I$: I$"1" I$"2" 60 : 50'<:"WHEN YOU ARE READING, PRESS SPACE TO GO TO THE NEXT PAGE. PRESS ANY KEY TO START."'#FLS(I$)'/P 44539'8Z 80'Rd 0,0: 0,1: 8,63:1'n"NOTES ON GLOOM by SockMaster (John Kowalski)"'x:"By Stuart T. Wyss-Gallifent"':"(C) 1997"':::"Press any key to begin.": 44539'' 230("I",#1,"GLOOMT*1.TXT(+ (1) 230(8 #1,A$(D 1)A$([ȅ LS2 LKLK1:(LKLK1: LK18 : 25,23:"****** PRESS ANY KEY ******";: 44539:LK0: 0,23(܁ 170( #1::"THE END- PRESS ANY KEY": 44539: 32: : 230& 0& T1 1000: T&9 1000: NA$(12),SC(12)&\EN$(&HE6)(&HEF)(&HE9)&k( 100&z2 480& TO PLAY (Q=QUIT)";(WI$: I$"" 230(l I$"Q" ::( I$(32) 230(: &H0E6E:65496,0(0: 12,63:13,0( 135,0(": GET SCORE) ,SC100((&H14DD)48)10((&H14DE)48)((&H14DF)48))6 SC0 100).@ T1 10)JJ SCSC(T) T: 100)[TUT:T11: T)o^ T10 U 1)hNA$(T)NA$(T1):SC(T)SC(T1))r T)|NA$(U)"--------":SC(U)SC):)PL1287(U32): 580) 100)NA$(U)NA$)0*"TOPSCORE.DAT"*.™"O",#1,"TOPSCORE.DAT"*X̀ T1 10: #1,NA$(T),SC(T): T: #1*cց 100* 26 : :"UNKNOWN ERROR.":*"I CAN'T FIND YOUR SCORE DATA"*"PRESS ANY KEY TO CREATE A NEW BLANK LIST."* 44539* 135,0+"O",#1,"TOPSCORE.DAT"+-NA$(8,"-"):SC0+<& T1 10+L0 #1,NA$,SC+_: T: #1: 70+fD0+wN(32,255);+X(255)" WOW WOW WOW WOW WOW WOW "(255)(255)" YOU MADE IT INTO THE TOP TEN "(255);+b(32,255);+l 160,#v@480," PLEASE ENTER YOUR NAME";,2 670,ENA$"--------",MK0,[@PL,NA$;,CHCH1: CH256 CH128 : CH128 CH128::CH=RND(7)*16:CH=128+15+CH,@PL1,(CH);:@PL9,(CH);,I$: I$"" 675, I$(13) -ƅ K0 750-IЅ I$(8) (NA$,K,1)"-":KK1: K0 K0: 670 : 670-_څ I$(32) 760-r I$"." 760- I$"A" I$"Z" 690- K7 K7-KK1:(NA$,K,1)I$- 670(CH);,I$: I$"" 675, I$(13) -ƅ & 32::"TEXT FILE READER"&+ 2000&m:"PRESS 1 FOR SINGLE SPACING":"PRESS 2 FOR DOUBLE SPACING"&( I$"4" C$"4" : C$"8"&2I$: I$"1" I$"2" 60 : 50'<:"WHEN YOU ARE READING, PRESS SPACE TO GO TO THE NEXT PAGE. PRESS ANY KEY TO START."'#FLS(I$)'/P 44539'8Z 80'Rd 0,0: 0,1: 8,63:1'{n"The Adventure of the Deadly Virus"'x:"By Stuart T. Wyss-Gallifent"':"(C) 1997"':::"Press any key to begin.": 44539'' 230( "I",#1,"VIRUS.TXT"( (1) 230(+ #1,A$(7 3)A$(Nȅ LS2 LKLK1:(LKLK1: LK22 : 25,23:"****** PRESS ANY KEY ******";: 44539:LK0: 0,23(܁ 170( #1::"THE END- PRESS ANY KEY": 44539: 32: : 230( "I",#0 @ڀڀڀڀڀڀڀڀڀڀڀڀڀznڀڀڀznڀznڀznڀn}}}}}}}oon݀}}}}}}}}ڀoon݀݀}wwoon݀woonn݀wwoonnn݀woonnnwwoonnn݀݀ހހހwoonnnnnnnnnnn݀݀݀xw݀oonnffffffffffxxoonnVxx݀oonnVxxހoonnVxxxހoonnVxxxoonnVހ݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀xxxxxxހooVoVVVVVxxV}EEEEEEEEEEV}݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀݀UU#3VwUU#3VwU#33V1 @U#33VU#333VUU#333VUU#3333VnxxEEEEEEEEEEހހހހހހ""#3333VnDDD"""""""""33VfnDDD"""""VfnDDD""""VenDDD"""VenJJJ""""VUnJJJ""VUnJJJ"""VTǹ̀̀̀̀̀̀̀̀̀̀̀̀̀̀̀̀JJJ""""ffffffffTn"""JJJ""#fDn"""JJJJJ""#fDn"""""##fAn"""""##fAn"""""###fnfnn""""""####3333fnff""""""fn66̀"""""""fn63""f"n33ɀ 3""""f"n3 3"""V#n 33""V#333333333 33""""V 33""""V 33""""""U 33""""""""""U33""""""""""""""Uɀ̀Ufc333333333333333333""""""""DDDDEEEEUU:$A@1DV'S=4~9+  }+  ݈`݀ݬB݋ݱ@}H̡݈. +-0&_990' }}ӈ݈0&_9 &|0*9 ܀*{S=-܋*4S=~~$0*$0*Z &==~~$0*f$ 0*TZ &=~t܋*2S=~~$*$0*Z &=~~$*$0*Z &_A!+,&%O_' `H'%?&9@&%ƪOƻ1 ܗ%ƪ?`X1(%1( :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::9__^][ZXWUSQOMKIUFUC@?@;36+0+* "  ri|;Oٷ@4PO]&=~b瀌%?#ƀ 2O_큌%L8%ҟҟ_OZ&01?  XI8XIS73D!%373H!%37">',3\"3}݈m1$3L!%3 & ?T1$3H!%3 &ǽτ&.жЄ&0-0, $_/ $_ ΄&-̈́&.,$_/$_. '7 4@  +4050"@ %@ ~9MgM*SpN=ON=PO}M*CS9ʆy%9 ;| 89:;01>?8234567? 06"58? #&),/258;>ADGJMPSVY\_behjmpsvx{~}{xurpmjgda^\YVSPMJGDA>;851.+(%" }zwurpmjhec`^\YWURPNLIGECA?=;97531/.,*('%$"} {xurpmjgda^\YVSP M J G D A >;851.+(%"   !"$%}'z)w*u,r.p0m1j3h5e7c9`;^=\?YAWCUERGPJNLLNIPGSEUCWAZ?\=^;a9c7f5h3k1m/p.s,u*x(z'}%$"    #&),/258;> A D G J M PSVY\_behjmpsvx{!~"$%')*,.013579;=?ACEGJLNPSUWZ\^acfhkmpsuxz}  &,39?ELRX^dkqw} "',16;@EJOT{Xw]ranfjjeoas\wW|SNID@;61,&! |vpjc]WQKD>82+% }wqke_YSMGA<60*% {wrnjea\WS|NxItDp@l;h6d1a,]&Z!VSOL IEB?<9641.,)'$" |v p j c ]WQKD>82+%  }wqke_YS M"G%A'<*6,0/*1%47:=@ CFILPSWZ^aeimquy}|xtplhda]ZVSOLIEB ?<96 4&1+.1,7)='B$H"N TZ`flrx~   &,39?ELRX^ d k q w} "%'*,/147:=@CFI LPSW"Z'^,a1e6i;m@qEuJyO}TX]afjosw|  &+17=BHNTZ`flrx~}/p!cVJ=1%zjZI9)xog_}WkPYIGB5;#4.(" }jXE2 r_L8%wdQ>* mZH5##)/5HR\e nw,=N`q&8K]p  .AT g"z#%&&'''''(&<%O$b#u!  " 5H[n&8J\n~vmcZ PF+<<2L(\m}#1t?fMY[Ki=v/! zjZ)I49>)HR\enw}kYG5#}jXE2    "r#_%L&8&%'''''&%$#w!d Q>*  mZH5#o]L:~)vmcZPF<2(tdTE6& tfYK=u%$#w!d Q>*  mZH5#o]L:~)vmcZPF<2(tdTE6& P\'0 ٽB@@;Z$  TӾVս5R׾Tӽ5NӾPս55a5}L'59/&95 ;%K990123>0123=>0$\ 405"9$\ ݝ9"SCREEN /NIB" !5%9o 1?@% o1?0 0@%9' &䆀1! ܎1?@$09o1?0 ~5@ˌ%9'5Öͧ٦'5Ö̪ &ֆ1! 'XXXX  TTTT 9@@%9 !&##  D &َ "oo 0&~$$&*~& !!!00~XBY STUART WYSS-GALLIFENT (C) SEPTEMBER 1995 FREEWAREVER111996̀̋큆W' X' , % , % "  OJ&!!!Y' .}!'!  X:' \ '  L !!!}!'Q!  X:' J&!! \ & &섽$Z& 턽$ŧ !!Z&J&~0 !!!!! S& !!L% !! !!$0~!!'J&  J& A @ @XX:&SJ& A\&!}| @!}!& 4J&! 1"&)J&섽$! L&섽$3_! !!}!& Z&J&w!!!""X:&#J&!!!"\&!! :섽$\!!!& !!턽$ ~!%#$!'J&9L!!""X:' "\ & 0!90!9!!!!""X:&J&"\ &!! &&J 'J 'LL ' ~`!!!X :& !\ & m!!XX @:& !\& !!!!!!L!&!&Ӿ!섽$̀_A!턾!턽P~!  @ A @XX:'| @ A\*' @'W~*L '*~C~$~ &9 ' &~ ~%`' 0$'$~f$'$~f$'N$~f~K~!!9000|߶߁:&&|ކ0߶ށ:&|݆0!!!!~$ȁ'$ȷ$~f""X:&"\ &'~~2L Z&Z&!&&z&~рԀԀр䀀рр䀀ɀŀȀ䀀ɀŀȁрȀÀɀрŀɀȀŀɁĀ䀀䀀򀀀򀀀 退退.- 1997           | XX Z&J&9        D$ `JZ$ =$$$$O$9!L% !! !!!L% !! !!9̼|lTD4$  $̼|lTD4$  $̼|lTD4$  $̼|lTD4$  $̼|lTD4$  $̼|lTD4$  $̼|lTD4$  $̼|lTD4$  $n̼|lTD4$  $̼|lTD4$  $̼|lTD4$  $̼|lTD4$  $̼|lTD4$  $̼|lTD4$  $̼|lTD4$  $̼|lTD4$  Lv((,@hPfx  0O5@KS`p( 0* ,p0LSEdGF@( D@* $ ~lPp@`] "'3€a@&CQ@ ̀g |~`}<zXxEm@W  j^n 3x`/rq8 !`gp|q@Pp8 $c p`0=A8@P3T, P p`$N @}twn0(`]`z0@0 @Fpd@p@j0՝8I`k0;01F@l`( J @PH@b@<D UAB yۀ $q8{>)@`x 8@ P8Ā ,P P(p 2(@( :@8(PD `prAp P(x`(apc`(3 p@!`PKPT@60f ( 0 (80`E>0Ap `d`T00 (;@P50  (0}@ M0`A 8 r$`<pH`(P@A( A` !$*E@ *P  P B ",@(x@0` D H> 8 @**P0" ( 00c0@B9`0`-`8e9h%9h o[ܐ$$f<ߢ1 (  J`\<C ?\a ql3 P"}~Ma1fcspM`f`Pc10cw϶zOswsvw?7?{?{{{|??;{{y{}g=|vsos{;o{{c{m=ǎχ??ol>l <n|>|88lxxxp00````l```0 < ==|?6.&8"(  D0dGLv=|10:2210:60<RV<'(180,110),R!VB0:C10:ZL$"Enter an area (max. 6 digits) for this circle:":2210:(164,90),60:60:1,1:(0,155)(255,183),,BF:ARV:"BM144,90":ZL$(AR)" m^":2260:2170:1120>T`B30:C180:ZL$" Another - Y / N?":2210:B0>_j2110>ttK$"N":1170>~K$"Y":AR0:1110>1130>C10:ZL$"Now let's draw ovals.":2210>C25:ZL$"X-COORD: ":2210:60:XV?C40:ZL$"Y-COORD: ":2210:60:YV?C55:ZL$"RADIUS: ":2210:60:RV:XR0XR255:B0:C50:ZL$"Radius"(R)" too large. Try again.":2210:1860::1180?B0:C70:ZL$"H-W Ratio: ":2210:M0:60:GV@BąYRG0:B0:C50:ZL$"H-W Factor"(G)" too large for radius"(R)". Try again.":2210:1860::1180@Tμ:(X,Y),R,,G@C10:ZL$"Another?":2210:C25:ZL$" Y/N":2210@⁦2110@K$"Y":1180@K$"N":260@1250@ :**SQUARES AND RECTANGLES**A8:ZL$"ENTER a D L!  Ѐ.ЀЀЀ ,ЀЀЀЀ . ЀЀЀPЅ  Ѐ ,  ЀЍ Ѐ . ,  ЀPЀЀ , ,   ,   !   , !ЀЀЀЀЀ  ]] !pP  !PЀp| !Ѐp ! p !pа , ! ˫ !܀ !̀Ѐ , ! ,쀌 ! !. . ΀      ЀЀЀЀЀЀЀЀЀ   Џ  #bx €"݋B$;DV@(2A7 T,yP71DxGwWDpAV .ߙ 3!z ̈Ssh wa$ #7 '8)l @k`@sS8  Y@uh! ̀!+!V bL@ n@he:pb@p JNb@@bA5  p  Q8d'&$A/(` 9P8faF8q,ot8xGA8<0>@!`@$ H(Aa $H B `!Q 9k3`K>n@?3;vDKA8`؊@  ` " <; @$a<0,<`t`x  @`@ `` @0l0 ( 0 ( `0 0`Pa`0``0 0@ ` @` &` 0  `  @ @LpH@0``0(P0`(`0` `0  @ 0@ LH @I`@ #@‚ D`D@`0 nBD@ 2&@G@E&@@D`@ @@@  Pk)@ Ke'L\Q37\̅JR)` H "@`1c*P{ހ*01c)!IJ"A1cQw\01c -Щ3wٝq\qN7ps}>R}پne6._bߗ(c  B",D=#(` 8];^7':```H,ۀ u1so8`x Xx0<0 @8 8 0`80 70xߜ`P8<<<( 800<0 (ϟp??6$5"*  E=0e=GzL! 800<0 (ϟp?T&!RBJBb/Zrx(%'%g*ZTZ[BbaQ%&&*/Z'rZ'g%O!/ZBbZF%bZX(%%O/!/Z[Bbo&!Z($V&%bZQ('7#srTO/EZT&&!Z($&V/Z(ssrsSJZTEJ61a5:ZcojScvsZsx87Y94O6??EEgZuxsJGojSv6?78x87594O66i99T[AZvquW7JGog7gcZSs87Y95Oc9cic9TgZWXxt5gocZXxssST6ici6????EKZYZZuxtuogZSssuT9cic6i?9?9ZWozZqzsuI6cioici?9Z8859uZWZQsuIcici66EC89889uZWgT6691AEZ98889zZvT6661cTZZ9Z98y5889zZvSoi6669T[ZZZ99X889eo69icAKE8x9Y9V69ic6cT9?979Y8Y78979sy9ieici1c6916AEKZZQZY?9Y9W897y976y7y797ysg979eccE?8X9Ysvsgsyg9sg97y6ysi96c916AEKE?978979vysg9gyg69i96i9Si9ici1AEKE?_W86c969e91i669AKE9ZYZY956Q666166TZ7_959S789;QoiccEZysZ9Z9Y789;Q9669?T[Z7?95g9oe69c1Ci61T[Z[sysZ9Y95g997oe966i9I96T[Z[v?9S97cg9sy97oY9c669ci69?T[Z9vZ97y6ycsycigysycsi;96666I969AKEZ[96_Z9g6ycg9;i66Ci9cT[ZS_Z9;969d6J X'^eF20h d252C! SЬ0;y2vy@ q0:G 0p>< >p F0+P#dy >} I'!d!0c p00b!Q P8@1 Х  p0+/ @ߍ  0  QSTA2   Z {P`8.G:v  P`p0k Xh0ú: Q '^B 0[ {#0-~H,o'`! 0`10{4   7`ka q A;`pp>6 *0 /Ͼ}0`1c <7C$p p0t* [*  И PH tqrOp S*>!?P kqb  `X* 0ؚp Bҥ 1Œ r+ } |p0:7h0 06):I. p0p M0PQp00p60\ 'PHPZnbFА$P`     &H0`pp`PACk0 bp$p@W'0А  spp04iAp q@6H0!>2W  l , _} 0 p |`0pq p^ А ~2@p  pn V @P+0a ? OPrP5@ m iA0 P h  {  VX[ 8E0p0 Yp g0 A!G2 (z 0p@ۊˌߎq,pM rp  0@ @  =P |s/0!`Pap7 P  0|q0:0`0V0    r @\r  (p0Ppa`Hހ@00@5h @A@@v 0uPP{ 0@@@C  + y  ` I  K  0Tr    p`  @` 6 @pc?  @@@0p5p^pp 00Yy|p@A0`(0 00 p0 z @'pа00@@> pg0p`00S `7 P0_@p+p@@@/!0``0,W@z   0.` A@рp0. | 0@P p_ @Y@@ @//s  @  C @@0q- `xp2070y@09?0p p!@A P PQ^`apFp b@QP1~ `pr F0 o p`  ހ@ug p 7hm`0A  T 0 z0 [ 0@@@| xP#p+  @OQ@hZpH4j =w 8?߀{`? 0xl0?n>>00 ?f?>`?=?;`8{? {?`~px?`0?>?`?`?m`>Y`΀p?;??s?7p?7?l`; ? lp? p?p<?0=<?`?0076p?7>׀`}?7 o50|}>~v?`>{?}x/ ??K(<a݀?9> 9?>?8?sp>>\x׀??0~N?|0?0?`?v:|ـ?g?݀o߀ ?8ox?x'?p c 7 ?x`; z=ɀ?a``?0?y?Á=``?pp6~??8 >??;s} ?`9?>37?07x??s`~?=?9?$1?04?<?0 0`3?0po0?0 7?? >? 68`>x>_/ 0?0π088?  ?p80?``?>p>7?<>?0>?080g>??p ?fpxxf7~<?>f0`<$80> `|\  p08C<1>c`>A07`e`p`3007p7`7p 7p ƒ0`[`0;=`?o;= ?4wWcacca              `<?<8;<?88;8;8;8?88>0>> >8>   x<x|:# K0kRbX'<x|:  !#%')*,-/01235678:;=>?@ABCGLOOMA*1ASMuNIBSHOW BASREADGLOMBASSPACED BAS VIRUS BAS GLOOM2 BIN &NIBLOADRBIN`SPACED BIN 3WISEMENNIBBEN? NIBNBIGGAP NIBTCALVIN NIB"NUM01 NIB$ NUM02 NIB&NUM03 NIB(NUM04 NIB+]PINE NIB.TWISTED NIB4GLOOMT*1TXT9MVIRUS TXT<| MppxppP@@3`l`&` Aj`80fp ࣦ $+M uM Fgp bL '((TlA نq2m@01X6n@!0 ( pq`C0:Po BP(HH(%"@0$@,`@S!  @H@x0@<1Y:gu03 fJ"D0H(` (P@(P(DH(P   @T@pp$J @<'B(  (0n~Uoop9x\$n!(]=8|^A d I B(@0 D ` 0 ((_wo_D<).I `00 0@00 C0A @ DD%x@@AdWA!p hHtq}`@` \~x#@ @`1B(,0``1Du LB$~'p0RAI@HL`A0A@bA0B$@0@@` F   @ px\`C`@̅d@ /ﻠD`IG \q H`ǂ$(0D t1 (`%_$# T΀@H 9I2˕P † $ @BHBCO ` !JRd0J` ;@  0`\0 ߞgxf0 91"%@`h0 0F0$`{߃ 9= {JRdo@0 `pB@H@ 0&q2Bq4!2 1!> @` x<\q h ( n nxq0P8D ,LD  "@" :P   @ @@PHbj<??x ? ?6>0 `?h89   ;8191s=qqaqp;g0{3s{{asscs;3;323s?s? 333sWs?>qq0 < <|?6.&8"(  H0hHM$" A="(Z)"@":2210:C55:ZL$" SIN(A)=a/b=":2210:C70:ZL$" "L$:2210:C85:ZL$" a="HL$:2210:1860:U55:18504bC55:ZL$" COS(A)=c/b=":22104lZ90"BM8,70"Z$(48)4vZ90B0:C70:ZL$" "LC$:22104C85:ZL$" c=":22105-Z90"BM8,85"Z$(48):1860:1930:670:6605TZL$LD$:2260:1860:1930:6705B0:C145:ZL$" Another?":2210:C160::ZL$" Y/N ":2210521105K$"N":7205K$"Y":5605Ɓ6806м:C10:ZL$"Anywhere any size (almost)!":221066C25:ZL$"ENTER X (>=10):":2210:60:XV6iC40:ZL$"ENTER Y (max. 180):":2210:60:YV6C55:ZL$"Base angle (max. 85):":2210:60:ZV:AZ57.295779516C70:ZL$"Enter hypotenuse:":2210:60:HV7:YH(A)0XH(A)247B0:C45:ZL$"Won't fit screen. Try hypotenuse shorter than "(H)" with Y="(Y)" and angle="(Z)"@.":2210:1860::730:::1890:1900:1910:19807 Y96XH(A)128B0:C115:8207Y96XH(A)128B150:C115:8208! Y Oݩڐڼ쩬ʚ vT  ˮ ˩ ܬ۬vT  xຼ ڼvT  鉼يvT 𽘨 e@Иx ؚivT  ɉxvT  xge@ xɇxvT м ˘zɋvT ੠Эe@܇ye@ ͩvxye@ge@ޫvye@ vyzye@ vT캘vT e@𭾺vT vT vT xvT ʇe@ڇvT e@e@ vT  e@ ܺ 釉 vT ʚxe@  vT ɇe@e@vTvT e@Рe@vT vT vT ye@୬ vT e@e@e@ܽvT v|e@zye@|ڋvT xڗge@۩gxe@ yxT xvTى }vT ۚ ˚e@ʚ ˩ ژvT  Ωe@찼 e@ vT 찹vT ۫e@˯ vT ੫ܘe@ T e@ e ʼvP vP  e vPe e vPvPvPvPe e xvP ىvP e  vPɇe vPe ڝvPe vP˩```ښ`ˇ`маv `vg g pੇڇ xޭ x x멠x 释 ˭ x x x ʽ   ژЩ ʚ 褐ښ     𹉭 ژ   x ه ܺ~Ǎ ܇꾭 xx v{zvz vp vpబg g v i v ޘvVИvPvP vP}}S~0Ag@/no@1ПS@݀:> @5q#x@ c8z4@x u<@} @@ ƈ@ y|;@4P<@`U@@@@@@| 3 `#ސ}o `9@ng?! O9({@ d  w kt :0x{`  / ?@@+Ā; H@;tW:7{@s |   ~q~. r  U  @} ~l< q8 } =@@@y@@@@>@Х@/f@o%{p pp `2g@(@ Ȁ C@ 3  Ԑ496t}  CQ"p̀Pȟ@pA`@@`0Ap@?H^p_dL?H x>< d>x7ws l 8  |] @@ׁ ߿ߛ?????  $&462 )-,%E0eK+O $&462 )-,%E0eK+ a ) X{# | ºO@R Ak@ ~ 4[aG+}]~n  o"2><>??Oi3LE0`YUV$@U]_ls #Y`To Ky v ˩`vv 멯 ` ܫv ܷ`ͩ `캽ɬv ٺ` ˨` 멭` ` x`𺽠 ʸvȾ`vܺv ` v `˫ ߘv ` vкv v ه`ܺ `˩`v `;` ܇`ʚv v ˩v vɇ`v `ܾ٫ `v ``кɇ`Щ``v v ژv vvk j v˩jܺv ˩jܺv˩k˩k v ʐ혐  Ы ڛްЯ ٬ʘˠЇp м x  ͠  p xЬ иʘp ˯  ܺ  ۩ ˩ Щ    μЫ ܼ  ˠ @@ Gbww|?@  : po  = . :?@c@?ڀ9rc w@ ǀ 8 ( @ |@$;y^=w߼- 10<o b{.8 @#@= xn3? G@@ P@@x@@   [@@ @Xj  5@  A>@ @ < @  t @@ ! @ A @3031E@g`@ ny0߀?@ ".}4`@@2` @ /`q 8930o@8 cY@5><gI[I@vWe `sfw O0&(ĀP;wÀs&Pȿ??????x~~~}===}>>||```?0?8~8?x???8xx000  )-,%$&462Ck0ckG mKy TwVxɰ @sp@p!p.0pPp 0 0P^ g0Gp00@0v4Qp_ 0$M R0 0S  sP>@0 !j g ` p 0 0A vP s=  K01 P 0O 0 0/ R 0`@0 0@?a@p0 0C0] 0`0p0l_0BP @0P0P@ 1!B, !0 0&мJ  0C0 .#@ 10a/@`0O021@? 0P07 0 00` O0 .2V02 2`B0:!S15` 00 R  X @c!0pZ q @ 40&10rsc!F cPm`cqp 00c `Ƕ?`# g@rp`0!a05o0 1  c0 0o ||p`npP1 A `Hu 000 0c0p% cp PrA _ `O; @70!c`}| p 7!0!2c ~} p,s< 1@p!06 0# 6Z5@ %7Q0L@V s0M1!q0 0   !;010$ 6 #  @ 10p'1 i `  ``<`qpq 0|`  =p0a  +-C 00p p{6 n  G 060P#S`V&!@ /p 8A` 0L l 6Pa < `01`` j 006  # 2{ p`/ ~`.  {p  /   P@S 0`010&?+Fd0p!0 @0  _ @P`=0԰PpP aQp{0460G4|0'a ng 1 c `00|\ 60|  q   0C 0Po _ <0  г 01  p0# @W07p0Vxvx @@#`߿` 0s8<@ `(o(8 ``; 3ǀ_k?[_0`p7o?-7' # P >p> pc0}8~n>`>`` (`7?x` 0 o0; LooX<x@ x`0_({ 0`xe `A@xA``0 ~` }58 ?@``g(P{ ?{ w g+7À6 26Ϥۆ?@g `g@>0oOo)8a8 l?(~b`l090p}7w{&?6q 7o ?ٱ>}>?N` ?>p=|`l`}ǟ= q`y@۱>y|= 0   06f|fv nx`amsl sl<`n8wA0~p7<00xpf{ x${ 0`|p /_`?ǀp? ;h`?p~x6sw'7  V > #| 8`X` 1g30c@`qC0 `3<{8w,w0<<? 3 0`` +À ``€x0pCW 0x&o`$`?>?߿w_?~w߾|||<||| x|x|x|p0|<<x<<888888008x8888x080000880x0x80h0x0x0x8pp0p8p` 8xpxxpppppp<`=?}p ?p>ppp*ߠ;w@L1$>zvh< `{4_Wj<8~@ϸ Ap@ zXq>Hp@"W~ n΍{p@-m~@GG @kF0^#@Bk}@}- &_5VR׺߀`P H ~$0`<x_cs@(Id|~O@0gt7@>@70 G@G_`W`p{@2F@h+t)J x#  Z!A@1@@wd @@!@ؠ`8  D@^DS  OVCփ@ >,N! @N Xaoe@F؅ ]6l}@n0Bdj@8[?*`!l@@@*JP  @4" X8`;pH ߑ3c8.!) -@ Sw|2>v6M@ P Ox@`@PY@8 0)ݩC qF@QDzy@C0  5.1f(s  {@?߯??000000000000000000000000`0`0`0`0`0`0`0`0`0000000000000000 0 0 0 00000000000`0`000000 0000`000000000000000000000000`0`0`0`0000000000 0 00000 >6700<<<<==??=9;??07>?====??????X?;???????????????????`?`?``?``>g?x7>߹.>{>;???=?75>????>>>>?0vx$&462 )-,%G0gN=S0??`?`?``?``>g?x7>߹.>{>;???=?75>????>>>>?05 uv'(r(rx(%(xrx(x(''X('rx'R(rx'rrrux(x(%(rx'(x'(x'W%'xrR''(x'(x('rRx('Rvrrx(x(%(%Rrx(W(x(%(x&bg(%'('Z'(xXZ'(xrRZ*b'zWZrZx(xR(%(x(Z*R%rzrZ'('W$Z'(%'%Z%'(%'(X$ZrW(rRv(X%(x'rRxrZvrE%rrurRjZ(Z*Rxr('(Z%'g(xrEZ'(x($%(xrR'x(x'ZRWrx(vrxrErx$%(x(%(''g('(Z*Rrg'g%'('('$x(x(%(xr*Z(x'Z*RrxZRv'(&V%'x('%ux(x(%(xZ*Z(xrxrZ''erRvx('rX(%'Rvg&x*Z'Z%'('g('RXx(%ZRX('jZRjZVx*Z'Z'rrvx'XZx%(%(x(*ZrZg(*Z'ZRg'rgvrXXx%Z(rR('*ZRZRZ'Z%g'vvZ'('W(x'%Z(*Z'Z%vx(xX%x('('rWr%%Z%ZRvrZ/_W('(rWxr(x'%%%(*Z%v'E/V(rxrx(x%(x(x(rx'(xrZRZ(xrZ%dRxrQ'_brx'(x(%''x'*ZR'x(&%ZRJ'Z%rxrrXx(xrx'g%*Rx(&*Z%$J'/EJ%rx'X(%xrv*ZRZ'(&Z$J'/ExrW'%*ZRZx&Z%bJ'g/Eu(Rx(%xr(xrRZRg&%RbJ'g/Eru(X'Xxr''('%*ZRg&Z&$vr_'('(!Rux(%x(r'%bZ&$vrZ'r('x(Xrhx(r('ZRZRrbobRbJ'gx''W'jg(h(xrrbob[ZRbrJ'aJZ('('r'W&bFZRZRrboZRobrEqJZ('x(rx(!Rux(RZRx$ZRZ'&&'Ex'r(!Rr%(rxrZRrbobZTZ&'($Z$rx'(x(x!Z%'R'Bg'robBbE('($T('%rxrr!ZRZ(u*ZRgBruvrobZE&$Zbx!AZ(x('rRx('R%qR'g$'Z*Z'g/%&$ZbrrZRrrq%'xu!Z%qR'g$%G'ZRvrZRZBbRb$ZrRZZXZRrRW(rR%*ZRjRBRvrzZRvrZRbe&*_$Z'(x%x'ZXZZXx'g'!%('%!Z%*ZRZ$%'g'W&%ZebZ%$Z'RZRrzRZWvrq%('%!u%E'g%ZRb%&V*REx%r('gvrqRru!QZRuzZRb%%&*R&RZ%$Z'ZRZR(%x&vrvr(x('R'%u%&&%Zboe*Z%$Z'ZRr('&vrg!(x('%!ZRZRrWWRobobRZRJZRxZRZ'robgrrvru!Z*ZrWZZRobRobZ%$Z[W&ZXZRx'&&g!'!(x'g'%%uobob%KZWZRb*Z'&'g'/&rx'g!Z%rZXob%%EJZ&(X(%u&'gbrrbax'g!ZRW'&%bXxZV&$TbjZRboh(*ZRrgbrq'&'&!rvqZ%rRbe&(xTZJF$*REJZTbZV&&ZRrgbrbrbvrb'Wg%&%bJZJZJZBZ%EJZRBbbabhx('&rbrbrbg&(Rg'%&V&(xT%EJZRF&&!&x'&rg&v&(RbrV%u%EBT$&&ZRb&vra&rbo(R'%bjZzZRbQAEJRF&/bobebrgbbx(!Z'RjRrvV*ZRbTTRBbobobZba!(rbvox(rV&*Rv'%&!AE$&&&a(&񏅧'(x(%bjRvrVZRb&/Bba&Rb'/rx(%jRg%&!bABbabobQ(x(&!&rx/'(%jVrbobo$&&obA!&rg'W/xRvrVXZV*ZRo&!/&/Rbob!(x$'!bv'%/'g'(%&&!ba&/AE&ob!'AO'!bvrRrbWXhZRv&bobbRa!ob!(xA'&!'g&'%$%(%Rg&rbob&!bAKAE(HxEAO&'g&!&''%$%Rrrvrb!&!baboboAEAE!EtTbvrb&&''RBRWRrb'&!!abao&/AEKEIE(xEGT_AO&'g&(h&'RBRWRrv&g&&!&!baYTYET[(xXT_burbhbx(X%rW'&!vra&!&!beEEAEAT[EA%'&(XRu'&rbobo&&&TTYAEEAO%'&vxXx%'%'&boba&!abTTTrEJZRbrbxRRrW'a(&!/babEIZ[EI[TrEJZW/AE&rd%x%(x%'Rr(&&!b&bEZEIT'$TAE&rB'W%'W'x&bdTEBrEOJ$/E&rBRuRrW'!(x(+ZbeEKTvrOTRag$RW'!(x(+ZRbETg$ZRABT!b%'Rq('r{E&&ET!&rZ$JR!%'rx(''$ZV&$TIBdbr$%Z(%''('('gRrZV&EJZYTBrZR%/RrxrrrFrRrZ_bdT[ZJZYT!$'$*RRW'('(x'(rRrZ_&T[B$'g'$*R(%'(r'('RvrZREZ[!$g'$(%'xr'%&*Z[E%ET!/$g$%(%rxrvt*Z[%KZ[T!/BV'g$&%W''gJZ%ZT&!RBbBbRRvrvrv[Z[Z[Bb!$bJRbjRx(x%'g'&rZTZZ[Z[ZT&!RBJBb/Zrx(%'%g*ZTZ[BbaQ%&&*/Z'rZ'g%O!/ZBbZF%bZX(%%O/!/Z[Bbo&!Z($V&%bZQ('7#srTO/EZT&&!Z($&V/Z(ssrsSJZTEJ61a5:ZcojScvsZsx87Y94O6??EEgZuxsJGojSv6?78x87594O66i99T[AZvquW7JGog7gcZSs87Y95Oc9cic9TgZWXxt5gocZXxssST6ici6????EKZYZZuxtuogZSssuT9cic6i?9?9ZWozZqzsuI6cioici?9Z8859uZWZQsuIcici66EC89889uZWgT6691AEZ98889zZvT6661cTZZ9Z98y5889zZvSoi6669T[ZZZ99X889eo69icAKE8x9Y9V69ic6cT9?979Y8Y78979sy9ieici1c6916AEKZZQZY?9Y9W897y976y7y797ysg979eccE?8X9Ysvsgsyg9sg97y6ysi96c916AEKE?978979vysg9gyg69i96i9Si9ici1AEKE?_W86c969e91i669AKE9ZYZY956Q666166TZ7_959S789;QoiccEZysZ9Z9Y789;Q9669?T[Z7?95g9oe69c1Ci61T[Z[sysZ9Y95g997oe966i9I96T[Z[v?9S97cg9sy97oY9c669ci69?T[Z9vZ97y6ycsycigysycsi;96666I969AKEZ[96_Z9g6ycg9;i66Ci9cT[ZS_Z9;969d6i9?TZWy9977ys9Y96idci9sTZZYysy1ZSysys77;9Sc59Id6ysy?TZ779sy77?9;;Y95TF79AEgWy79SCI9s9TZSiZY7g99;97?ZSy6OSgYg96i96cS4g9AKEsy1Z9Sg9Vy9cicc9i96Y94gAKTZ719QZVsi66SgTZy8Ey9sZ7AKTZg9ZZY7AKE8EZ?oeyAKE6EZYAKT[Z9Z?oZY9AKTZZ8E8S?ZYAEES99AEZ9?EE9;99AEZ9EZ89859?T[9Ey?ZYE8899ZYZ9AEZ98Vsy789c[YAEKZV9sZy?X888iceAKEKZ9Yg9?Z98989ceE798Xvxy9ieT[Z[997y?Z7e9898966[AKEKZ[979?ZE9iSY5s6[AT9Z?E58oeEKE9?9E95vs889T[ZEY988VT[SS888x9;T[95E5x98s;[AE959xvx89x;T[ZY5sg9;[AT[9S9SgevsT[9X88Y959ei95T[Z98S9S959[AT[Z9F959X8895Eh95Y8x96y9[AKE9S9g97ZAKES9V89g9g97AKE9c96y9g96s9cZAEKZZi96i9ciccy96y9gi96YEKZZ6i69696i9i969gi696s96y6ZT[Zcic69c9i969i96yc96y9gy96sg9ceEZ6i6ci6cg69c6s9gieYi9c9i9cicv69cgi6g9ce[Yci9696v6gcg6Z96c9cvYcicieceeoo߀ }?p< ;~? 7|ã|p π.t&< : pq~@ gW,O ݨ  [ZP`l ß|@x{ 㓽,?;  ~o>E7Ϥu1O  51P an Pb@ _@&Ā`0 `m6G3qTl ?O=F\H_q0 `qK­@}(I~ fg 'C`<^R gǿR  9`|0? m }~g3]@ 3>?}U  =w tD׶ j?l_ !( Հ ݿ="Hǡ tŀ@@ r_`hu|># oϿ$ #˄ Sˠ p 7Lˤ9F ;{7*s8|٧h B@wy `6^`_̖\ @7;qk5?x^?5?`<p{x;xGp `m A <=ؽ@_ @>d/ڜ`>&`_>wN7?a@z w t.`WE`͂ <(`n@+@??́ 1@ 8x^i@hmTHs8<+  Pz 8H}>RxAgT7:?`|9 C.~<8$a8 ~A@|$|q> Y9 (|#`(qo}8Z@_h`H %}7 @/=v? }?@0?gE8@|:?p?}?ă$SAW8&<0!?2,?pxπ" <@PsA E- > a? ;߿wP #\2| @?[AO\, P ?)?1{?<s @{k}'I# $ hAAI3 'A 'zd@?@ xQC3 yQ?~wF` 9.4> o0@">L@ #iN룏ՏMgF<@ ۓ.o~  :p n ?Mg~ ?ߺHH?>? ?9ze> .? F?0 7wk QQCㇾ< 285  J 2`/Jq# 7?|h |$ ۽\'hxpw l؄l $P ?|# 3u? D08>z a ) X{# | ºO@R Ak@ ~ 4[aG+}]~n  o"2><>??Oi3LE0`YUV$@U]_ls #Y`To_}` @P߃? =@ŀ$@6@mUCbC l%OѸR__U_UP^< ߃X0~UMU]uUUT , UA` UP WU`< 1%Q p?WU^_וUx J }K@1ϳWU]T͟UP W>cg׵U}WVlUT@ 90?U9c5UWUWUU  {וwuUՅ\U[]]׽U]@U@ cU e4?{UU^TURV(f:}`Um]U`  QXU|USUTUX`}e5]`XyݖܷuU{UTUX(6KV7} 9Z5tUXF |;c{UT+ UX;W^XUTf0 5U]Uk{pu7uI7U]T@\ UW{pu[U]U@ ` UWUuaכ~UU]uS]]p@pI`UuWc'UwmBUW>/[OU@U UupW'uU X@` UaU>UU_UQUB UWՎוUt UV Ue_87kq_uU^]UP Uzf7|u X=USUU Uc[W?\YmT Uu]UUV UV5WT>p~^RU]UUUP U[ڼ}`>^GUW;W`ULp}UYVUX80\UWs}w{]UuUY UV}oUXRal( Uu{UWPD UxuwU UiT՝UX`Uh}7UY UiÁ{UWUWU; USsU_Un\UQςU_UW`S{~}yUV?WU~y_U`W~sPU] ?΃_w~}^{U _~߻WUV` G_[We{WuUc O][ݝ_}Ud]UW֍wU7)`!7]UW[U{UV _U_U_aU @=|_UWX~U]X  UWm۷UЎ 9UTmPU] $sUWaU]UHUY_U`BUUeU`#GUuU`G߅/_PTU]U` @oUEeU_U`B~ EWkUWU]U`?UVUcU}]U`!>UUWU]Uc_Um]Uu`t{]UuUUWUAWUM]Uu`p??UuU]UXSU]UEgu~ UeUXUUmUgu?cVcUPUEUC}m ?VcUP aSF= mA[` @v3 e@ ?PP {    LБ(h@ *UZ $**U: Q* Tʀ T* $LБ0@   cܬcоl=y矿/>ȿU<|~gpM=^0țopoSϛv?<0`a& ?Sߋ}?#O|v7݀4s?(y@s?!=tŝ;6'm꾒l 1~ ^<(Fێd~ü`Ӡs ~;]qOv2{~qfqo9;95 ^369{}O|uΰuO|eޜ>9|-8S ϸ|?n7t&jy'Q0|0>opKa?] 3wf\_B@?y`o@oNw0g9~}7׼~qߝ@?O/?{c`߾f7כާ 9S6~gy >~r]׿2cz8bxÿBsw{x{ۿwhvc|d`?A ?l lpGvlD vc`xpv0 03> ٘>͠?y l3?=p` (  8999999998888_8?}??????????????????ߏ??????ǰ??????߇?l?x?0|?0??~>yz{9}?;999`9`9?f?g?ywy{s

,Xp1 2_rPp1?  `c^`'@!i0q 06) u  Q ##P(v}?Vhp@cP׷pqzSq0 G0 p0  nc  .p068  0 *- -0eF ;`p0Xp:&000Y>0-70@pP0q=45R0@p }#`?0`7  0p0p0 Z=^Gsu? _pёO  @!! ''o1sol 17op0 p=u0 bP Pd2Mpzbep0B 0 S@| l0 ]j:/k Q^\Pp0[ p,Q# 1u@DZ1mVq`1~? pP0+#pq ilP7  0ЄpE-0_6r?0@a 0pJ8%=c)uda 09p106A5! B0q@0V0I@Z|?@a Ppapp7 ,`uS 0#Q0e=0}0Z0p0&`6p8 hsP0)atmB0Nap8 O  $@P0!/A-L  n0pI V:g6100! ? rd0 ?c00? 00  (0 0 =q000v'``#Yd0g.`0 @0q0R0C*~=0` [1r0p$Sp<rB 4o6|0ï{1011c`0pp p9po70q?0,=00p  -01}# `1hSR^m00pF [ 0^p1PZ@8  G'dp0cpW] #028n'0 q `0:p61 0obg A^m!u0 0pa0t10`%p0  _# k100En6p0^ p02%uar60xcKz1q 00b@;!/!0J0O`&#CMp0p <) c>|(s60`0{>0AڊG7STC > ~ 0[ 0 1~uEap0?=_01 {p46Pq ;p00p01p0pb 1M0C1c1`au#0p?C| [p0pK![67+zRIa'!p0#20pa# s0>%s0p=y10%~>0rs0;sPB|d0/0 pZۀ׌?pp0B 11sғF0 Lzbmcj80004so޽b0p900 p&$ cQ1Q 4p0qI^ pS0izph  VՋ 0QKpBxa0*@0p sP? b?{/0p2Psj Aqn01= `1 p0PuijpRP.O 0r? `o0poA cp/01Cp?0q 072yJ=qpp121q7210` R 0n%< pQ0q\: |0jAq0pp>? jGS1S^R LА;:!g0p0#P C H0>A8  `p6~&H@*g b2 X7ps2ъ,O ' p=T/ p.Ws00KQ/A~у|@1/0xjQ&Bxs1%7Ѵ0ʇh?rp102p p0p%bRqMA?qrB 1  12 b p$ 00p΁-#;,p>? bp1 6Gr0b1MobP1o*Z 0CM!1 @0& cuo!8`000# O00VxO= k k9p1S0#1 )21 p@4EpA0pzH F#-1 ?0cH00pC!'\ p0pv @4`# ?1 ơSp0c07A )4s01#P1@<0\p0;1>M-N0I <Sq1n ;?'?te%1;0y_ă5061PLRnL(h1E4y0u=8-/& @`0>p01>!+0p 0060ibNpQ  p0q'@2A$e`?gAv uNg J 9P0O >r?41  7o! 676%@qQ0:!?G0g  qdqSpJ0p`>T A7 pdH?Pp\] %c70480n>  d@'0 r1W F~m>0. `hm qGb0pgp{0T+6߰01q10l01cs`0p06MSap j7<vMq0Rd'a x=p_b'O 'Q)^[Ypp0u`g 0?tz20 7 0p0<'ǥ8106 pc~p/Wb q p?=L ia :0@7= a[aOz P s4ap0piQ0 l29 0p?b11Lx m7 Vx'Th XxLeFF4iXvK#E{ @OX F艀/@3y`00``s`>^^ `׀0s410 k3v  x{`PP=ۗ|@@we |P |`D`@9}0`0 ={` 0` |0} _D<00  ` 8 =|Lox ?0>  x1~`? {`x?`o 6?`1 <0`xW?`>?L x0>aP`nxx 6~tG xyߞ0|{ f ~xwz=n>|0z`wWa;{`= =~=Q0p>l?!8(q?{ `|1|` } |}`?Ycz`|0cc`.0`87``?0 ~00`3`\x`g@` `2G}````|`|7X 8`   1`7?(/6,x]0 pa6@ 0 C`|`?``o0f?C`6 ? 00>ot =`0|xo_<`8c?~0`` ~߀`~' `@n0`w p `{ |?0``~A@ `08o@?`  xOp70>~pߌ\0 08`>݁0 0l< 1` 0 }W`0ـ <?  00` .;`>`N> C 0xMd~ ` `| ^??7`1`80 }4= _8?9|0t.6om`sx`0`;{0 l Ӿ>< ?>?0o>` ;?>090`~`606` `?8o0`g7` 0{00vޘ `>   \ ? 00w`?P ?|} ?7`w"= ``}`?8?>=._x0??0?? 0L` `~??``g`073`<c_ ~=a}>  u >`03 lq0 >`00a?c 3 ? ``<310>0 60 3Wp6 8=`?  3ߛ>0=o`0`c~xy` L`0` f?81xxp~x@-|0` ~|~1?=m D ?~z!$o>}?{s?;_???_ }}f }yn}l} ylll}}}8 }8} }9| {|9| 9xpp{``?p??|?9|>|?|???????|;?|~x?|~|?>p?p?x?0?0?0?|8??0<3w<?<?|?|?0;|?|?wp0`?||?pp0?x??x0?p?x;`p0?fp0f|p?lppl8}`0?<=`<9oc?`7``øa`30` w`@`Ax/81pVx T0taPg w`@`Ax/81pVx 1 B$A-@(b@*B c @(`B @ *@HaDH 2X@@P Ҡ5ABULB "P@! @PE0la#:@   0m ("   @ UC 0 PU@`!QxQ@RH @" C0@,N@@` @" ! $@0T `@q(F  @    0lXDAU"(F @ 0l   U@UD`P]D@ @U(U@BD`UEUPRUUPFw}޿Ǐgp4;> ~ / _@q??O_/Ӈ/{_ Md=W0߿ه=K/^3l3`8`hc`-Ep8|<700H ;p  /`;`~PD D(D0z?w/؏rxh=_?h{?}po`G(ppa8B README.TXT ************************ * The Gloom 3D project * ************************ I hope making a subdirectory for Gloom will not be considered abuse of this archive. But, it's the only way I can see that will help this little experiment. It is my hope in putting all the data about this program here, that it will continue to be expanded upon and eventually turned into a game. As of now, I consider Gloom to be 'Openware'. The sources and documentation for this program are freely available so that any programmer may expand on them to make it a better program. Any revisions to the code are requested to be added back to this archive so that others can see how things are progressing and so that other programmers can also expand on these new additions. Here is the breakdown of what I've uploaded here; GLOOM.BIN The executable demo - actually 3 files combined into one (Gloom the program, the MAP.BIN file, and RADAR.BIN) GLOOM.ASM The EDTASM assembly source code for Gloom. MAP.BAS A simple basic editor for the map. MAP.BIN The binary MAP file used by the Gloom demo. MAKETABL.BAS The program I used to generate the RADAR table. RADAR.BIN The binary RADAR file used by the Gloom demo. LSAVEM.BAS basic utility I use to save binary files that load into high memory. ------------------------------------------------------------------------------- MAP.BAS is a simple basic program to edit the MAP file. It automatically loads MAP.BIN, re-organizes it as a 2D display on the screen, and lets you edit and re-save it. Use U,H,K and N to move the cursor on the screen. The J key toggles erase/draw modes. Pressing Q exits the editor and saves the file back to disk. The SPACEBAR lets you choose colors - after pressing space, type two numbers from 0-15, separated by commas and then press ENTER. The two numbers represent the two alternating colors that are used to simulate the more than 16 colors of the walls. The map is stored from $60000 to $63FFF. Each square on the map is stored as two bytes. The second byte is the color of the location, and the first byte is a code representing the minimum distance between that point and the closest wall (0 to 15), OR 128 ($80) if there is a wall on that square. (Expanded versions of this map editor will have to be created in order to accomodate larger dimension maps. It currently only allows 128x64 sized maps which are too small to be useful for a game) ------------------------------------------------------------------------------- MAKETABL.BAS simply creates a bunch of precalculated numbers that Gloom uses. The whole table is only there to speed up execution of the program. It would run tremendously slower if it had to calculate these numbers in real time. The table goes into memory locations $00000 to $17FFF. Gloom actually generates the second half of this table, making the whole table go from $00000 to $2FFFF. It's simply 512 sequences of 96x2 entry subtables that represent relative coordinates from the center point (player's point of view). Each sub-table contains 96 entries of two 16 bit words, one for X and one for Y. This table is used by Gloom to scan a pie slice of the map that is immediately in front of the player. ------------------------------------------------------------------------------- GLOOM.ASM is the source for the program itself. It assembles into less than 1K of code at the moment, $0E00 to $1148. All the program does is: A- RADAR SCAN - Continually scan a pie slice of the map directly in front of the player's field of view. B- Decode the scanned map into a table of 'what to draw' for the graphics routine. C- BAR GRAPH - Draw the graphics that are stored in this table onto the screen. D- Read the keyboard, and update your speed and heading as the key commands dictate. E- do it all again. Techniques are used to eliminate as many unneccessary CPU actions as possible: 1- Open spaces on the map have a number coded into them, this number tells the RADAR scanner to skip over parts of it's scan. 2- The graphics to be displayed are simplified into a 256 byte table. 3- The graphics TO BE displayed are compared to what IS displayed and only the differences are updated on the screen. 4- The video is set to 256 bytes per line mode, which simplifies calculating coordinates of the graphics on-screen. Here are some notes about future expandability of Gloom. - The program currently draws one copy of the screen, but it's probable that it will be necessary to draw two copies of the screen in memory to accomodate adding bit-mapped enemies to the game. Luckily, Gloom uses the 256 bytes per line mode, and only draws onto 128 of these bytes. It's simple to change it to use two screens side by side and only display one of them at a time. - The map size is currently programmed to be 128x64. Making the map larger will require a bit of extra program logic to switch parts of the map in and out of active memory. - Interaction with the environment (open/closing doors, pressing switches, etc...) is possible to add. Since the map is re-read and redrawn on the screen continually, changing the data in the map will immediately reflect on the screen. (Example; opening a door can be as easy as erasing a wall from the map data.) - Incorporating variable wall, floor and ceiling heights is a bit of a problem without slowing down the RADAR scanner significantly, but it ought to be possible. The problem with adding variable wall heights is that if a short wall is in front of you, the scanner has to keep scanning what's BEHIND that wall because it's possible that there is a taller wall behind it. The RADAR scanner is already one of the biggest slow-downs in Gloom. ------------------------------------------------------------------------------- That's all for now. Good luck! I hope to see something good turn out from this demo. Unfortunately, I do not have the free time to pursue this any further. It's hoped that some of the programmers in the CoCo community are interested in making further developments in this project and eventually turning it into a good game - be it like Doom, or Dungeons of Daggorath - it's bound to be something fantastic. John Kowalski (Sock Master) sock@axess.com http://www.axess.com/twilight/sock/ h - it's bound to be something fantastic. John Kowalski (Sock Master) sock@axess.com The rain beat against the window panes as I sat in my dark red leather upholstered Sleepy-Man chair. The weather at 221B Baker Street had been miserable for days, since a frontal system had parked itself above our street. The rest of London was suffering from extreme heat and sun, but not Baker Street. The deluge continued to pour out of the sky, filling the gutters with swift moving water, and coating the streets, buildings, and windows. The sound of the rain penetrated even the double-hung windows and thick curtains, closed against the night. I looked across at my companion, Holmes, who sat in a colorful Exhaust-i-Male chair, quite out of character for him, but on loan since his less pretentious one was out for cleaning due to rain damage. He sat, buried in thought in the book he was writing, as I sat, deeply concentrating on my choice of reading. I had been reading about the adventures of Miss Maple, written by a crime writer named Agatha Kristy. The colorful exploits of Miss Maple were a stark contrast against the bitter weather outside our dwelling. Holmes shift slightly in his chair, sighed deeply, and put his pen down. "I am done," he said, simply. I stared at him for a few seconds, my mind reeling at this revelation. He had for months been working on a whole series of books about crime, stunning masterpieces, the "final word" on the subject. "An achievement," I said. "Yes, all six volumes are now complete." "Six?" my voice registered surprise. "It was supposed to be a trilogy!" "Yes, a double trilogy." "My dear Holmes, a six part work, the very essence of crime, completed! It is too much to believe!" "I agree. There will never be another set like it." "Have you decided on their titles?" "Yes, I just just completed penning Death by Cable: A Comprehensive Look at Brain Atrophy by Television. Did you know that you can determine what programs a person was watching by the way the brain shriveled?" I was taken aback by this, but he continued. "And I've finished Death by Cable: On the Strangulation Marks caused by Wire. I have cataloged every bruise, sore, and line found on a neck, depending on what wire was used to kill the victim. Whether two conductor, three conductor, three-way switch wire, coax, keyboard, parallel-" "Enough!" I cried. "-Twisted pair, 75 ohm, 52 ohm, 22 gauge solid core, 22 gauge stranded-" "Holmes, please!" "Ladder line, mouse cable, CoCo 3 joystick...Watson? Watson?" I had put my fingers in my ears, and seeing him waving at me, removed them. "Holmes," I said quietly, "It's very impressive. What are the other books?" "Peripheral Impalements," he held up another thick manuscript, "detailing every computer accessory and the wounds left when someone is stabbed by one. Imagine observing a fleshy opening upon a victim and deducing that a DMP-105 tractor feed was used to cause death!" "Incredible," I murmured, awestruck by the sheer scope of his writing. "And finally this!" He triumphantly held a fourth volume up. "Every microbe, worm, trojan horse, macro, and virus for computers known to man. I have cataloged everything from Michelangelo to Demon to Cooper!" "Wasn't that part of a case you just finished?" I asked. "Yes, Watson. The death of C. Frederick D. Michaels. Imagine, being driven insane by a computer virus, and taking your own life!" "Holmes! You never told me how that ended!" "I didn't? I didn't? Well, it was all rather easy actually. Mr. CFD Michaels was being blackmailed. I was asked to look into the matter, which I did. Unfortunately, before I was able to uncover the blackmailer, Mr. CFD Michaels killed himself, driven from his senses by a dreaded XeroVirus on his computer, a completely new type that I had never seen. Lestrade, of course, dropped the investigation since nothing could be determined now that the victim was dead. Since then, I have identified the killer!" "The killer? The man took his own life!" "Ah, Watson, I will lay at his feet both blackmail and murder. The man was so driven to despair as the virus destroyed his financial empire and family wealth, that he killed himself. I will blame the killer, yes, killer!" "You know who it is?" "I suspect, Watson, I suspect. But my trap is not quite complete. Like a spider that spins a web around its prey, I am almost done, but alas, I am out of silk." He buried his head in his hands and relapsed into deep thought. I excused myself quietly, closed the door behind me, and headed out to pay a call on a patient. I so enjoyed the sun once I'd left Baker Street that I did not return for a few days. When I did, I was shocked and horrified by the scene that I saw. Holmes has often accused me of telling the story from the wrong end, so I will back up a few minutes to explain. Shaking the rain from my coat and umbrella, I walked into the door of 221B. Realizing that I wasn't inside yet, that the door was closed, hard, and in the way, and that my face hurt, I opened the door, went in, and closed it. Mrs. Hudson came straight away, her face a mixture of sadness, horror, and relief. "Oh Dr. Watson, Dr. Watson, I'm so glad you're here I've been trying to call you for a few days now. It's Mr. Holmes! Oh Dr. Watson, he's sick, ill, unwell!" "What?" I cried. "Yes, the day after you left he began making a terrible noise in his room. It sounded like a fight was going on. Furniture, tables, chairs-" "Tables and chairs are furniture" "What? Yes, well, all manner of things, Dr. Watson. He refuses to eat, he screams and yells, moans and cries out. It's terrible, doctor, terrible." At that moment, I heard a cry from upstairs. It was a mixture of a wolf howling, a man crying in despair, and the ravings of a mad man. I hurried past Mrs. Hudson and up the stairs. The door to the study hung slightly off its hinges, but was still closed. A chair leg protruded from an upper panel, but I could not see in the room. The crying and screaming continued from inside. "Holmes!" I said, as I knocked and opened the door a little. "Watson!!! Aaarrrrrrrrggggggggg! " He stood in the center of the room, looking disheveled, furniture strewn around the outside, the rug in knots. Books and papers were scattered around like a whirlwind had swept through. Holmes was in his dressing gown, his hair in a mess, his face white. He clutched his head with hands, and lapsed into silence, falling to his knees. He stayed like this for a few moments before speaking again, with the whisper of a man in despair. "Watson, Watson, I can't go on." He looked up and my eyes followed his gaze. From the ceiling there hung a noose of thick rope. He looked at me. "It's finished, finished. Everything is....gone. I am...undone!" He collapsed onto the floor and lay motionless. I hazarded to open the door wider, and walked carefully in. In one corner, there was a single table that still stood upright. Resting upon the table was his laptop. The screen flickered with an unearthly light and strange noises came from the speakers. I tiptoed over, avoiding my fallen companion, and stared at the screen. Color and text scrolled all over the screen, moving left and right. I saw snippets of his cases, secret documents, volumes about the greatest criminals in London, all being rearranged and rewritten. Everything truly was in total chaos. His life's work, his entire being was being eaten away by a... "A virus, Watson," he cried in agony. "I fear it is the dreaded XeroVirus, and I am powerless to stop it, powerless! My life, it is over. The noose is calling me, my enemies gloat. No, don't get any closer, don't insert any disks. Chaos, Watson, chaos!" "Holmes!" I faced him, "There must be something I can do. I'm handy with COBOL, FORTRAN, BASIC, ML, and TURBO C++. Let me take a look." "No! No! There is only one person who may yet save me, dare I hope!" "Who?" "Her name is C. Octavia Crandall Olivier. But I cannot go. I am mad, I am dying. If she cannot help, I...I...." He fell to the floor, gasping for air. "I'll go, Holmes, I'll go." "Yes, go! It may not be too late." "I'll bring her back myself." "No! Watson, listen, if you value your life, listen. Do not return with her. Say you have another appointment, and return here before she arrives." "Okay," I said, not understanding. Mrs. COC Olivier lived across London. Taking a buggy, I quickly entered her house. "Take the buggy outside," she said, as I pulled up in her study. I did, then reentered the house on foot. "I'm very busy, Dr. Watson. I do not wish to be disturbed." "It's very important," I said, "Please, Holmes, is dying." She looked up from her desk where she was using her computer. "Really? Dying? Hmmm, and what can I do about it?" "He believes his computer has the XeroVirus, and he is going insane!" "Dr. Watson, why me?" "I know he thinks that you are the greatest expert on computer viruses." I didn't know if that were true, but hey, flattery sometimes works wonders. "Really? Hmmmmm. I am, Dr. Watson, I am." She got up and walked over to me. "Look around," she commanded, "Look at my work!" I glanced around as she switched on some extra lights. Each wall was covered with shelves, each shelf with a dozen disks. "Each disk contains a computer virus, Dr. Watson!" "There must be hundreds!" I exclaimed. "Millions," she said, "All doing their time in my jail. But Sherlock, I must go. Do you have a buggy?" "Yes, but I am needed elsewhere." "Fine, I'll be there in half an hour." Arriving back at Baker Street, I went straight upstairs. Holmes lay, almost comatose on the floor. As I knelt down over him, he feebly spoke. "Watson, hide, quick. She will be here soon, I think I hear her buggy outside." "What?" I cried, "Hide? I don't understand!" "Do it! Get behind that pile of furniture by the window. Quick!" he whispered. A moment after I concealed myself, there was a knock at the door. "Aaaahhhh!!!" screamed Holmes, "Save me! Save me!" The door opened and COC Olivier entered slowly. "It's you!" breathed Holmes, "You've come. Can you? Dare I hope that you can help me?" "Help?" "Yes, help...I...am dying..." "Everyone dies, Mr. Holmes." "Yes," he whimpered, "but I cannot...must not..." "You must. It is your time. The reaper is calling your name!" "No...I mustn't obey." "You must. Die, Mr. Holmes, die!" I couldn't believe what I was hearing, but the next thing that Holmes said completely shocked me. "Die," he whispered softly, "like your brother." There was a pause before I heard the reply. "So you do know. I guessed as much." "How...how was it done?" "I guess I can tell. You won't live much longer, you pathetic detective. It was me, I admit it. I infected his computer, as I have infected yours." "With...with the XeroVirus?" "Oh, is that what you are calling it? I don't think it's officially named yet. There have only been two cases in this country. My poor dear brother's, and yours! I picked it up in Japan, where they call it Tama-gotcha! It's completely unknown around here. Yes, I see the familiar lights on the screen and sounds from the speakers." "How...?" "Yes, I was coming to that. Before you're found, I must take something back. Try to remember back. Did you receive a package recently?" "Package...no...." moaned Holmes, "Darkness....pain....." "Yes, those Japanese often felt pain before dying as they watched their entire life destroyed before their eyes. Now, the package. It was a disk, remember?" "Disk...no....." I heard our visitor start to search around the room, rooting through piles of disks and papers. "It must be here. I must find it.....Aha! So, once this is gone, there will be no trace save for the destruction here in this room, and of your tired body!" "Dying...." "Yes, the noose is calling you." "I can't see it." "The darkness is the final stage. Here, let me turn up the lights for you." The room brightened and I heard Holmes speak in his normal voice. I was overjoyed. "Thank you, Miss Olivier. The dark room plays havoc with my eyes." "What?" "The games up. The police will be here momentarily. Thank you for signaling them by turning up the light." The door burst open and Lestrade and two burly police officers stood there. "Lestrade, good to see you so promptly. No, Miss Olivier, no false moves. Lestrade, here is my would-be assassin, and the blackmailer and murderer of C. Frederick D. Michaels- his evil sister, Miss COC Olivier." "Ha!" sneered Miss Olivier, "What proof do you have? It is simply your word right now. I have every right to leave. You have no proof!" "You're wrong, Miss Olivier. Watson, come out." I emerged from behind the pile of furniture. "I think you'll find Watson an excellent witness, Lestrade. Quick, stop her!" Miss Olivier had darted toward the fireplace, the disk in her hand. I jumped in front of her and knocked the disk into the corner of the room. One of the police officers retrieved it while the other handcuffed and lead Miss Olivier away. Holmes turned to the inspector. "Lestrade, take care of that disk, but don't put it into an important computer. It contains a deadly virus. More deadly that you can imagine. A virus from Japan, so malevolent that, as it eats away a person's life on the computer, the real person also is eaten away with despair and agony, ultimately committing suicide like C. Frederick D. Michaels." "I'll take care of it," said Lestrade, taking the disk and tucking it into his overcoat. "Thank you." He left, closing the door behind him. "Holmes!" I cried, "You are recovered!" "I was never ill, Watson, just pretending. But I have truly not eaten anything for three days. Please call Mrs. Hudson and ask her for some supper." A few days later, Holmes explained the case to me. He told me that he suspected Miss Olivier, but couldn't prove it. When he received an unmarked disk in the mail, his suspicions were confirmed. Miss Olivier was blackmailing her brother Mr. Michaels. He refused to pay her after a while, so she infected his computer with a virus she brought back from her travels. She was an expert in computer virii, so it was easy to select one that no-one could trace. The virus tore apart his life, and drove him to suicide. Her admission to Holmes and me was enough to convict her. She was forced to live out her life at Microsoft, a punishment so severe that the judge retired after that and became a hermit. There was one final question that Holmes answered. "Holmes, when you were pretending to be insane and dying, your laptop was showing all the symptoms of the XeroVirus. Yet your computer information is safe. I don't understand." "My dear Watson. I had to trick Miss Olivier into thinking that the computer had the virus. The truth was that I first put the disk into my stand-alone test computer, where it wiped out my recipe files. I then initialized the entire system, curing it. Finally, I programmed my laptop to act like it had the XeroVirus. My trap was complete!" "You programmed it?" "Yes, using the CoCo 3 emulator!" "Holmes, I don't know what to say. I was insulted when you wouldn't let me check the computer, but now...." "Watson, you are too humble. I knew your excellent knowledge of programming would let you see right through my trick on the emulator. I had to convince you, too, that the computer was truly infected, and I was indeed dying. I couldn't let you near it. It was an excellent performance." The rain continued to beat on the windows as we settled down for a pleasant evening of light conversation. That was, until Lestrade called to say that a head wound was found that matched no known description in Holmes's Peripheral Impalements book. But that's another story for another time. down for a pleasant evening of light conversation. That was, until Lestrade called to say that a head wound was found th