þþdX; PAPERWEIGHTnX; BY Curt FoxxX;‚ „RPADàŒ ƒPAD(– ‚FS  „EOFS‚FS²ª„MRSC‚FS´ ‚VT ¾ „KEYSüÈ ƒCTRÒ …BLINKÔ܆WSTRTFDæ …NMIENÔð†AUDCTLÒú …SKCTLÒ …FSIST0 …SETOB\ä†PADASEô" …START, †SELECT6 …DYMUMP@†FSIVECJ†VTNABLÐT „VDELÐ^†VTBASEÔh †CTRLSBr ƒRED0| …GREENÒ† …AMBER' †ORANGE"š …SPFC0Ƥ …SCBAKÈ®‡ATTRACTM¸ …CONSLРƒCOMBÌ …BUFADDÖ „BUFLHà†CUROSRðê …CHLUMÅô ƒP0CÀþ „HP0CÐ ƒPUT  ƒDMA/ ƒP0XÐ& „OSP0Ò0 „OSP1Ò: „OSP2ÒD „OSP3ÒN „OSC0ÒX „OSC1Òb „OSC2Òl „OSC3Òv „CIOVVä€ ‚PI¸zŠ ƒROWT” ƒCOLUž†XITOBVbä¨ …FSPSP Ò² „GRAF м …HPF1CÐÆ …HPF2CÐÐ …HCBAKÐÚ …PACTLÓä „SHOEî „BOOT ø „SIZEÐX; ,;;After DOSX;  ‚PWQ><* P…PACTL4 Q>;;Trap>P„BOOT;;System ResetHX;R Q>5„SDV1\ P„SHOEf Q>4„SDV1p P„SHOEzX;„„SDV1Q>5ƒPADŽ P†PADASE˜$>¢ &†AUDCTL¬‚CTQ„RPAD9;;Move¶PƒPAD9;;ROMÀQ„RPAD9;;vectorÊPƒPAD9;;tableÔQ„RPAD9;;to RAMÞPƒPAD9;;to useèQ„RPAD9;;as aòPƒPAD9;;"scratchpad"ü0H‚CTQ>…GREEN;;conditionP…SPFC0;;green$X;. ƒSDVQ>>8 PƒDMA;;SetBQ>¡;;preliminaryLP„OSC0;;access orVP„OSC1;;"handshake"`Q>ÿ;;flags sojP„OSP0;;vector istQ>þ;;locatable~ P„OSP1ˆ Q>;;Kill’P†CUROSR;;cursorœX;¦Q…FSIST;;Initalize°PƒFSP;;FlagºP„FSP2;;SequenceÄQ…FSIST;;ProcessingÎPƒFSP;;StackØP„FSP2;;PointersâQ>‚;;(FSPSP)ì $>;;andöƒFSPP…DYMUM9;;their 2;;stack (>;;(F-stack)HƒFSPX;( Q>5ƒFSI2P†FSIVEC< Q>4ƒFSIFP†FSIVEC;;ComputePQ>5‚VT;;mainZP†VTBASE;;offsetsd Q>;;fromnP…SKCTL;;scratchpadx P‡ATTRACT‚Q>Œ P†WSTRTF–X; $>5‚M1;;Printª%>4‚M1;;Paperweight´Q>‚M2‚M1;;by Curt Cox¾ …PRINTÈX;Ò„WAITQ…CONSL;;Wait forÜR>;;[START]æ H„WAITðX;úQ>PƒSTI;;Print‚W2$>5‚M2;;Locating %>4‚M2" Q>‚M3‚M2, …PRINT6X;@Q>ð;;Find nextJ „FIND;;flagTX;^ $>5‚M3h%>4‚M3;;PrintrQ>‚M4‚M3;;Locating| …PRINT†X;Q>ð;;Find nextš „FIND;;vector¤"ƒSTI;;Find more®H‚W2;;if needed¸X; $>5‚M4Ì%>4‚M4;;PrintÖQ>‚M5‚M4;;foundà …PRINT;;andê‚W4Q…CONSL;;waitô R>;;forþH‚W4;;[START]X; $>5‚M5%>4‚M5;;Sure?& Q>‚M6‚M50 …PRINT:X;DQ>NP„KEYS;;Sure.X ‚W3Q„KEYSbR>+lH‚W3vX;€ Q>…AMBERŠP…SPFC0;;Print”$>5‚M6;;ten secondsž%>4‚M6;;to safely¨Q>‚M7‚M6;;abort² …PRINT¼X;ÆQ>5…ABORT;;Abort onÐP„SHOE;;SystemÚQ>4…ABORT;;Resetä P„SHOEîX;øQ> ;;Print 10 PƒSTI;; 9 ƒCDWQ>¾;; 8 „FIND;; 7  $>5‚M7;; 6* %>4‚M7;; 54Q>‚M8‚M7;; 4> …PRINT;; 3H "ƒSTI;; 2RHƒCDW;; 1 + 0\X;fQ>p P‡DAMAGEDz$>5‚M8;;Destruct„%>4‚M8;;ProceedingŽ Q>‚A1‚M8˜ …PRINT¢X;¬Q>À¶P…NMIEN;;SetÀQ>;;finalÊPƒSBI;;flagsÔ‚SB „STAT;;fromÞ"ƒSBI;;f-stackèQƒSBIò P„SLVLüR> H‚SB X; Q>ƒRED$ P…SPFC0. $>5ƒOBI;;Set8 %>4ƒOBI;;A,X,and yB Q>;;and jumpL  …SETOB;;to SDVV X;` Q>;;Successfulj P„SLVL;;Jump?t X;~ ƒREP „STAT;;If notˆ QƒDEL;;try’ GƒQE2;;resetœ !ƒREP;;flags¦ X;° ƒQE2$>ä;;and tryº %>_;;secondaryÄ Q>;;vectorÎ …SETOBØ X;â $>;;The rest ofì ‚FL ƒFOB;;the routinesö 0;;are used H‚FL;;in flag Q>4„RQE2;;and vector P„SHOE;;locating and Q>5„RQE2;;determining( P„SHOE;;proper2 „RQE2Q>;;flag< $>;;valuesF ƒCPLP„GRAF9P 0;;roughZ HƒCPL;;explanationsd H‚FL;;will ben Q>?;;given butx PƒDMA;;generally‚ $>;;a detailedŒ &†VTNABL;;explanation– „POOLQ>O;;would  P‚FS9;;requireª P‚FSÿ9;;comments´ P‚FSþ9;;of an¾ 2;;obsceneÈ 2;;length.Ò Q>5„MRSCÜ P‚FS9;;Foræ P‚FSÿ9;;furtherð P‚FSþ9;;informationú 2;;see the revised (>ÿ;;1986 ATARI H„POOL;;technical Q>A;;users notes" P„EOFS;;destruct, Q>;;appendix6 P„OSP3;;(ATUNDA)@ P„EOFS;;sectionJ P…FSIST;;givenT P…SPFC0^ Q>5‚FSh P„EOFSr P…FSIST| X;† Q> P„OSP0;;Putš Q>;;preliminary¤ P„OSP1;;values in® Q>;;acess¸ P„OSP2;;flags Q>;;to verifyÌ P„OSC0;;vectorÖ Q>ˆ;;locationà P„OSC1ê Q>†ô P„OSC2þ Q>ƒ P„OSC3 X; ‚OL$>& ‚L2Q…FSPSP;;Resort0 2;;vector: P‚FS9;;tableD P‚FSÿ9;;accordingN P‚FSþ9;;to flagX 2;;valueb 2l (>ÿv H‚L2€ X;Š $>ÿ” ‚L3Q…FSPSP;;Screenž P„MRSC9;;out¨ Q…FSPSP;;unnecessary² P„MRSC9;;scratchpad¼ 0;;andÆ H‚L3;;f-stackÐ &‡ATTRACT;;entriesÚ !‚OL;;to saveä ƒFSI5;;time.î Aø 5;;Pass $‚PN;;results Q…FSPSP;;to 6502 PƒP0X9;;stack 0;;to FILO* H„XITD;;reverse4 $>> „XITD&‚PNH 7R >\ 7f 9p X;z ƒOBIQ>ƒRED„ P…HPF2C;;LoadŽ Q> ;;flag˜ P…HPF1C;;location¢ Q>;;and¬ P…HCBAK;;scramble¶ #ƒSTI;;it toÀ QƒSTI;;determineÊ V?;;itsÔ V?;;properÞ V?;;valueè M>ò P…BLINKü Q„SLVL;;ScrambleV?;;it using?;;the vectorQ>;;high byte$ P„OSC3. Q…FSPSP8ƒCSLL…FSPSPB 1;;If theLHƒCSL;;differenceVN…CONSL;;is even`P…CONSL;;thenj$>;;go on.t ‚RLQ…FSPSP~ P„HP0C9ˆQ…FSPSP;;Sort’P„SIZE9;;neededœ 0;;vectors¦H‚RL;;out of°$‚CD;;scratchpadº 0;;andÄH„XITV;;transposeÎQ…FSPSP;;themØ M>p;;asâ„FSP2P…DYMUM;;specifiedìQ>;;by bitsöP…HPF2C;;2,3,4, andP…HCBAK;;7 of their Q>;;f-stackP…HPF1C;;entries"ƒDEL(QƒDEL2V?<V?FV?PV?;;ComputeZ M>;;thedO>;;ambidorsalnP„SLVL;;parallelsxQ>;;by sub-‚P„OSC3;;sequencingŒ%>ƒPAD;;the–„DCHA'ƒCP1;;returciary '‚SL;;indicesª ƒDCH;;and´1;;performing¾)>ƒPAD;;GoadianÈH„DCHA;;transductionÒQƒDELÜ M…FSPSPæL>ð>ú „XITV&‚CD !†XITOBVX;ƒDCH$…FSPSP"Q…FSPSP;;Scramble, M>;;the6H‚SL;;FSPSP@ ƒCP1VƒPAD9J:T ‚SLTƒPAD9^:hX;r „STAT$>|‚PCQ…FSPSP;;Use†M>;;scratchpad PƒP0C9;;tošQ>;;determine¤P†VTNABL;;if all®Q>;;flags¸P„VDEL;;have been 0;;foundÌH‚PCÖX;à$>ÿê„LOOP „SORTôP‚VT9;;Findþ „SORT;;theP‚VT9;;variance „SORT;;factorP‚VT9;;between& „SORT;;FSPSP0P‚VT9;;and the: „SORT;;scratchpadDP‚VT9;;andN0;;restructureX H„LOOP;;ifb:;;necessarylX;v„SORTQ…FSPSP€ „SLVL%>Š‚L9M…FSPSP;;Check” 1;;flagžH‚L9;;to make¨ ?;;sure²M>;;proper¼L>;;value hasÆP„OSC2;;been foundÐCÚ:äX;î„FINDP†CTRLSB;;WaitøƒPAWQ†CTRLSB;;for DestructHƒPAW;;line to  :;;be low.X; ƒFOBQ†CTRLSB*„FOBWR†CTRLSB4F„FOBW;;Check>Q>;;flag,HP„OSC3;;flag valueRQ>;;vector\P…SPFC0;;andfP…SCBAK;;sequencepQ>;;code andzP…CHLUM;;recompute„Q†CTRLSB;;as necessaryŽ‚VWR†CTRLSB˜F‚VW¢ Q>ƒRED¬ P…SPFC0¶Q>À P‡ATTRACTÊ P…SCBAKÔQ> Þ P…CHLUMèQ>ò P„OSC3ü:X;…PRINT'…BUFAD &…BUFAD$P„BUFL;;Print.$>;;routine8 &„BUFLBQ> LPƒCOMV „CIOV`:jX;t…ABORTQ>5ƒPAD;;Clear~P†PADASE;;destructˆQ>;;request’ P†CUROSRœ Q>…GREEN¦PÆ°X;º$>5‚A1;;PrintÄ%>4‚A1;;abortedÎ Q>‚A2‚A1Ø …PRINTâX;ì Q‡DAMAGEDöFƒNOD;;determineQ>†ORANGE;;damage PÆ $>5‚A3 %>4‚A3( Q>‚A4‚A32 …PRINT<X;FƒNOD$>5‚A2;;PrintP%>4‚A2;;howZQ>‚A3‚A2;;muchd …PRINTnX;x…CHECKQ…CONSL‚R>…START;;ExitŒ F„JSDV;;or–R>†SELECT;;restart  F„JDOS;;asª!…CHECK;;requested´ „JSDV!ƒSDV¾ „JDOS!@ :ÈX;Ò ‚CD Ü ƒDEL xæ ‚PN ð‡DAMAGED ú ƒSBI  ƒSTI ‚M1 A‹} A AÐÁÐÅÒ×ÅÉÇÈÔ ³®±A=›" A• by Curt CoxA, ›=›6 A–Press ÛÓÔÁÒÔÝ to beginA@ A locating SDVA=›=›J‚M2 AŒLocating ...A=›T‚M3 AÌïãáôéîç ®®®A=›=AA^‚M4 ›=›=›h A”Self-Destruct VectorAr A† foundA=›=›| A‘Press ÛÓÔÁÒÔÝ to A† AŠexecute orA=› A’ÛÓÙÓÔÅÍ ÒÅÓÅÔÝ to Aš A†abort.A=›=›¤‚M5 AŽýAre you sure?A® A” (press 'Y' for yes)A¸ ›=›Â‚M6 A}A=›=›=›Ì A•You can abort withoutAÖ A‹ damage forA=›à AŒten seconds.A=›=›ê ›ô A• ±°  ¹  ¸  ·  ¶  µ  ´Aþ AŒ  ³  ²  ±  °A=›=AA ‚M7 Aƒ A ‚M8 › A–ÄÅÓÔÒÕÃÔÉÏΠÐÒÏÃÅÅÄÉÎÇA&‚A1 A}A=›=›0 A“Destruct aborted - A=›:‚A2 ›=Apress ÛÓÔÁÒÔÝ toAD ›=A‘re-locate SDV or AN A‘ÛÓÅÌÅÃÔÝ to exit.AX ‚A3 ›=A“Damage incalcuable Ab AŠbecause ofA=›l AŽdamaged memoryA=›v‚A4€X;Šà;;load run address” ‚PWž