@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu  } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 138ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u88P0BLRIGHTSCARJUMPVYSTSPSPTRIELEFTBIKETCARP1P2PLRMOVARAPMBASCHSESTARVVTOFFSET}HLDP3JUMPLSTARJUMPRFLAPRDONPY U} V}@ !"#$%&'()W}*+,-./ ҭśBY ERIK C. LOWELL(C)1988 ANTIC PUBLISHING( X}A2 A@< A1F A( P AYJUMP BIKE LEFT (PRO ONLY)Z67@h<@,.d67Y}A<A(,.n<6-&P:'@P,&@< A%$@ApxB2H//2@E&'@Z}@@U&6-%@$+T:,",P-@%+ A,%+ @,@U(-@AP&$[}  A,67A<A0,.,B2xC76-++'@%@0,$,$++'@%@0,$,C6-\},,-@%AP:'@P,%@06-+6%+@$$',,0!A`67%A<%A0,.]}$67%A<%A0,.$6-- A-B2H+AC%$@,&.F:B2R,!@$6-@. A^} 9#+AC%$@,& @U/6-@9 A67@ <AP,.'6-+AC%$@,&' _}A "67A<A(,.,*6-&P:'@P,&@*B2H6-@AP&$ @ J Ap`}SJUMP BIKE RIGHTT67A<A(,.^67A<A,.h<6-%P:'@P,%@<!Ac&$@a}A rB2H|//2@E&'@@@U&6-%@$+T:,",P-@%+ Ab},%+ @,@U(-@AP&$  A`67A<A,.C76-++'@%@0c},$,$++'@%@0,$,C6-,,-@%AP:'@P,%@06-+6%+@$$',,0!d}A 67%A<%A,.$67%A<%A,.$6-B2x+ A+B2H%Ae}B&$@ F:B2R,!@A ))%AB&$@!AA67@ <AP,.f}67A<A,.&/#-%AB&$@A /B2H0-@AP&$ : D ApMg}MOVE BIKE RIGHTN-@@)-@@@(G E T R E A D YT-@@PX j-@@(h} X7-@@P  3-@@P7 b,@w,67A<A,.l,i}B2H@g,67@p<@,.v'6-@6-@'6-@fH6-%P:'@P,%@*!AH @j}%+",$A B2H//2@E&'@@@U&6-%@$+T:,",k}P-@%+ A,%+ @,@U(-@AP&$ !A@!A  A@l}67@h<@,. A@<67@h<@,.<2@@@-AAm}B2H9H:,!?P/67@r<@x,.9 A 67@r<@x,.  6-@@n}(000,6-%@6 A )MOVE BIKE LEFT*67@h<@,.467A<A(,.>26-&P:'@Po},&@2 @SA@HB2HR//2@E&'@@@\U&6-%@$+T:,"p},P-@%+ A,%+ @,@U(f-@AP&$ p A0yCRASH SEQUENCEz6-q}@@(000,6-%@6 A A @67A`<A ,.<67A<A,.<2r}@@@U#-%AB&$@AH/B2H;B2VGAK U A 67@<s}A ,.<67A!<A&,.<2@@@P,-AC%$@&@R6@8B2Ht}DB2VPA/-@AP&$ # /6-6-F:A`,{ -@6@<2u}@%J-@N wA`+&@,%H:,$@{ A`%6-&@%"v}A-@6@(-@@P B67@,.>:,367AV,.>:,B67w}@,.'AAH'B2V$ A-GOOD JUMP SEQUENCE.-@@(0008%2x}A!@@G2@@@@i2@@@@2@@`@@y}B-@@<AH:,$AT%@aAH:,$AT%@eAH:z},$AT%@L V7-@327 `FOR I=1 TO 3:NEXT Ij%2A!{}@@G2@@@@i2@@@@2@@`@@t|}-@@ >A@$+H:,$@,eA@$+H:,$@,iA@$+H:}},$@,~ -@(+,*"@AVP:F:A%,&P:F:A%,'@,$@ @~}P+A%,@ 7-@327 /#6-$@&$@%@'}/6-% -%X-@ @(62@@X2  6-}%6-@R-@@((6-%@06-%<!@H6-@R A""6-?%H:,$}?U,6-H:,$@%@%@$U6-H:,$@%@6%@$v -@6@4}-@@P2@@T v2K!B2I%Ab&$@GB2Q}A&'@%$@K 6-P:H:,$@,//6-+P:H:,$@,$@,%@ G-@3&}@$@G(>:%A($,>:%A($%@, AGAME OVERyB2w+1AY}@CAR@UA@gA@yA @#'-B2HB2Q#' (H }*-@@>(Consider yourself King Biker!!H AP2M-@@C(%Great Jumping! Now try the PR}O level.M AP<:-@@:( YOU HAVE WRECKED YOUR LAST BIKE!F?-@@?(YOU SUCCESSFULLY JUMPED} & CARS.P,-@@,(FINAL SCORE IS Z7-@@7(Press TRIGGER to play againd'AY}@4'@wAUn T:,"@Ax! A1 A( ! AINITIALIZE PMG11;AV},;AV,;AV,;AV,&&9@,;@(,;@%,{<;@ ,;@ ,;@,;@,};AV,T67@,.>:,l67AV,.>:,{67@,.B67@,.>:,367AV,.>:,B}67@,.B67@,.>:,367AV,.>:,B67@,.B67@,.>:,367AV,.>:},B67@,.6-F:A,&@BBy6-AV$-@68,-%AV$%}A$ X AF:A,&@*+C6-+F:A,,$AVUAR@X(oAAH'}A9AKA]AoA%%6-F:A@,%F:AA,$AV}%%6-F:A4,%F:A5,$AV"6-8,&,6-P:'AV,66-&$AV@%@J%@}O4 6-C:,$-%AV%A#04 TB67@,.>:,367AV,.>:,B67@,.^}B67@,.>:,367AV,.>:,B67@,.hB67@,.>:,367AV,.>:,B67@},.r--@@ ")67<,.>:,- |--@@ ")67<,.>:,- --@@")6}7<,.>:,- --@@")67<,.>:,- 8-@@ "48@,%%A8 Q-@}@ "48@,%%AM8@,%%AQ KA#@'B2W@9B2X@}KB2Y@KB2H@'B2IA99B2PAKB2QA 'AY@b'B2w}@ A $$48,32,40,52,166,255,24,211,195##12,4,20,44,101,255,24,203,195((48,36,39,54,44,59,59,248,}192,48,48))12,36,228,108,52,220,220,31,3,12,121,1,3,3,7,7,15,15,31))128,128,192,192,224,224,240,240,248TI}TLE SCREENK6-@!-@@A6. B I K E R D A V E K A`0%%2:}$D++67@<AU,.7@<AU,N67<%@,.Xu-@0@s@+B2HO2@5}@'@S u2@5@@b-@@%lK-@@@GB2H}+&@,$@%%@sK v (7<, [-AtAP@+B2HW2@5@@ }&'@[ $INITIALIZE CHARACTER SETAV'AV)-@@!)(PLEASE STANDBY #A }""6@$1-@"-%$@%1  Ap1,0,32,32,32,32,0,32,0$$16},0,168,136,136,136,136,168,0 17,0,32,160,32,32,32,168,0""18,0,168,8,168,128,128,168,019,0,168,8,40,8,8,168,0} 20,0,136,136,136,168,8,8,0  21,0,168,128,168,8,8,168,0$$22,0,168,128,168,136,136,168,0 23,0,168,8,8,8,8,8,0}*$$24,0,168,136,168,136,136,168,04 25,0,168,136,168,8,8,168,0>26,0,0,40,40,0,40,40,0H$$33,0,168,136,136,168,136},136,0R$$34,0,160,136,160,136,136,160,0\$$35,0,168,136,128,128,136,168,0f$$36,0,160,136,136,136,136,160,0p$$37,0,}168,128,160,128,128,168,0z$$38,0,168,128,128,160,128,128,0$$39,0,168,136,128,136,136,160,0$$40,0,136,136,168,136,1}36,136,0 41,0,168,32,32,32,32,168,042,0,8,8,8,8,136,168,0$$43,0,136,136,160,160,136,136,0$$44,0,128,128,12}8,128,128,168,0$$45,0,136,168,168,136,136,136,0$$46,0,128,160,136,136,136,136,0$$47,0,168,136,136,136,136,168,0}$$48,0,168,136,136,168,128,128,0$$49,0,168,136,136,136,136,160,8$$50,0,168,136,136,136,160,136,0 51,0,168,128,}168,8,8,168,0 52,0,168,32,32,32,32,32,0 $$53,0,136,136,136,136,136,168,0 ""54,0,136,136,136,136,32,32,0$ ##55,0,}136,136,136,168,168,32,0. ""56,0,136,136,32,32,136,136,08 !!57,0,136,136,136,32,32,32,0B 58,0,168,8,32,32,128,168,0L} ""59,0,32,128,128,128,128,32,0V 60,0,0,0,0,0,0,0,85` 61,0,32,8,8,8,8,32,0j 62,0,0,0,0,0,0,0,170t 63,0,0,0,0},0,0,0,255~ 65,2,42,37,5,5,5,5,5 ""66,170,170,85,85,90,89,89,90 &&67,170,170,85,85,149,101,101,149 ""68,170,170,}85,85,85,85,85,90 ##69,170,170,85,85,85,85,85,149 ""70,170,170,89,89,89,91,91,91 $$71,170,85,85,85,85,255,255,255 }%%72,160,104,88,80,80,240,240,240 73,5,5,5,5,5,5,5,5 74,89,89,90,85,85,85,85,85 ##75,101,101,149,85,85,85,85,85} 76,89,89,89,89,89,90,85,85 ##77,101,89,89,89,101,149,85,85 78,91,91,91,91,91,91,91,89 ''79,255,255,255,255,2}55,255,255,85 ''80,240,240,240,240,240,240,240,85 97,0,0,0,10,32,170,90,128( 98,0,0,0,128,32,168,148,82 99,0,}0,0,15,48,170,95,192< !!100,0,0,0,192,48,168,212,12F 101,0,0,0,10,32,255,90,128P 102,0,0,0,128,32,252,148,8Z 10}3,0,0,0,15,48,255,95,192d !!104,0,0,0,192,48,252,212,12n 105,0,0,0,15,48,170,90,128x 106,0,0,0,192,48,168,148,8 } 107,0,0,0,10,32,255,95,192 !!108,0,0,0,128,32,252,212,12 %%109,13,63,255,255,255,255,63,13 %%110,85,85,213,213,213},213,85,85 **111, 170,170,170,170,170,170,170,170 **112, 170,170,171,171,171,171,170,170 ))113,176,252,255,255,255,2}55,252,176 !!114,85,85,85,85,85,85,85,85 115,1,15,63,63,63,63,63,63 ##116,80,168,234,42,42,42,42,42 117,63,63},15,1,0,0,0,85 ##118,42,234,168,80,64,64,64,85 -1 MAIN SCREEN i +AYA6-F:A`,%AV}$F:Aa,U%@@hiAV'AV +67@<AU,.7@<AU,=B2H@POB2I}A9aAsB2QA B2PA v"6-?%H:,$?.6-@:6-@F6-}@R6-@^6-j6-v6-" U,6-H:,$@%@%@$U6-H:,$@%@}6%@$, +%@@+%@@6 -%@%@@ @ J -%@%}@!T @^  ` ?%@"@e+%@#@2?%@$ARh ]A@&'A A}9AA2KA@h]A| $-@@$( BIKER DAVE <-@@"(}<CONTROL A,B,C,D,E,F,G,H Z-@@@(& _________________________mnrrrZCONTROL I,J,K,L,M,N,O,P }-@7@(rr -@7@(rr @-@@@(&ooopq^^^^^^^^^^^^^^^^^^^^^^^^^^^^mnrrr K-}@@ (2-@@9(KAAR -@@(oo -@@(oo }-@@ (oo @-@@@(&ooopq\\\\\\\\\\\\\\\\\\\\\abef\\\\\\ '-@@'( SPEED:000 M}PH >-@@>($CARS JUMPED: 0 BIKES LEFT: 5 !-@@!(SCORE:0 o@w'A}AH9A@rKA@r]B2w@oAY@b $ SET SKILL LEVEL B2w}+1AR@CA@rUA@rgA @s6-@w& 2-}@@2(Choose your skill level:0 6-@@6(ROOKIE! Press your stick up: 5-@@5(PR}O! Press your stick downD .R:,"@$6-@. A1pN R:,"@A1pX A1@b +}-@@!(PRO+ A1l -@@ (ROOKIEv -@A $ + D:BIKER.}BAS@!(PRO+ A1l -@@ (ROOKIEv -@A $ + D:BIKER.*** WHAT YOU NEED TO KNOW *** (about this months disk.)All .BAS files can be run from themenu, but:RAMDISK.COM - Req }uires a minimum of128K memory, and runs ONLY underDOS 2.5. It does NOT run with DOS2.0. RAMDISK.SRC is the source code.P }RTSCRN.EXE - Copy this file toanother disk containing DOS 2.0, andrename it AUTORUN.SYS. Reboot withthe new disk and you w }ill be able toprint text screens simply by pressing[SHIFT][CONTROL][P]. it AUTORUN.SYS. Reboot withthe new disk and you w J_`"'"GRIDRESPONSERTIMEDBTIMINIRAMSEROMSECHATESCYCLECNMISDMISTTIMSPNESPOLSTXTEMAfAdf}Af@@BHBh@e@ @F @ @@@A@}@@@d*************************n* THE JOYSTICK TESTER *x* BY KEVIN C. GEVATOSK}Y ** COPYRIGHT 1989 ** ANTIC PUBLISHING ************************** AF:A,&@}&&9A,9A,9A,6-@/+@%@/0@@##(@ **}*******##(@ JyTc TsEҪ##(@ *********-(@-(@ jOYSTICK TES}TER+(@+(@ pADDLE TESTER'(@'(@ eVALUATORAp##*** SETUP A R}AM CHAR. SET ***",=6-@!-@@=(@66-F:A,$AV@6-A&$}AVJ-@@dT-@^6-F:%,h %r |6-%@6-%@ }6-F:A,$AV)-@%%) ;-@7%+@$@,%AU; }1-@@1(@ ##*** GET KEYBOARD RESPONSE ***;#@@}K:0)@;@!@6-&@2$"@:J,6-@$ A@:E,ApO +}AR@"(%(O(%Enter a number from 10 to 100 for the%"(number of response cycles.%(X A0}' @)!A*(N(A number from 10 to 100 please!X A0 B &( A%P0I6-6-}'6-36-?6-I A:"@:P, A!`D ApN+@%@XAVF:A},b(APl0@@@v5-@5(@joystick test grid Ap0@}@@1-@1(@evaluator grid--@@-(@ --@}@-(@ | | | |--@@-(@ | | | |--@@-(@ }--@@-(@ | | | |--@@-(@ | | | |--@@-(@ }--@@-(@ | | | |--@@ -(@ | | | |--@@-(@} 8-@8(@press start for menu $$*** GRID POSITION SELECTOR *** *} 6-R:, A@4%%6-P:H:,$@%@,> " A HA A A A }A`A AA A A@A`A AAA R\*** LOWER-RIGHT ***f&-}@@&(@p&-@@ &(@z AP::0@@@%@$+@}&T:,,(A @ R:,"@A  A P A &-@@&(@ } &-@@ &(@  A*** UPPER-RIGHT ***&-@@&(@&-@}@&(@ AP::0@@@%@$+@&T:,,(A` R:},"@A  Ap$ A .&-@@&(@ 8&-@@&(@ }B AL*** RIGHT ***V&-@@&(@`&-@@&(@j APt:}:0@@@%@$+@&T:,,~(A R:,"@A@ A A }&-@@&(@ &-@@&(@  A*** LOWER-LEFT ***&-@}@&(@&-@@ &(@ AP::0@@@%@$+@}&T:,,(A R:,"@ A`  A A &-@@&(@ }(&-@@ &(@ 2 A<*** UPPER-LEFT ***F&-@@&(@P&-@}@&(@Z APd::0@@@%@$+@&T:,,n(A x R:},"@A A0 A &-@@&(@ &-@@&(@ } A*** LEFT ***&-@@&(@&-@@&(@ AP::0@}@@%@$+@&T:,,(A@ R:,"@A AP A }&-@@&(@ &-@@&(@ " A,*** DOWN ***6&-@ @}&(@@&-@ @ &(@J APT::0@@@%@$+@&T:},,^(A`h R:,"@A r Ap| A &-@ @&(@ &-@ }@ &(@  A*** UP ***&-@ @&(@&-@ @&(@} AP::0@@@%@$+@&T:,,(A R:,"@A@} A A &-@ @&(@ &-@ @&(@  A**}* NEUTRAL ***&&-@ @&(@0&-@ @&(@:::0@@@%@}$+@&T:,,D F:B2y,"@AN R:,"@APX&-@ @&(@ }b&-@ @&(@ l0@@@v A *** BEEP & START TIMER ***}-(6-%@68,--!A#@%2@(@@9-@= _2}q@@ $ *** GET STICK RESPONSE *** F:B2y,"@A} R:,"@A $6-R:,$READ & DEBOUNCE-@R:,A   (}(68,-F:@,$AV%F:@ ,M +2@@@@?-@@C M A  =%2}@0@@9-@@= * 6-68,-4 R:,@A!>%%2}H-@@  $R\*** PADDLE TESTER ***fpS +@AR@90@@}@S0@@@zUAV'AWU((ŠҠ}9AV@'AW@9( Yellow line =(AW@(( Green line =AAV@'AW}@A(Press for menu ,@A6-@v&P:Q:,'@,K@W/@a}m,@/@v@ ,@&A6-@v&P:Q:@,'@,K@W/@&}am,@&/@v@&nAV@'AW@'A(A(&Q:, SAW@'n(}A(&Q:@, 002A(&Q:,@@002@A(&Q:@,@@5}(S:,+0@@@5 A"5(S:@,+0@@@5 A"0@@@}fF:B2y,"@:2\2@f A A" } *** DISPLAY RESULTS *** $ +@%@. /(/($The evaluation is over. Here are the8 %%( results for } iterations:B -@L 6-8,V 8,"A$ ` 6-%@j ;-"@)"@)"@ )"@ };6-%@t 6-%8,~   5(5(Overall accuracy = P:+&,'$A,% ))(Total error = P:'$A },% 66(Horiz. & vert. error = P:+&,'$A,% ,,(Diagonal error = P:'$A,% LL(Average respo }nse time = P:+','@`$A,'A seconds A%P + B-B(( }̠Ӡ )&(CycleGridResponseTime)( C-@?(8,8,P:8,'@`$A,'A }C   A%P A .(.(#Press joystick to continue. T:,A%` $ D:JOYTEST.BAS}C   A%P A .(.(#Press joystick to continue. T:,A%` $ D:JOYTEST.BAS@@P˽̠˪ȱ˨ȎAAAA@ @ @ @Ȇ@@i'@i@iҍ@i@}i@i@չ@ i׍i ` LHHH)?X˩̩ͩ(Τ˱XH****)h)} @A| Y %зYYY hhhh@ἴ/\ @`PRTSCRN} VERSION 1.3 (C) ANTIC MAGAZINE@ %зYYY hhhh@ἴ/\ @`PRTSCRN%j%+X***************************************+X* ATARI PRINTSCREEN *+X* This program was written usin}g *+X* MAC65. By Steve Derderian *+X* (c) 1989 ANTIC PUBLISHING, INC. *+X* Date Written: November 2}, 1988 *$+X* *.+X***************************************8X*B3START@;;Initial} load address for the programL7DOSINI ;;Vector to the DOS initialization routineV6POKMSK;;Interupt request enable sh}adow register`$SAVMSCX;;Pointer to screen RAMj3ZMEMLO;;Work area used by relocation sectiont2C0;;Work areas use}d by print screen section~1C1;;Data residing between $CB and $CE will1C2;;be destroyed when print screen is used}7VKEYBD;;Vector to the keyboard interupt routine!RUNAD;;DOS run after load#MEMLO;;Everyone knows MEMLO,}HATABS;;Device handler address table@KBCODE ;;KBCODE is the register used to store a key press8IRQEN;;The re}al interupt request enable registerX* START+X***************************************+X* } *+X* This program consists of three *+X* sections. The first section is * +X* responsible for loadin}g the program *+X* at START ($4000), modifying the *+X* rest of the program to run at LOMEM *(+X* (actual address un}known until run *2+X* time), and moving the program to *<+X* LOMEM. *F+X* } *P+X* The following section of the *Z+X* program is not moved to LOMEM so it *d+X* does not t }ake up any memory in your *n+X* computer. *x+X* *+X********!}*******************************X*$>;;Search the handler'P01QHATABS9;;address table lookingR> P;;for the printe"}rFP02;;device handler.2;;Each handler entry2;;consists of three 2;;bytes.HP01;;Not found, try again.X*#}P02QHATABS9;;Found P:.#PC0;;Move the address of the#QHATABS9;;P: vector table toPC0;;page 0.X*"%>$};;Pick up the address of,#Q@C07;;the P: put byte routine.6>@3J Q@C07T?^$2;;The table contains the addressh!HP0%}3;;of the routine minus 1.r"3;;Add 1 to so we can do a JSR.|X*)P03&P17;;Store the address of the &P20;;put by&}te routine in!'P17;;section three of the'P20;;program.X*#QVKEYBD;;Save the address of!PP10;;the c'}urrent keyboard!QVKEYBD;;interupt routine. PP10X*#QDOSINI;;Save the address of"PP06;;the current D(}OS resetQDOSINI;;routine. PP06X*,$MEMLO;;MEMLO points to the last byte&+%MEMLO;;used by DOS. We n)}eed to add0!2;;1 to MEMLO so we don't step:HP04;;on that byte.D3N)P04&ZMEMLO;;Stash the address forX'ZMEMLO*};;use later.b(&P07;;Section two of this programl*'P07;;also needs to remember MEMLO.vX*',;;Add MEMLO to the rel+}ative address!A;;of the print screen routine(O>4P09P06;;(section three) so that!PP08;;we can calculate itsC;;,}absolute address.O>5P09P06 PP08X*',;;Add MEMLO to the relative address A;;of the internal to atascii$O>4-}INTATAP06;;conversion table$PP14;;so we can calculate itsC;;absolute address.O>5INTATAP06  PP14X* .}',;;Add MEMLO to the relative address*A;;of the printer code 4$O>4OUTTBLP06;;conversion table>$PP15;;so we can cal/}culate itsHC;;absolute address.RO>5OUTTBLP06\ PP15fX*p+%>PGMENDP06;;Move sections two andz#P05QP068;;0}three down to MEMLO. P@ZMEMLO71)>HP05-FP07;;UNCONDITIONAL SKIP. 1ST TIME ONLY.X*+X*******************1}********************+X* *+X* This is section two. It is *+X* responsible f2}or protecting our *+X* program and installing (and *+X* reinstalling) the print screen *+X* program e3}ach time the system reset * +X* button is pressed. * +X* * +X* This 4}section (except for the first *$ +X* JSR) is also performed when the *. +X* program is initially loaded from *8 +X* D5}OS. *B +X* *L +X***************************************V 6}X*` 5P06 ;;Call the old DOS initialization routine.j X*t 2P07$>;;Change the DOS initialization routine~ %>;;vector7} to point to our '&DOSINI;;initialization routine. 'DOSINI X* (,;;Raise MEMLO so that our program is QMEMLO8};;protected. O>4PGMENDP06 PMEMLO QMEMLO O>5PGMENDP06 PMEMLO X* )P08$>;;Change the k9}eyboard interupt %>;;vector to point to $&VKEYBD;;our interupt handler 'VKEYBD;;(section three). X*( 0:;;Ret:}urn to DOS (or the OS if system reset).2 X*< +X***************************************F +X* ;} *P +X* This is section three. It is the *Z +X* part of the program that actually *d +X* performs the screen print fu<}nction. *n +X* (This is why we did all of that *x +X* stuff above.) * +X* =} * +X* This section is called each time a * +X* key is pressed. * +X* >} * +X*************************************** X* =P09QKBCODE;;Pick up the code from the keyboard register?}. "R>;;Was it P? FP11;;YES! X* (P10!;;NO! - Let the OS handle it. X* +P11A;;Since this is an@} interupt routine #5;;we are responsible for saving !C;;all of the registers. (The &5;;A-register was saved by the OS.)" A}+QPOKMSK;;We don't have to do this, but , !5;;we want to save POKMSK too.6 X*@ (M>?;;0011 1111 Turn off keyboard andJ !PPB}OKMSK;;break key interupts.T PIRQENY .;;Allow SIO Interrupts...^ X*h ,Q>;;C0 holds the index into screen RAM.r PC0| C}X* $Q>4;;C1 holds the counter used #PC1;;to tell us when we have "Q>5;;finished coping all 960 1PC1;;bytes D}from the screen to the printer. X* $P12Q>(;;C2 counts from 40 to 0. 3PC2;;When it hits 0, we do a printer line feed. E}X* P13%C0;;Recall the index. ,Q@SAVMSC7;;Pick up the screen character. #5;;Convert it from internal code U?;;to ATAF}SCII. (Trust me.) U? U? U? M>& >0 7: M>D P14L9N >X 7P15Q9;;Pick up the equilivant printer characterG}.b %(> ;;Was the character < a space?l DP16;;YES!v -A;;NO! - bring it back. It was OK before. R> |;;Virgule? HP16;;NH}O! - print it Q>;;YES! - change to solid X* P16$>;;For XL/XE machines. !P17 ;;Print the character. X* *#CI}0;;NO! - Increment our screen index. -HP18;;If the index rolls from $FF to $00, -#SAVMSC;;increment the screen addressJ}. X* *P18"C1;;Decrement our 960 counter. HP19 "C1 X* %P19"C2;;Decrement our 40 counter -HP21;;It's noK}t zero. Aren't we done yet?* X*4 %Q>;;It was zero, do a line feed.> $>;;For XL/XE machines.H !P20 ;;Print the charL}acter.R X*\ P21QC1f MC1p R>;;Did we hit -1?z #FP22;;YES! - We're almost done. X* QC2 #HP13;;Haven't fiM}lled a line yet /FP12;;UNCONDITIONAL - reset the 40 counter. X* 'P22"SAVMSC;;Restore the pointer "SAVMSC;;to N}screen RAM. "SAVMSC X* Q>;;Clear the key press so *PKBCODE;;we don't get stuck in a loop. X* 7;;Restore theO} interuptPPOKMSK;;request register. PIRQEN 7;;Restore the CPU registers.$?.78>B7L9;;Return from the interuP}pt.VX*`+X***************************************j+X* *t+X* The following table is usQ}ed to *~+X* convert the ATASCII graphics *+X* character to the equilivant *+X* IBM printer characterR}. If you have *+X* Panasonic, Epson, or any other *+X* printer that supports IBM graphics *+X* characters, this S}should work fine. *+X* The table will also protect you *+X* from the escape or other printer *+X* control charaT}cters. *+X* *+X* If this program does not work *+X* properly U}with your printer, you may *+X* have to modify this table. *+X* * +X*******V}********************************"OUTTBL Aἴ/\A AA(X*2+X*******************************W}********<+X* *F+X* The following table is used to *P+X* convert screen charactersX} to *Z+X* ATASCII characters. DON'T CHANGE *d+X* IT. *n+X* Y} *x+X***************************************INTATA  =@==`X*+X***********************************Z}****+X* *+X* The following message places the *+X* program name and version numb[}er in *+X* the object code created by the *+X* Assembler. This is so you can see *+X* if you are running an old\} version *+X* of the program. *+X* *+X* This message is not c]}opied down to *+X* LOMEM after the program is loaded *+X* so it will not take up any extra *+X* memory in your co^}mputer. *+X* *"+X***************************************,4PGMEND APRTSCR_}N VERSION 1.3 (C) ANTIC MAGAZINEA6 RUNAD@' START;;Tell DOS to run the program************************,4PGMEND APRTSCRR03 H3 2h`3 233 203#3303 20333hӭ3$%ʌ00033s0330 DISKa} 2 :2 _i0313p118*   3OHDEI B VH =3ӠttȢtȘB =b}3Ӣ@32230 02BD3EKJ Vh 02BJD3E V0BHID3E V0" 028c}33BJD3E V0 BHID3E V0d 02BJD3E V 028?30QB JDd}3E VB0HID3E V0 BHIhD3E V@ BLV A 223cce}i(2:] `) 93 ӠԠBX`ERROR WRITING MEM.SAV - Y TO RUN DOS!332u3`f}ˌӭ@H@I@@h@`}SmartRAM-II DOS 2.5 D8:1050 EMULATORby Tim Patrick, COPYRIGHT 1989 ANTICg}ĠҠˠšD1:DUP.SYSD8:MEM.SAVD8:cgko0LATORby Tim Patrick, COPYRIGHT 1989 ANTICS1B%DOS SYSB*)DUP SYSBsSBIKER BASBDOC TXTBEJOYTEST BASBPRTSCRN EXEBMPRTSCRN M65B`RAMDISK COMBqRAMDISK SRCBn1SALVAGE BAS ATARI Macro Assembler Ver: 2.0A, RAMDISK.SRC ******* SmartRAM 2.5 !r} ******* by Tim Patrick, the Happy Hacker ; ******* (c)1989 Antic Publishing, Inc.!s} ; ******* RAMDISK DRIVE NUMBER = 0008 RAMDRV = 8 ;DOS 2.5=D!t}8: ; ******* ZERO PAGE = 0014 RTCLOK = $14 = 0021 ICDNOZ !u}= $21 = 0032 BUFRLO = $32 = 0033 BUFRHI = $33 = 0034 BFENLO = $34 = 0035 !v} BFENHI = $35 ; ******* OTHER RAM = 03FA GINTLK = $3FA ;CAR!w}TRIDGE? = 03F8 BASICF = $3F8 ;ROM BASIC? = 02E0 RUNAD = $2E0 = 02E2 INITAD!x} = $2E2 = 02EA DVSTAT = $2EA = 070A DRVBYT = $70A ;DRIVE MASK = 070C SASA !y} = $70C ;END FMS CODE = 07E0 DINT = $7E0 ;FMS INIT = 4000 TSTLC = $4000 !z} = 7400 VTOCP1 = $7400 ;RD1050 VTOC1 = 4000 VTOCP2 = $4000 ;RD1050 VTOC2 = 0!{}09B CR = $9B = 001C UP = $1C = 007D CLR = 125 = 00FD BELL = 253!|} = 001D DOWN = $1D = 001E LEFT = $1E = 001F RIGHT = $1F = 1481 GET!}}BANK = $1481 ;DOS ROUTINES = 12CB SETBANK = $12CB = 07DF FASTRAM = $07DF ;SYNC W'VB!~}I = 14C4 RAM_OUT = $14C4 ;RAMDISK EXIT = 0043 ZBUFP = $43 = 0042 CRITIC = $!}42 = 0B87 FIX_1 = $B87 = 105D S_FIX = $105D = 0780 DVLOC_1 = $780 ;BSIO !} = 0B89 DVLOC_2 = $B89 ;FORMAT = 105F DVLOC_3 = $105F ;STATUS = 0004 RE!}AD = 4 = 0008 WRITE = 8 = 0003 OPEN = 3 = 000C CLOSE = 12 = 0007 !} GET = 7 = 000B PUT = 11 = 153F MEMDUP = $153F ;MEM.SAV/DUP = 008B N!}AK_ERR = 139 = 183A M_ADDR = $183A = 1863 T_ADDR = M_ADDR+MEMEND-MEMFIX ; !} ******* OS ROM VECTORS = E453 DSKINV = $E453 = E456 CIOV = $E456 = E45!}9 SIOV = $E459 ; ******* CHIP REGISTERS = D301 PORTB = $D301 !} = D40E NMIEN = $D40E ; ******* DCB/IOCB = 0300 DDEVIC = $!}300 = 0301 DUNIT = $301 = 0302 DCOMND = $302 = 0303 DSTATS = $303 = 0304 !} DBUFLO = $304 = 0305 DBUFHI = $305 = 030A DAUX1 = $30A = 030B DAUX2 = $30B !} ; = 0342 ICCOM = $342 = 0344 ICBAL = $344 = 0345 ICBAH = $345!} = 0348 ICBLL = $348 = 0349 ICBLH = $349 = 034A ICAX1 = $34A = 034B !} ICAX2 = $34B ; ******* MACROS SKW MACRO ;SKIP WO!}RD DB $FC ;BRANCH +2 ENDM SKB MACRO !} ;SKIP BYTE DB $F4 ;BRANCH +1 ENDM !} ; ******* INSTALLATION ROUTINE ; 0000 = 3000 ORG $3000 !} ; ******* 256K EXTENDED MEMORY TEST ; 3000 AD01D3 INSTAL LDA POR!}TB 3003 09FC ORA #$FC ;SET ALL BITS 3005 48 PHA ;(SAVE IT) 3006 A!}A TAX ;NORMAL IN X 3007 ACAD33 LDY BIT_X ;XE BANK IN Y 300A 20EC32 !} JSR MEMTST ;TEST IT 300D 1002 ^3011 BPL TEST6 ; 300F 68 PL!}A ;NO EXTRA RAM 3010 60 RTS ;BYE! ; 3011 AE9C33 TEST6!} LDX BIT_6 ;ANY AT 6? 3014 20EC32 JSR MEMTST 3017 8DB133 STA EXTRA ;192K FLAG(!}0) ; 301A AEA033 TEST5 LDX BIT_5 ;HOW ABOUT 5? 301D 20EC32 JSR MEMTST !}3020 3012 ^3034 BMI TEST7 ; ******* NEWELL/RAMBO? ; !}3022 EEB133 INC EXTRA ;BIT-6(+)? 3025 D023 ^304A BNE MEMX ;YUP, RAMBOXL !} ; 3027 A203 LDX #3 3029 BDA933 LPN LDA NEWELL,X ;FIX TABLE 302C 9D9C33 !} STA TABLE,X ;FOR NEWELL 302F CA DEX 3030 10F7 ^3029 BPL LPN 3032 3013 ^3047 !} BMI EXIT ; ******* TEST FOR BIT-7 ; 3034 AEA533 TEST_7 !} LDX BIT_7 3037 20EC32 JSR MEMTST 303A 300E ^304A BMI MEMX ; 303C A203 !} LDX #3 303E BDA533 LP7 LDA BIT_7,X ;FIX TABLE 3041 9DA033 STA TABLE2,X ;FOR!} BIT-7 3044 CA DEX 3045 10F7 ^303E BPL LP7 ; *******!} RAM TEST EXIT ; 3047 EEB133 EXIT INC EXTRA ;256K FLAG(+) ; 304A !}68 MEMX PLA ;FIX $D301 304B 8D01D3 STA PORTB 304E ADB133 LDA EXTRA !} ;(-) = 128K 3051 F024 ^3077 BEQ FIX_192 ;(0) = 192K 3053 1025 ^307A BPL FIX_DOS ;(+) = 2!}56K ; ******* 130XE RAMDISK INITIALIZATION ; 3055 A0CA !}XE_TYPE LDY #$CA ;(DEX) 3057 8CDA30 STY V_TST1 305A EEE230 INC V_TST2+1 !} ; 305D A003 LDY #3 305F 8CED30 STY CLEAR+1 ;ONLY 4 BANKS 3062 B9AD33 XE!}_FIX LDA BIT_X,Y ;FIX TABLE 3065 999C33 STA TABLE,Y ;AND MESSAGE 3068 B97330 LDA XE!}_MSG,Y ;FOR 130XE 306B 993333 STA MSG1+24+2,Y 306E 88 DEY 306F 10F1 ^3062 !}BPL XE_FIX 3071 300A ^307D BMI MERGE ; 3073 4449534B XE_MSG DB 'DISK' !} ; ******* PATCH DOS 2.5 FOR 192/256K ; 3077 20D632 FIX_192 JSR SIXFIX!} ;ONLY 192K ; 307A 203A32 FIX_DOS JSR DOSFIX ;PATCH DOS ; !} ******* MERGE RAMDISK WITH DOS ; 307D A908 MERGE LDA #RAMDRV ;INSTALL 307F A!}A TAX 3080 8D8007 STA DVLOC_1 ;DRIVE 3083 8D890B STA DVLOC_2 ;NUMBER!} 3086 8D5F10 STA DVLOC_3 ;(DECIMAL) 3089 18 CLC 308A 6930 ADC #'0' !} ;(ASCII) 308C 8D9933 STA DRIVE+1 308F 8D3133 STA MSG1+24 3092 8D7031 !} STA DRIVE_1+1 3095 8DD631 STA DRIVE_2+1 ; 3098 A900 LDA #0 309A 3!}8 SEC ;SET 1 BIT, 309B 2A DRVLP ROL A ;THEN SHIFT 309C CA !} DEX ;TO POSITION 309D D0FC ^309B BNE DRVLP 309F 0D0A07 ORA DRVBYT 30A2 8D0!}A07 STA DRVBYT ;ADD TO TABLE 30A5 20E007 JSR DINT ; !} ******* PRINT SMARTRAM MESSAGE ; 30A8 A219 LDX #LOW MSG1 30AA A033 !}LDY #HIGH MSG1 30AC A94F LDA #[MSGEND-MSG1] 30AE 8D4803 STA ICBLL 30B1 8E4403 !} STX ICBAL 30B4 8C4503 STY ICBAH 30B7 A200 LDX #0 30B9 8E4903 STX ICB!}LH 30BC A90B LDA #PUT 30BE 8D4203 STA ICCOM 30C1 2056E4 JSR CIOV !} ; ******* CHECK IF PREVIOUSLY FORMATTED ; 30C4 A202 LDX!} #2 30C6 AD01D3 LDA PORTB 30C9 48 PHA 30CA 09FC ORA #$FC 30CC 3D9C3!}3 AND TABLE,X ;SELECT VTOC 30CF 8D01D3 STA PORTB ;RAMDISK BANK ; !} 30D2 A000 LDY #0 ;COMPARE 30D4 EC0074 V_TST0 CPX VTOCP1 ;VTOC BYTE-1 30D7 F001 ^30!}DA BEQ V_TST1 30D9 C8 INY 30DA E8 V_TST1 INX 30DB EC0274 CPX VTOC!}P1+2 ;VTOC BYTE-3 30DE F001 ^30E1 BEQ V_TST2 30E0 C8 INY 30E1 A2F2 V_TST2 LDX #!}$F2 30E3 EC0174 CPX VTOCP1+1 ;VTOC BYTE-2 30E6 F001 ^30E9 BEQ V_DONE 30E8 C8 !} INY 30E9 98 V_DONE TYA ;FORMATTED? 30EA F042 ^312E BEQ NO_FMT ;!} ******* CLEAR EXTRA RAM ; 30EC A207 CLEAR LDX #7 ;BANKS 0->7 !}30EE AD01D3 FLP1 LDA PORTB 30F1 09FC ORA #$FC 30F3 3D9C33 AND TABLE,X ;GET FI!}RST 30F6 8D01D3 STA PORTB 30F9 A240 LDX #$40 ;SET UP 30FB 8633 ST!}X BUFRHI ;INDIRECT 30FD A000 LDY #0 ;ADDRESS 30FF 8432 STY BUFRLO 3101 !}98 TYA ;CLEAR "A" 3102 9132 FLP2 STA (BUFRLO),Y ;CLEAR A PAGE 3104 C8 !} INY 3105 D0FB ^3102 BNE FLP2 3107 E633 INC BUFRHI ;NEXT PAGE 3109 CA !} DEX 310A D0F6 ^3102 BNE FLP2 310C CEED30 DEC CLEAR+1 ;NEXT BANK 310F 10DB ^30EC !} BPL CLEAR ; ******* SET UP XIO TO FORMAT ; 3111 20303!}2 XIOFMT JSR DO_CLOSE ;CHANNEL-4 3114 A9FE LDA #254 ;XIO FORMAT 3116 9D4203 !} STA ICCOM,X 3119 A998 LDA #LOW DRIVE 311B 9D4403 STA ICBAL,X 311E A933 !}LDA #HIGH DRIVE 3120 9D4503 STA ICBAH,X 3123 A900 LDA #0 3125 9D4B03 STA I!}CAX2,X 3128 9D4A03 STA ICAX1,X 312B 2056E4 JSR CIOV ; 312E 68 !} NO_FMT PLA 312F 8D01D3 STA PORTB ; ******* MOVE DUP.SYS TO D8: !} ; 3132 203032 JSR DO_CLOSE ;CLOSE FIRST 3135 A903 LDA #OPEN ;OP!}EN 3137 9D4203 STA ICCOM,X 313A A904 LDA #READ ;FOR READ 313C 9D4A03 !} STA ICAX1,X 313F A982 LDA #LOW FILE ;D1:DUP.SYS 3141 9D4403 STA ICBAL,X 3144 A933 !} LDA #HIGH FILE 3146 9D4503 STA ICBAH,X 3149 2056E4 JSR CIOV 314C 301C ^316!}A BMI OOPS_1 ;NO DUP(?) ; ******* READ IT IN TO BUFFER !} ; 314E A907 LDA #GET ;COPY FILE 3150 9D4203 STA ICCOM,X 3153 A906 !} LDA #LOW SIZE 3155 9D4803 STA ICBLL,X 3158 A914 LDA #HIGH SIZE 315A 9D4903 !} STA ICBLH,X 315D A9B3 LDA #LOW BUFFER 315F 9D4403 STA ICBAL,X ;TO BUFFER 3162 !} A933 LDA #HIGH BUFFER 3164 9D4503 STA ICBAH,X 3167 2056E4 JSR CIOV 316A !}3022 ^318E OOPS_1 BMI OOPS_2 316C 203032 JSR DO_CLOSE ; ******* S!}WITCH TO D8: (#RAMDRV) ; 316F A938 DRIVE_1 LDA #8+'0' ;SET RAMDRIVE 3171 8D8333 !} STA FILE+1 3174 8D8E33 STA MEM_SAV+1 ; ******* NOW OPEN FOR W!}RITE ; 3177 A903 OPEN_8 LDA #OPEN ;OPEN 3179 9D4203 STA ICCOM,X 317C !} A908 LDA #WRITE ;FOR WRITE 317E 9D4A03 STA ICAX1,X 3181 A982 LDA #LOW!} FILE ;D8:DUP.SYS 3183 9D4403 STA ICBAL,X 3186 A933 LDA #HIGH FILE 3188 9D4503 !} STA ICBAH,X 318B 2056E4 JSR CIOV 318E 301C ^31AC OOPS_2 BMI OOPS_3 ; !} ******* WRITE DUP.SYS TO D8: ; 3190 A90B WRTDUP LDA #PUT ;PUT BYTES 31!}92 9D4203 STA ICCOM,X 3195 A906 LDA #LOW SIZE 3197 9D4803 STA ICBLL,X 319!}A A914 LDA #HIGH SIZE 319C 9D4903 STA ICBLH,X 319F A9B3 LDA #LOW BUFFER ;F!}ROM BUFFER 31A1 9D4403 STA ICBAL,X 31A4 A933 LDA #HIGH BUFFER 31A6 9D4503 !}STA ICBAH,X 31A9 2056E4 JSR CIOV ;WRITE FILE 31AC 3064 ^3212 OOPS_3 BMI OOPS_4 ;(NEVER!) !} ; ******* CREATE MEM.SAV FILE ; 31AE 203032 JSR DO!}_CLOSE 31B1 ADFA03 LDA GINTLK 31B4 D005 ^31BB BNE MEM_FIL 31B6 ADF803 LDA BASI!}CF 31B9 D017 ^31D2 BNE DUP_MEM 31BB A903 MEM_FIL LDA #OPEN ;OPEN 31BD 9D4203 STA!} ICCOM,X 31C0 A908 LDA #WRITE ;FOR WRITE 31C2 9D4A03 STA ICAX1,X 31C5 A98D !} LDA #LOW MEMSAV ;D8:MEM.SAV 31C7 9D4403 STA ICBAL,X 31CA A933 LDA #HIGH MEMSAV !}31CC 9D4503 STA ICBAH,X 31CF 2056E4 JSR CIOV ; ******!}* USE D8:DUP.SYS/MEM.SAV ; 31D2 203032 DUP_MEM JSR DO_CLOSE 31D5 A938 DRIVE_2 LDA #8+'!}0' 31D7 8D3F15 STA MEMDUP ; ******* IF 130XE, EXIT HERE !} ; 31DA ADB133 LDA EXTRA 31DD 3051 ^3230 BMI DO_CLOSE ; !} ******* UPDATE DUP.SYS MENU ; 31DF A903 LDA #OPEN ;OPEN 31E1 9D4203 !} STA ICCOM,X 31E4 A90C LDA #READ+WRITE ;FOR UPDATE 31E6 9D4A03 STA ICAX1,X 31!}E9 A982 LDA #LOW FILE ;D8:DUP.SYS 31EB 9D4403 STA ICBAL,X 31EE A933 LDA !}#HIGH FILE 31F0 9D4503 STA ICBAH,X 31F3 2056E4 JSR CIOV ; !} ******* POINT TO DUP MENU TITLE ; 31F6 A907 LDA #GET ;GET 31F8 9D4203 !} STA ICCOM,X 31FB A930 LDA #LOW 48 ;48 BYTES 31FD 9D4803 STA ICBLL,X 32!}00 A900 LDA #HIGH 48 3202 9D4903 STA ICBLH,X 3205 A9B3 LDA #LOW BUFFER 3!}207 9D4403 STA ICBAL,X 320A A933 LDA #HIGH BUFFER 320C 9D4503 STA ICBAH,X !} 320F 2056E4 JSR CIOV 3212 301C ^3230 OOPS_4 BMI DO_CLOSE ;(HUH?) ; !} ******* WRITE THE NEW TEXT DATA ; 3214 A90B LDA #PUT ;NOW, PUT 3216 9D4!}203 STA ICCOM,X 3219 A91A LDA #LOW [FILE-DUPMOD] 321B 9D4803 STA ICBLL,X 3!}21E A900 LDA #HIGH [FILE-DUPMOD] 3220 9D4903 STA ICBLH,X 3223 A968 LDA #LO!}W DUPMOD ;NEW TEXT 3225 9D4403 STA ICBAL,X 3228 A933 LDA #HIGH DUPMOD 322A 9D4503 !} STA ICBAH,X 322D 2056E4 JSR CIOV ;INTO MENU ; *******!} BE NEAT, CLOSE IT UP. ; 3230 A240 DOCLOSE LDX #$40 3232 A90C LDA #CLOSE 32!}34 9D4203 STA ICCOM,X 3237 4C56E4 JMP CIOV ;BYE, BYE ; !} ********************* ******* * ******* SUBROUTINES * !} ******* * ********************* ; ******* PA!}TCH DOS 2.5 FOR 256K ; 323A A909 DOS_FIX LDA #9 323C 8D8E14 STA $148E 323F !}A941 LDA #$41 3241 8D9514 STA $1495 ; 3244 A00A LDY #SE!}TEND-SETFIX-1 3246 B98E32 ST_FIX LDA SETFIX,Y 3249 99DE12 STA $12DE,Y 324C 88 !}DEY 324D 10F7 ^3246 BPL ST_FIX ; 324F A013 LDY #RAMEND-RAMFIX-1 3251 B9!}9932 RM_FIX LDA RAMFIX,Y 3254 99C414 STA RAMOUT,Y 3257 88 DEY 3258 10F7 ^3251 !} BPL RM_FIX ; 325A A008 LDY #8 325C B99C33 T_MOVE LDA TABLE,Y 325F"} 996318 STA T_ADDR,Y 3262 88 DEY 3263 10F7 ^325C BPL T_MOVE 3265 A963 "} LDA #LOW T_ADDR 3267 8DE712 STA T_FIX+1 326A A918 LDA #HIGH T_ADDR 326C 8DE8"}12 STA T_FIX+2 ; 326F ADC317 LDA $17C3 3272 18 CLC 3"}273 6902 ADC #MF_2-MEMFIX 3275 8DCA17 STA $17CA 3278 A028 LDY #MEMEND-MEMF"}IX-1 327A B9AD32 M_MOVE LDA MEMFIX,Y 327D 993A18 STA M_ADDR,Y 3280 88 DEY 32"}81 10F7 ^327A BPL M_MOVE ; ******* DRIVE FORMAT TABLE FIX "} ; 3283 A98A LDA #$8A 3285 8D5D10 STA S_FIX 3288 A906 LDA #6 "} ;OFFSET-6 328A 8D870B STA FIX_1 328D 60 RTS ; *"}******************** ******* * ******* THE FIXES * " }******* * ********************* ; ******* SET-BANK RO" }UTINE ; 328E = 12DE# SETFIX LOC $12DE 12DE# 2907 AND #%00000111 ;1024 = 0 12" }E0# A8 FINISH TAY 12E1# AD01D3 LDA PORTB 12E4# 09FC ORA #$FC ;SET ALL 12E" }6# 399C33 T_FIX AND TABLE,Y ;SELECT BANK ; 12E9# = 3299 ORG *O = 3299 " } SETEND = * ; ******* RAMDISK I/O EXIT ; 3299 = 14C4# "} RAMFIX LOC RAM_OUT ;($14C4) 14C4# AD01D3 LDA PORT_B 14C7# 09FC ORA #$FC ;SET NO"} BANK 14C9# 8D01D3 STA PORT_B 14CC# A0C0 LDY #$C0 14CE# 8C0ED4 STY NMIEN "} ;RESTORE NMI 14D1# A000 LDY #0 14D3# 8442 STY CRITIC ;CLEAR CRITIC 14D5# 58 "} CLI ;RESTORE IRQ 14D6# C8 INY ;GOOD STATUS 14D7# 60 NEW_OUT "}RTS ;(+3 BYTES) ; 14D8# = 32AD ORG *O = 32AD RAMEND = * "} ; 32AD FD9B MEMFIX DB BELL,CR 32AF 1C4552524F MF_2 DB UP,'ERROR WRITING MEM.SAV - Y TO RUN DOS"}!',CR = 32D6 MEMEND = * ; ******* 192K RAMDISK INITIALIZATION "} ; 32D6 A003 SIX_FIX LDY #3 32D8 B9AD33 FIX_6 LDA BIT_X,Y ;FIX TABLE 32DB 99A033 "} STA TABLE2,Y ;AND MESSAGE 32DE B9E832 LDA MSG_192,Y ;FOR 192K 32E1 997533 STA DUP"}MOD+13,Y 32E4 88 DEY 32E5 10F1 ^32D8 BPL FIX_6 32E7 60 RTS "} ; 32E8 B1B9B2CB MSG_192 DC '1','9','2','K' ; ******* MEMORY TEST "} ; 32EC 8C01D3 MEMTST STY PORTB 32EF AD0040 LDA TSTLC ;GET BYTE 32F2 48 "} PHA ;AND SAVE IT 32F3 8E01D3 STX PORTB ;SWAP BANKS 32F6 CD0040 "}CMP TSTLC ;THEN COMPARE 32F9 D013 ^330E BNE YUP 32FB 8C01D3 STY PORTB ;INCASE DATA "} 32FE 49FF EOR #$FF ;IS SAME 3300 8D0040 STA TSTLC ;INVERT IT 3303 8E01D3 "} STX PORTB ;AND COMPARE 3306 CD0040 CMP TSTLC ;AGAIN... 3309 D003 ^330E BNE "} YUP 330B A2FF NOPE LDX #$FF ;FAILED FLAG 330D SKW ;(SKIP WORD) 330D"} +FC DB $FC ;(BRANCH +2) 330E A200 YUP LDX #0 ;PASSED FLAG 3310 8C01D3 " } STY PORTB 3313 68 PLA ;RESTORE BYTE 3314 8D0040 STA TSTLC 3317"!} 8A TXA ;SET FLAG 3318 60 RTS ; ***""}**** SMARTRAM MESSAGE ; ;SmartRAM-II DOS 2.5 D8:1050 EMULATOR ;by"#} Tim Patrick, COPYRIGHT 1989 ANTIC ; 3319 7D1C1C MSG1 DB CLR,UP,UP 331C 536D617274 "$} DB 'SmartRAM-II DOS 2.5 D8:1050 EMULATOR' 3340 9B DB CR 3341 6279205469 DB 'by Tim Patrick, "%}COPYRIGHT 1989 ANTIC' 3365 1F1F1D DB RIGHT,RIGHT,DOWN = 3368 MSGEND = * ;"&} ******* FILENAMES AND DATA ; 3368 CDCFC4C9C6 DUPMOD DC 'M','O','D','I','F','I' "'} 336E C5C4A0C6CF DC 'E','D',' ','F','O','R' 3374 A0B2B5B6CB DC ' ','2','5','6','K',' ' 337A CDC1C3C8"(}C9 DC 'M','A','C','H','I','N' 3380 C5A1 DC 'E','!' 3382 44313A4455 FILE DB 'D1:DUP.SYS',CR")} 338D 44383A4D45 MEM_SAV DB 'D8:MEM.SAV',CR = 1406 SIZE = 5126 3398 44383A9B DRIVE DB 'D8:',$9B"*} ; ******* MASTER BANK CONTROL TABLE ; 339C A3A7ABAF TABLE "+} DB $A3,$A7,$AB,$AF 33A0 C3C7CBCF TABLE2 DB $C3,$C7,$CB,$CF 33A4 FF NORMAL DB $FF = 339C ",} BIT_6 = TABLE = 33A0 BIT_5 = TABLE2 ; ******* EXTRA RAM CONTROL BYTES "-} ; 33A5 63676B6F BIT_7 DB $63,$67,$6B,$6F 33A9 83878B8F NEWELL DB $83,$87,$8B,$8F 33AD E3".}E7EBEF BIT_X DB $E3,$E7,$EB,$EF 33B1 00 EXTRA DB 0 ; ******* DUP.S"/}YS COPY BUFFER ; = 33B3 BUFFER = *+1 33B2 END INSTAL "0} no ERRORs, 139 Labels, $43F2 free. Tim Patrick * Kailua, HI 96734 END INSTAL cVWn66TXTLVOLOSELOSSCORRROOENSTDFNXYPDLIDCCHBAPMBASSSS&2} @ @@&3} !"&4}#$%SALVAGE 2001 BY JIM TESCH(C) 1989 ANTIC PUBLISHING + A A! Ap&5}+ A@{ A`AY@F) A@<6. SALVAGE 2001H6-@ R A e6. BY JIM TESCHq6-@{ &6}A +6. PRESS START!6-@+ A (B2w@!6--6-@96-@!E6-@!Q6-&7}?@]6-?0i6-{A@A@2dF:B2y,"@" Ap, A P6-@#@&8}#@#@Z Ad @p<w6-@$+@,1,@9@C,@9@4U,@h@(&9}i-@Am w @PF"@ A@P) A  Ap)B2y@Z#)&:}# A d(8,An%8,"@*T:,"G2@%@@S6-@!] Ap&;}2x%8,"@*T:,"G2@@@S6-@!] A &<}2338,@)+8,"@*"@,A`w6-@6-@ -6. ENGINE&=}ERING7 A K6-@#@m2AP@@w Au[6-%A% A9A4@2%&>}+$@,[2338,@)+8,"@*",AZA4@2,6.T&?}RANSHAFT ACTIVE86-@ B A P6-%@Z AE16-%AP%A$++&$A@, ,; AE @&@}p 6-R:, 6-%@??"@)"@)"@ )"@)"@A`A"@*88@&A},%,56-%88@,%,A6-@Y"@*88@,%,56-%88@,%,M68@,-8@,Y6-@&B}Y"@*88@,%,56-%88@,%,M68@,-8@,Y6-@Y"@*88@,%,&C}56-%88@,%,M68@,-8@,Y6-@6- Ap F:B2y,"@@  F&D}:Ad,"@HAprF:B2y,"@$6.ROOM 667@,.=:,B6-@ L A V A ` A r&E}B2y@"&'@P"P:'@P,& A, @6>6. 6-@( A 16.=:,; A &F}>$@w !-@@86-H:,$@yO6-H:,$@ya,@9@9g/m6-s6-w J&G}6.TERMINAL CONDITION(6-@ 2 A O6.ALL VITAL SIGNS CEASED[6-@e A 6-@#@#@&H}#@ @ TW A@ A`!@3,@P@%E,@R@%W,@T@%^mAY@F&I}+6.SHIP ACTIVATED!76-@ A A W6.YOU ARE FAMOUS!c6-@m A h%6-$@ A% @@&J}r^6-%A%@+B2HAg36-&?!@ K6-@ U A^OXYGEN|P&MA@&K}P%Af$+!@,&+@0$+!@,,P$.$"@)H:,$Au!. Az6-F:A4,/-@&L}6@;A4W2APj6-&H:,$n zA4-@@ %&&M}) 7-@E&A I A@P%Af$+!@,&@0$+!@,$^B2IA+&N}6-%A@%@36-&?!@ K6-@ U A@^ENERGYP&MA@P%Af$+!@&O},&+@0$+!@,,P$.$"@)H:,$Au!. A`z6-F:A4,/-@6@;A&P}4W2APj6-&H:,$n zA4-@@ %&) 7-@&Q}E&A I A@P%Af$+!@,&@0$+!@,$YAY'@@ 9@w&R}C A`M A@YROOM DRAWW8@,"-68@,-@B68@,-@W68@,-@&S}W8@,"@-68@,-@B68@,-@W68@,-W8@,"@-68@&T},-@B68@,-W68@,-@W8@,"@-68@,-B68@,-@W68&U}@,-@Q @ !-@y+@ 7,C/@yG Q Ay @,@@&V}1/@a@C,@@U/@@yg,@a@y/@a@yt-6@@$@&W}&8,@ &J/@@ \,@b@ p/@p&t &66-+&@,$@6(88@&X},%,A0N6-@,-@6@F6-&@$+!,JNC:a6-@@&6-@@%-6&Y}-@5&3,9/?,K/@yQ,]/@ya D(88@,%,A NZ-6@@$@&Z}&8,@%J/@@!N ZLEFT DOORXK @!-@5,@%G/@@"&[}K bW-@+@&$?P?,@&@#S/@&@yW l(88@,%,A`&\}vG-6@@$@&6,@y@: GRIGHT DOORK @!-@5,@y@%G&]}/@i@"K W-@+@&$?P?,@i%@#S/@i%@yW v-@@&^}'@1 A`F8@,"U(@g-@@v(@H8@,"&_}'(@9-@@H(@H8@,"'(@9-@@H(@H&`}8@,"'(@9-@@H(@E@@  A`E8,!A%@ &a}$+8,,AY@F$OXYGEN DRAW @,@U@71/@U@9C,@T@8U/@V&b}@8j-6@@v@&,@U@@/@U%@Ea 6-@R(-6@@4&c}@&@,@EL/@yZ6-%@^ a$ @,@%@71/@!@GC/@)@GU/&d}@%@7_@q,@#@B/@'@B$-@@!@5,@ %@I/@ &e}%@7],@S%@q/@S%@7u Au$-@@ .6-H:,$@2&f}Q6-H:,$@%@!p6-H:,$@!%@v,,%@3 4 @,@&@1/@S&g}@4$ 4 ,@ @1/@Y@4$] @!-@95,@ %@Y2&h}@9&@@]  -A6@5H:,$@],H:,$@yH:,$@y&i}y2@@} 2$z| -6@@??2@@&j}O:,C e2o Apy A |$aAY'A4A36-G&k}-@@0V68,-Z aDECK-@@0/6-+&@,$@K68,-6@$+!@,{68%&l}@,-@$+'@P:'@,,68%@,-@$+ @&,LH68%@,-6@$++%@,'@P&m}:+%@,'@,,L N-@@;6-P:H:,$@ ,%J68,-N "-@@&n}&"OXYGEN8%6-P:H:,$@0,%@468,-@8 '-@@&'PLACE POWER<%6-P:H:&o},$@0,%@<8,A p68,-@ P%6-P:H:,$@0,%@<8,A &p}PPLACE ENGINEERING68,-@<%6-P:H:,$@0,%@<8,A468,-@46-P:H:&q},$@0,%@<%6-P:H:,$@0,%@<8,A06-+&@,$@# (8,&r}6-%@# AP$"68@,-P:',&@"$.1AY";@,1DLI ROUTINES8226.(H &s} @Эh@ ЩB;;67@A,.(ЩBЩ؍ЩȍЩh@ЩЩȍL##67@,.h@ h@&t}VKA@#%@AC7%@A2K%@A2`B6-P:C:,'AV,*6-C:,&$AV6A&u}BAj6BBA!AV3AY@46$t1@ A`1@~6&v}AY'AR@6LOWER SCREEN::(@(c c c c c caaaaaaaaaaaaaaaaaac c c c c c::(@(&w}f bbbbbbbbbbbbbbbbbb ::(@(   O E  ::(@( e &x} ffffff '  '  ::(@(   ' '  c::(@(   &y}  '  '  ::(@(      ' '  ::(@( &z}'  '  ::(@( ' '  ::(@( &{}::(@( ::(@( ::(&|}@(  ::(@(c c c c c c c c c c c c c c$TEXT&}} PRINTER(v6-F:@,$@. A`G6-@ &B:,'@M6-^-@B:,d-v(@7<&~},2r%2@@@G2U6-%@Y e@o A`r$<6-F:&}@,$@. A`B-@ @N-@v(@ z @&}F A`$PX@@ 'A49AYC A`XSETUP TITLE SCREENZ= !-&}@y-,9/@y= dY @!-@@%86-H:,$@yO6-H:,$@yU,&}Y nm6-@`6-@0-6@@?@&O:,E,S/%@a6-%@i6-%m x6-@%&}6-@0-6@@?@&O:,E,S/%@a6-%@e o@,@4@$/@6&}@$m6-@16-@0-6@@?@&O:,E,S/%@[6-%i6-%@m l6&}-@96-@0-6@@?@&O:,E,S/%@ a6-%@e lBODY6-@36-@&}0-6@@?@&O:,E,_/%@$+ ,y6-&@$+ ,6-%@ 6-@&}96-@0-6@@?@&O:,E,S6-%@W a@s,@W@(/@g@(&}u6-@r6-@5/-@C@&$@I,U/@tc6-&@q6-%@u M6-@&}P%,@%9,%@@%M,%@@%u6-@r6-@5/-@C@&&}$@I,U/@tc6-&@q6-%@u 4 @,@t@31/@t@44$`AY&}#6-$AV7-A#J%F:BsD%,N X#A `CHSET5""6@&AY@42A&}V5$;-@"-%$@%1 ; AUU1,0,60,60,60,60,0,60,0,16,0,252,204,204,204,204,25&}2,0,17,0,240,48,48,48,48,48,0ZZ18,0,252,12,12,252,192,252,0,19,0,252,12,60,12,12,252,0,20,0,204,204,204,252,12,12,0\\&}21,0,252,192,192,252,12,252,0,22,0,252,192,252,204,204,252,0,23,0,252,12,12,60,48,48,0WW24,0,252,204,204,252,204,252,0,25&},0,252,204,252,12,12,12,0,26,0,0,48,48,0,48,48,0bb33,0,252,204,204,252,204,204,0,34,0,252,204,240,204,204,252,0,35,0,252,&}204,192,192,204,252,0"bb36,0,240,204,204,204,204,240,0,37,0,252,192,240,192,192,252,0,38,0,252,192,240,192,192,192,0,^^&}39,0,252,192,192,204,204,252,0,40,0,204,204,252,204,204,204,0,41,0,252,48,48,48,48,252,06__42,0,12,12,12,204,204,252,0,43,&}0,204,204,240,240,204,204,0,44,0,192,192,192,192,192,252,0@``45,0,204,204,252,252,204,204,0,46,0,252,204,204,204,204,204,0&},47,0,48,204,204,204,204,48,0Jaa48,0,240,204,204,240,192,192,0,49,0,48,204,204,204,204,60,15,50,0,252,204,204,240,204,204,&}0T[[51,0,252,192,252,12,12,252,0,52,0,252,48,48,48,48,48,0,53,0,204,204,204,204,204,252,0^__54,0,204,204,204,204,252,48&},0,55,0,204,204,204,252,252,204,0,56,0,204,204,48,48,204,204,0hXX57,0,204,204,48,48,48,48,0,58,0,252,12,60,240,192,252,0,8&}6,16,16,16,16,16,16,16,16rTT92,0,48,252,204,48,48,48,0,93,0,48,48,48,204,252,48,0,94,0,12,48,255,48,12,0,0|\\95,0,48,12&},255,12,48,0,0,97,20,85,105,105,105,105,105,105,98,105,105,105,105,85,20,0,0__99,0,20,65,85,65,20,0,0,100,255,255,255,255&},255,255,255,255,101,0,0,0,255,255,255,255,255ll102,0,0,0,170,170,170,170,170, 103,170,170,170,170,170,170,170,170,124,19&}2,192,192,192,192,192,192,192-1a6-F:A, 6-&@.6-&@:AFBByR6-A6aDIS&}PLAY LIST[1;@0,9@0,9A,9@,?6-$AVI+@[AYk-@%&}%A) =%@@yT%@F:@,k%@F:@,c-@@%%@) =&}-@@K%@O c%@@ee6-F:@,!6-F:@,96-%$AV%A2T6-&AV&}$P:'AV,e6-P:'AV,>A`)Aa'AV;AY@4>$CF:@,"@ $@&}0@3$CSCREEN MEMORY@@$D1:SALVAGE.BAS>$CF:@,"@ $@$Y