MODULE TRASHY; (*---------------------------------------------------------------------------- * System-Version: MOS 3.5 *---------------------------------------------------------------------------- * Version : 1.0 *---------------------------------------------------------------------------- * Text-Version : V#00055 *---------------------------------------------------------------------------- * Modul-Holder : Meinolf Schneider *---------------------------------------------------------------------------- * Copyright July 1990 by Digital Art Meinolf Schneider * Written for the TOS-Magazin. *---------------------------------------------------------------------------- * MS : Meinolf Schneider *---------------------------------------------------------------------------- * Datum Autor Version Bemerkung (Arbeitsbericht) *---------------------------------------------------------------------------- * 23.07.90 MS 1.0 Grundversion *---------------------------------------------------------------------------- * MODUL-BESCHREIBUNG: * ------------------- * Accessory, bei dem das Icon fr den Papierkorb ge„ndert wird und der * Papierkorb auch sonst seht merkwrdige Dinge tut. *---------------------------------------------------------------------------- *) (*$C-,M-,R-,S-,N+,L-*) FROM System IMPORT BYTE, ADDRESS; FROM MSSystems IMPORT EnterSuperVisorMode, MinMaxRandom; FROM MSSounds IMPORT SetSampleFrequency, StartSound; CONST (* Zugriffoffsets fr LineA-Variablen *) V_REZ_HZ = -$C; V_REZ_VT = -$4; BytesOfOneLine = 2; (* Offsets fr die Icons *) icTrashNormal = 0; icTrashKnock1 = 256; icTrashKnock2 = 2*256; icTrashLook1 = 3*256; icTrashLook2 = 4*256; icTrashLook3 = 6*256; icTrashLook4 = 5*256; icTrashJump1 = 7*256; icTrashJump2 = 8*256; icTrashLanding = 9*256; TYPE Bool = BYTE; (* $00 = FALSE oder $FF = TRUE *) Handle = POINTER TO ADDRESS; ObjectFlags = ( selectable, default, isexit, editable, rbutton, lastob, touchexit, hidetree, indirect ); ObjectStates = ( selected, crossed, checked, disabled, outlined, shadowed, draw3d, whitebak, fe1, fe2 ); ObjectRec = RECORD next : CARDINAL; head : CARDINAL; tail : CARDINAL; typ : CARDINAL; flags : SET OF ObjectFlags; state : SET OF ObjectStates; spec : ADDRESS; x : INTEGER; y : INTEGER; width : CARDINAL; height : CARDINAL; END; IconBlk = RECORD pmask : ADDRESS; pdata : ADDRESS; ptext : ADDRESS; chr : CARDINAL; xchr : INTEGER; ychr : INTEGER; xicon : INTEGER; yicon : INTEGER; wicon : INTEGER; hicon : INTEGER; xtext : INTEGER; ytext : INTEGER; wtext : INTEGER; htext : INTEGER; reserved : INTEGER; END; TrashBehaviorType = ( tbDoWait, tbDoKnock, tbDoLook, tbDoJump ); VAR (* Felder fr AES-Aufrufe *) control : ARRAY[1..5] OF INTEGER; global : ARRAY[1..15] OF INTEGER; intin : ARRAY[1..16] OF INTEGER; intout : ARRAY[1..7] OF INTEGER; addrin : ARRAY[1..3] OF ADDRESS; addrout : ADDRESS; AESPB : ARRAY[1..6] OF ADDRESS; DesktopObjectTreeHdl : Handle; (* Zeiger auf Variable mit Zeiger auf Desktopobjektbaum *) DesktopObjectTree : ADDRESS; (* Zeiger auf Desktop-Objektbaum *) TrashObjectPtr : ADDRESS; (* Zeiger auf das Papierkorbobjekt *) TrashIconMask, TrashIconData : ADDRESS; (* Zeiger auf die entsprechenden Bilddaten des Papierkorbs *) MustDrawTrash : Bool; (* Wird auf TRUE gesetzt, wenn ein FORM_DIAL durchgefhrt werden muž *) BytesOfLine : CARDINAL; IsSM124 : Bool; (* TRUE = ist monochrome Modus => Zeilensynchronisation m”glich! *) HoleAniPhase : CARDINAL; (* Animationsz„hler *) TrashBehavior : TrashBehaviorType; BehaviorCycle : CARDINAL; TrashWaitEnd, TrashPhase : CARDINAL; NoOfTrashJumps : CARDINAL; NoOfTrashKnocks : CARDINAL; TrashXMove : INTEGER; JumpAni : ARRAY[0..11] OF CARDINAL; LookAni : ARRAY[0..8] OF CARDINAL; KnockAni : ARRAY[0..4] OF CARDINAL; LaugherSound : ADDRESS; DongSound : ADDRESS; TABLE.L TabDongSound: $84FFD08C, $C0461738, $6F205F2D, $9BFFFFFF, $7A65DB7D, $CC016758, $3B012367, $8B630198, $783FE87F, $FFFFCAFF, $745C0139, $4FB79CB7, $FFF5B478, $0160763F, $706583AC, $94018D5B, $AA648FFC, $B2D85C67, $7301976F, $C7E2CEF7, $D2C0870A, $605F4A64, $506F4D8E, $778065B4, $748F8C7F, $C0BF95A0, $6C405084, $89DAA7D5, $E0978C60, $61593224, $80776481, $885C4FBF, $9FE0A0A6, $6C5FA154, $625F8669, $8398DDFF, $CDB05280, $37382007, $8A589FA0, $77C3849F, $7E7FBB73, $917C687B, $7B6B8382, $86AAC4EF, $7F9AB02D, $240C1F47, $60BFB591, $EA90C15F, $807E739D, $5880909C, $607B9580, $C59DD37F, $9388624A, $2A1C293B, $638DE0F8, $C1B06F6F, $67778867, $7C79819B, $9BBB7F9F, $B67A9D8F, $8A705054, $4D526542, $5BA2C7CF, $D2AA7570, $5C5A4680, $979DAA7E, $BFA192B1, $688B7C67, $7C476053, $87725F74, $87A6A8B7, $8EAEAA7F, $4833604E, $95BEBCD3, $BBAC7A6A, $6B628060, $58675E9B, $78767D74, $7E94AF94, $9FA3967C, $71606B8E, $76879FD6, $CAA78F64, $535A5472, $5A8B7276, $8D92A795, $7E7B618D, $A7889794, $926F6D79, $7B9A99AC, $B2B97F6D, $50444856, $8F95909C, $A08E867E, $7F66858B, $877F9796, $A19C824C, $6B89868D, $9FA39674, $5A5B705C, $63708EA3, $95AC9077, $5F7B8B8A, $8DA09086, $949B8C87, $7F5E7280, $868EBF88, $78515D67, $63737B9D, $A1A8989C, $7F786272, $878999A5, $A38B9290, $75646B7A, $7A989091, $A58B6055, $61627B86, $A9B0978E, $8B737180, $75858791, $98A0A179, $76736C62, $848C7B94, $9B918E71, $62657063, $7BB3C0B5, $977B7270, $787A8386, $8FA1919C, $88696668, $6973849C, $8D86947A, $6D765672, $888DAAB2, $B78A8C78, $62626C8B, $97979890, $8F887074, $685E7078, $99A39091, $886A6569, $7D859DAA, $9EA69870, $726C6761, $87A09EA9, $9E7D725E, $6C6B7B7E, $81859898, $9D857869, $5B808B9A, $A8A9A487, $7A625C6A, $717D97A5, $999E9079, $5A5B6C75, $8D9895A1, $918E7C7E, $766D7885, $A29FA4A9, $7C686863, $6B728893, $A4A18E7C, $6F615D6E, $798997A9, $A48E816E, $6F757F7C, $8B9A9C9F, $A291725C, $56677687, $A5A59E92, $7F686366, $69829397, $A1A1987F, $6D6A6E7B, $8A919D94, $8E8A7E77, $6F6B6E77, $8597A49E, $8C786D6B, $707B858B, $979D958C, $7D757978, $7B818B95, $958D7E7A, $7A787A7E, $84878B8E, $8C89837C, $797B7C85, $8B8C8E88, $867F817E, $80818487, $88878483, $817F7F7F, $82868585, $85858383, $81808281, $84848685, $85838484, $83828000; TabLaugherSound: $82818180, $7C7C7D84, $8C87857B, $7E7C8081, $8690958C, $817C747C, $808B8D7E, $845F7685, $BCAC856E, $6B899890, $7B6C515A, $85A8C585, $766781AD, $9C866B2E, $678FD3BD, $7B595E99, $C39B7441, $28879FE6, $92694E6C, $A5B28F71, $086580D5, $C472515C, $9ECC9274, $3A338087, $E68A7361, $7DCCA486, $4E555483, $C8B8736A, $52ACC59A, $67514478, $AFCA9D71, $6A5ED9A0, $893E7161, $818BAF83, $7E6B81C3, $906F3078, $43BC66AF, $7E995A8D, $AE896A3E, $8B56B447, $BD83B45A, $93B39460, $45A853B5, $3EC488BA, $3C7FB3A3, $732CB765, $B33FC79D, $BA5050B2, $A18915A2, $6E9D4591, $BBA08322, $A2B5AB1C, $5A93BA6C, $575DF0AF, $6F2F95BE, $803354C8, $865C3BBA, $EBA53B4C, $BBA2A41D, $50ABCF21, $5B5DF3B3, $6E148BE1, $A8183A95, $E9463548, $C0F06726, $4EF3B763, $0C6AB0E9, $8E2A8097, $F2514B31, $F2A8590F, $74A9BB8F, $75358D96, $EB845E2A, $B7AC9F2B, $515DCDAD, $EB0E4E8F, $F1B83121, $86D38032, $3D7E8E8B, $6687D859, $6F6CEDC1, $831B688F, $9C5E5750, $8BB9AD81, $5E89A7C6, $4A5A6FC2, $92634F67, $91968160, $778BA19E, $84698A97, $9390826A, $4EA5BD8B, $3B4590BB, $8F646184, $AA9D7076, $83A48C7F, $899A7A7A, $70898B79, $616F8497, $716071A0, $A082547D, $B4B0736B, $8790857F, $748C6987, $859A6C77, $879F807C, $738A889D, $7F6B7096, $A28F7177, $A4A58761, $7A84A684, $69678D8A, $8C5D7D89, $967B7C8E, $88887B81, $80897884, $84876F75, $7B998782, $787F8E93, $8375788D, $83816782, $8091797D, $7A948587, $869A8886, $79838489, $7B7A7A89, $83807681, $92868A80, $89867E74, $908C7C6C, $80959172, $70789990, $7A6B878E, $8379778B, $858C767B, $8B908A7C, $827E9380, $7D7D8888, $7C807D96, $7D868191, $8B807784, $8B877B7D, $8386867E, $81828B83, $847D7E82, $80828382, $7782848A, $84787E83, $8B827F7B, $81848581, $777C8787, $807A7E87, $8A7D7D84, $8B837C81, $828E7E7B, $86859578, $7C818C8F, $7A807F94, $83867582, $8B848777, $877F8B7D, $81847E88, $81867F7A, $85887F7E, $77838A7E, $7F798A81, $89808087, $85828084, $8681807E, $81848080, $81858780, $807E8780, $8E7F8280, $83838482, $888D8783, $7C7F808D, $92837C79, $8E848270, $7D848A83, $7D77888A, $877B7380, $80837C7A, $80818381, $82868285, $827F8485, $80817E86, $82818080, $867D8086, $86898282, $8B85897C, $86828285, $7D858083, $82818383, $82818583, $85828083, $85818580, $7B83857E, $807F8683, $7E807F84, $817E837F, $84828280, $80817F88, $7A867E82, $84838680, $84848C87, $80857F8A, $85808082, $8585807D, $82868380, $7F808881, $80838286, $81838282, $7F818181, $837E8182, $80887A82, $81848481, $7E828482, $80828183, $84828182, $81828383, $81868184, $84868582, $7D858387, $81808480, $85818187, $7F858283, $86828082, $8686827F, $84897E84, $78837F80, $7D7E8581, $857C8381, $83827E85, $80888082, $82808381, $80838183, $81838284, $85828485, $84838285, $82848383, $84848180, $8382827F, $83808481, $80838288, $7C828187, $7E7C8185, $827B7C78, $7D88928C, $7B7F8389, $6987818A, $7F756A7C, $91968B75, $84907689, $74888188, $747D9FA6, $80738886, $967B7880, $856F7894, $A7837281, $86A37B79, $75676A83, $999F7670, $75949C7D, $817E5F6B, $8FA38A70, $8177A377, $7D6F8373, $759B9D74, $716EA899, $7877706A, $808C9E8E, $787985B1, $777B6F58, $69969B9B, $706B74B0, $93756D83, $47808CA5, $906A689A, $A4785C70, $786C8588, $AC6B657E, $AA8A6E60, $9E71676F, $B292616D, $9EA97056, $729C5099, $84B96F5A, $8CB98B52, $73A6524D, $8EA7C14C, $659DC069, $4B87BC55, $4F97BDA9, $3A77A5B7, $45559DB7, $5A449BD1, $814095AF, $933A7490, $B74A62B6, $C27348A4, $A08B3896, $8EB04670, $AA97A443, $A97CA048, $777B9F80, $36A898C1, $3B8380C7, $6C547F8B, $C84B5D94, $C8944691, $9F9D3E59, $9B9A9749, $739DA695, $56AE7690, $6C807E71, $85B63E91, $78D3685B, $92A29C4F, $5E909B8A, $844EAB8C, $C9409189, $A753737E, $707C7DAD, $6E55A6AD, $9842AF93, $854CA77D, $715199A1, $982E9BAB, $CD5268A9, $A65C5994, $8C877280, $71A87156, $93B2BD50, $757B9961, $70838A7A, $789D9383, $7CA6617F, $9695935B, $96649558, $808F7F7F, $86977B79, $8C868B6E, $8D87905B, $6CAA975B, $5C948177, $7E8C817F, $977C9A77, $847E938C, $78728785, $757E7D89, $7E80718E, $88787C8C, $98717A96, $91896E90, $857A7991, $7F70828E, $856B878A, $887D7892, $817E8794, $7F698498, $797B7E8F, $8E7D816E, $937A9177, $7086788C, $72779381, $7E7C987F, $80808A7B, $828B7A84, $828C7879, $89858076, $8B868782, $7A7B8687, $82787B80, $818D7D80, $7E90857B, $8C848280, $80827D86, $797F7D88, $7880808B, $807E8888, $887A788B, $8F7A7380, $89857A84, $8087838E, $75878584, $867A8285, $88827C82, $86887E7E, $8384867B, $7D8A847C, $7B848C7A, $7C85897F, $807C8186, $7B877A82, $857A887D, $8883827F, $887E8281, $7C897C85, $76878283, $7F808486, $897E8082, $89818784, $7D858682, $78838585, $7E7C8982, $817F8585, $7C838283, $7F87837F, $7F7F8179, $8678887F, $867F7E8C, $7F7F7D85, $7D807F83, $84847884, $83857880, $88867E7F, $85838580, $84888482, $80838485, $7F818284, $81818282, $81868080, $82848280, $80868285, $7C817F85, $7A807E7F, $837E8280, $857C8581, $83818083, $7D828480, $807D887F, $847F8386, $7F808284, $83808481, $86808083, $827D8280, $81818082, $82848085, $7F828480, $857D8281, $83808282, $83807F81, $80837F82, $7F828181, $81828282, $82828083, $827F8082, $82807D83, $7F808280, $81878083, $80858582, $8480827F, $83847E82, $81848080, $81828281, $7F848182, $81828181, $837E8081, $817E8082, $80807F81, $8380807E, $8481817E, $85828481, $7F818180, $81818482, $80828286, $85838184, $82817F83, $81838180, $83808180, $83818580, $82838081, $80818081, $80817E82, $80808080, $8080817F, $83817E80, $80818182, $80808180, $81808180, $80818080, $81808280, $85828383, $81818380, $84808280, $80838181, $81828185, $83818283, $847F8180, $8181817F, $817E807D, $807F8180, $80808080, $847F8181, $83818382, $84818381, $81808081, $80808080, $80808181, $83818281, $83828180, $81808180, $81838281, $81828580, $81818381, $80808280, $80807F81, $807E7D80, $84827F80, $80828180, $81818683, $837F7F80, $807F7584, $80847E81, $86817B88, $898A7E84, $84857580, $8580837C, $8B738087, $90817A87, $88787B84, $83807C89, $7688848F, $7983897F, $7C808280, $7F82738A, $878D7386, $86847F80, $897A8F77, $80858E7C, $828A8281, $7B8A8090, $5A7B8A82, $88768D7D, $877F9777, $855E7C8A, $7F8F718D, $748B7B91, $7E90557F, $867D856D, $916D8F6D, $956F9757, $83888189, $679C75A0, $65A0699B, $5288818C, $8D738E7C, $916D9070, $A45A8088, $89817195, $9082708A, $779A6288, $848D8273, $99847E7F, $897A8D4E, $9876956C, $8A848574, $7B897092, $4F9B7696, $7189868C, $70818772, $96509E6F, $99719181, $94757789, $73954E90, $7B987392, $73987275, $877B985C, $887D9D71, $84828184, $6B8A7786, $7F559C83, $8F679D74, $8F767A7D, $8484805E, $A7739D6A, $9D6E8C7D, $82778282, $A2607F89, $9E738687, $778C7383, $797E8C7F, $5992849C, $64927A86, $7B787E76, $8079A653, $7F8FA278, $719F7B75, $6D9E6988, $70829877, $5C8F929F, $6B827D8C, $7285708E, $748F7C7C, $8B806D8A, $969C7A7B, $7F8E6F80, $7F7E7F84, $848B8083, $808E8079, $8D838085, $71807588, $847E7E84, $8A878083, $87847986, $80827580, $8D876C80, $85807B7F, $837A7F8B, $7F877C80, $8A828280, $78867C80, $837E8484, $817F8488, $7B7E8585, $817E8684, $86808280, $7B83847A, $7A83897A, $7B828183, $7F7D867D, $7D89877A, $7885887D, $877D8783, $867F7B81, $8A847C7F, $7986807D, $7C8D817E, $7E89827D, $88847F81, $857E8380, $81807F82, $81818282, $81838680, $7C828280, $7C827B82, $827F817F, $84817D85, $837D8180, $837E8680, $8380847E, $7F808584, $80818380, $807C8481, $7D808080, $81808583, $80848281, $84808481, $80817D84, $837F8081, $85818080, $82837F7E, $80837E7E, $82827F80, $80837F84, $7E828180, $837E8380, $84808083, $80818381, $7E808180, $81827F80, $82838180, $81838480, $8380827F, $80827E81, $8183807F, $8282837F, $83818281, $7F838080, $8180807E, $817E7E81, $80808080, $80808181, $80808281, $81808081, $8081817F, $82808180, $837F8180, $83808382, $82817F82, $81808080, $80818180, $80808081, $80808180, $84808181, $82818080, $81808180, $7F808180, $7F808083, $80808080, $80808180, $80808080, $80818080, $80818180, $82828282, $80818081, $81808181, $80828080, $80828080, $80828180, $81808180, $80828081, $80818080, $80808180, $80808081, $80818180, $80808080, $81818080, $80808080, $80808082, $7F808081, $81828182, $81808182, $80818081, $81808080, $80818081, $81808080, $80808180, $81808080, $80808081, $80808080, $80808081, $82808181, $80808180, $81808080, $80808080, $80808081, $80818081, $81818181, $80818080, $80808081, $80818080, $80818082, $80818081, $80808080, $80808080, $80808080, $80808180, $80808080, $80808081, $80808282, $80808080, $807F8083, $83808081, $82808081, $80818181, $80808180, $7E818484, $807E8183, $807F7D83, $81818081, $817C7F83, $87817D80, $81817D7D, $8380807F, $837F7C81, $85877D7E, $81837E7B, $8481817D, $84807C81, $85877F80, $8286797F, $82827F7F, $8679817F, $89807F80, $85827D83, $7F837C88, $7C817F89, $807C8381, $827B8280, $827C867B, $7D7E8B82, $7B818282, $7B818084, $7D837683, $7D8A847E, $8281837F, $81808480, $8373867F, $87807F85, $80807E82, $81808082, $77848385, $7E80827F, $807E8080, $7F828276, $8281877D, $81828081, $7E817F80, $83887A7A, $818A7F80, $817E847C, $817F8082, $867E7681, $87887984, $80857E7D, $82807F80, $8E747C80, $90807D81, $817F7D80, $807E7F84, $86777984, $8B857880, $81817C81, $7E807F82, $8086767E, $858D8278, $8083847A, $807F8180, $8180818C, $75807E91, $817E7A87, $807C7D81, $7F818285, $7B8B727E, $8090867B, $7B84827B, $77838480, $7C828080, $7F828578, $8282887C, $7D7D857F, $7E798083, $82818381, $80848184, $8080807E, $8480837C, $8181807E, $80808082, $82808082, $82808281, $837C8080, $807F8080, $807F7E80, $81808000; TABLE.L icons: (* NEUE ICONS FšR DEN PAPIERKORB *) $00000000, $00000000, $00000000, $00000000, $00000000, $0007C000, $03FD7F80, $070C61C0, $08000020, $078003C0, $02FFFE80, $02000080, $02884480, $02884480, $02884480, $02884480, $02891480, $0289B480, $0288E480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02C84C80, $030CC180, $01C00700, $007FFC00, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $0007C000, $03FFFF80, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $01FFFF00, $007FFC00, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $0007C000, $03FD7F80, $070C61C0, $08000020, $078003C0, $02FFFE80, $02000080, $02884480, $02884480, $02884480, $02884480, $02891480, $0291B480, $0290E480, $02904480, $02904480, $02904480, $02884480, $02884480, $02884480, $02884480, $02884480, $02C84C80, $030CC180, $01C00700, $007FFC00, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $0007C000, $03FFFF80, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $01FFFF00, $007FFC00, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $0007C000, $03FD7F80, $070C61C0, $08000020, $078003C0, $02FFFE80, $02000080, $02884480, $02884480, $02884480, $02904480, $02901480, $0291B480, $02A0E480, $02A06480, $02A02480, $02902480, $02902480, $02904480, $02884480, $02884480, $02884480, $02C84C80, $030CC180, $01C00700, $007FFC00, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $0007C000, $03FFFF80, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $01FFFF00, $007FFC00, $00000000, $00000000, $00000000, $00000000, $00000000, $0007C000, $03FD7F80, $070C61C0, $08000020, $078003C0, $07FFFFC0, $02FFFE80, $02000080, $02884480, $02884480, $02884480, $02884480, $02891480, $0289B480, $0288E480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02C84C80, $030CC180, $01C00700, $007FFC00, $00000000, $00000000, $00000000, $00000000, $00000000, $0007C000, $03FFFF80, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $07FFFFC0, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $01FFFF00, $007FFC00, $00000000, $00000000, $00000000, $0007C000, $03FD7F80, $070C61C0, $08000020, $078003C0, $07FFFFC0, $0FF1C7E0, $07E69BC0, $02FFFE80, $02000080, $02884480, $02884480, $02884480, $02884480, $02891480, $0289B480, $0288E480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02C84C80, $030CC180, $01C00700, $007FFC00, $00000000, $00000000, $00000000, $0007C000, $03FFFF80, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $01FFFF00, $007FFC00, $00000000, $0007C000, $03FD7F80, $070C61C0, $08000020, $078003C0, $00FFFE00, $00E38E00, $07D967C0, $0FD967E0, $07E38FC0, $02FFFE80, $02000080, $02884480, $02884480, $02884480, $02884480, $02891480, $0289B480, $0288E480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02C84C80, $030CC180, $01C00700, $007FFC00, $00000000, $0007C000, $03FFFF80, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $00FFFE00, $00FFFE00, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $01FFFF00, $007FFC00, $00000000, $0007C000, $03FD7F80, $070C61C0, $08000020, $078003C0, $00FFFE00, $00E38E00, $07CD37C0, $0FCD37E0, $07E38FC0, $02FFFE80, $02000080, $02884480, $02884480, $02884480, $02884480, $02891480, $0289B480, $0288E480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02C84C80, $030CC180, $01C00700, $007FFC00, $00000000, $0007C000, $03FFFF80, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $00FFFE00, $00FFFE00, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $01FFFF00, $007FFC00, $00000000, $0007C000, $03FD7F80, $070C61C0, $08000020, $078003C0, $07FFFFC0, $0FF1C7E0, $07E69BC0, $02FFFE80, $02000080, $02884480, $02884480, $02884480, $02884480, $02891480, $0289B480, $0288E480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02C84C80, $030CC180, $01C00700, $007FFC00, $00000000, $00000000, $00000000, $0007C000, $03FFFF80, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $01FFFF00, $007FFC00, $00000000, $00000000, $00000000, $0007C000, $03FD7F80, $070C61C0, $08000020, $078003C0, $07FFFFC0, $02FFFE80, $02000080, $02884480, $02884480, $02884480, $02884480, $02891480, $0289B480, $0288E480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02884480, $02C84C80, $030CC180, $01C00700, $007FFC00, $00000000, $00000000, $00000000, $00000000, $00000000, $0007C000, $03FFFF80, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $07FFFFC0, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $01FFFF00, $007FFC00, $00000000, $00000000, $00000000, $00000000, $00000000, $0007C000, $03FD7F80, $070C61C0, $08000020, $078003C0, $00FFFE00, $00E38E00, $07CD37C0, $0FCD37E0, $07E38FC0, $02FFFE80, $02000080, $02884480, $02884480, $02884480, $02884480, $02891480, $0289B480, $0288E480, $02884480, $02884480, $02884480, $02884480, $22884490, $328844A0, $12884480, $02884488, $02C84C98, $330CC1A0, $19C00700, $027FFC70, $00000000, $0007C000, $03FFFF80, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $00FFFE00, $00FFFE00, $07FFFFC0, $0FFFFFE0, $07FFFFC0, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $03FFFF80, $23FFFF90, $33FFFFA0, $13FFFF80, $03FFFF88, $03FFFF98, $33FFFFA0, $19FFFF00, $027FFC70, $00000000; PROCEDURE LineSync ( BottomLineNo : CARDINAL ); BEGIN ASSEMBLER tst.b IsSM124 beq.w ED jsr EnterSuperVisorMode move.w -(A3),D1 mulu BytesOfLine,D1 move.l #$FF8201,A0 clr.l D0 movep.w 0(A0),D0 lsl.l #8,D0 move.b $C(A0),D0 ; Video Base add.l D1,D0 move.l $466,D2 !WaitTopOfLine move.l $466,D1 sub.l D2,D1 cmpi.w #3,D1 bhi WaitEnd clr.l D1 movep.w 4(A0),D1 lsl.l #8,D1 move.b $8(A0),D1 ; Video Address Counter cmp.l D0,D1 bhi WaitTopOfLine move.l $466,D2 !WaitBottomOfLine move.l $466,D1 sub.l D2,D1 cmpi.w #3,D1 bhi WaitEnd clr.l D1 movep.w 4(A0),D1 lsl.l #8,D1 move.b $8(A0),D1 ; Video Address Counter cmp.l D0,D1 bcs WaitBottomOfLine !WaitEnd andi.w #$DFFF,SR !ED END; END LineSync; PROCEDURE CopyRight; BEGIN ASSEMBLER ; FORM_ALERT lea control,A0 move.w #52,(A0) move.w #1,2(A0) move.w #1,4(A0) move.w #1,6(A0) clr.w 8(A0) move.w #1,intin pea astring(PC) move.l (A7)+,addrin move.l #AESPB,D1 move.w #200,D0 trap #2 ; AES-Aufruf rts !astring acz '[3][ TRASHY| |½July 1990 by Meinolf Schneider | Written with Megamax-Modula-2| for the TOS-Magazin][OK]' sync END; END CopyRight; PROCEDURE SetTrashIcon ( WhichIcon : CARDINAL ); BEGIN ASSEMBLER st MustDrawTrash lea icons,A2 move.w -(A3),D0 adda.w D0,A2 move.l TrashIconMask,A0 move.l TrashIconData,A1 move.w #31,D0 !CopyIcon move.l 128(A2),(A0)+ move.l (A2)+,(A1)+ dbf D0,CopyIcon END; END SetTrashIcon; PROCEDURE SetNextTrashBehavior; BEGIN INC ( BehaviorCycle ); CASE BehaviorCycle OF 1..3: TrashBehavior := tbDoKnock| 4..5: TrashBehavior := tbDoLook| 30: TrashBehavior := tbDoKnock; CopyRight| ELSE TrashBehavior := TrashBehaviorType ( MinMaxRandom ( 1, 3 ) ); END; CASE TrashBehavior OF tbDoJump: NoOfTrashJumps := MinMaxRandom ( 1, 10 )| tbDoKnock: NoOfTrashKnocks := MinMaxRandom ( 1, 4 )| END; TrashWaitEnd := MinMaxRandom ( 5, 20 ); TrashPhase := 0; END SetNextTrashBehavior; PROCEDURE SetWaitBehavior; BEGIN TrashBehavior := tbDoWait; TrashWaitEnd := MinMaxRandom ( 10, 200 ); (* 1 bis 20 sec *) TrashPhase := 0; END SetWaitBehavior; PROCEDURE DoWait; BEGIN INC ( TrashPhase ); IF TrashPhase > TrashWaitEnd THEN SetNextTrashBehavior; END; END DoWait; PROCEDURE DoKnock; BEGIN SetTrashIcon ( KnockAni[TrashPhase] ); CASE TrashPhase OF 2: EnterSuperVisorMode; StartSound ( DongSound, 1 ); ASSEMBLER andi.w #$DFFF,SR END| 3: DEC ( NoOfTrashKnocks ); IF NoOfTrashKnocks # 0 THEN TrashPhase := 0; (* ...nochmal klopfen! *) END; END; INC ( TrashPhase ); IF TrashPhase = 5 THEN SetWaitBehavior; END; END DoKnock; PROCEDURE DoLook; BEGIN SetTrashIcon ( LookAni[TrashPhase] ); IF TrashPhase = 5 THEN EnterSuperVisorMode; StartSound ( LaugherSound, 1 ); ASSEMBLER andi.w #$DFFF,SR END; END; INC ( TrashPhase ); IF TrashPhase = 9 THEN SetWaitBehavior; END; END DoLook; PROCEDURE DoJump; BEGIN SetTrashIcon ( JumpAni[TrashPhase] ); IF TrashPhase = 7 THEN EnterSuperVisorMode; StartSound ( DongSound, 1 ); ASSEMBLER andi.w #$DFFF,SR END; DEC ( NoOfTrashJumps ); IF NoOfTrashJumps # 0 THEN TrashPhase := 3; (* ...nochmal springen! *) END; END; IF (TrashPhase > 3) & (TrashPhase < 8) THEN TrashXMove := 2; ELSE TrashXMove := 0; END; INC ( TrashPhase ); IF TrashPhase = 12 THEN SetWaitBehavior; END; END DoJump; BEGIN ASSEMBLER ; APPL_INIT lea control,A0 move.w #10,(A0) clr.w 2(A0) move.w #1,4(A0) clr.w 6(A0) clr.w 8(A0) lea AESPB,A0 move.l #control,(A0)+ move.l #global,(A0)+ move.l #intin,(A0)+ move.l #intout,(A0)+ move.l #addrin,(A0)+ move.l #addrout,(A0)+ move.l #AESPB,D1 move.w #200,D0 trap #2 ; AES-Aufruf ; TOS-Version ermitteln, wodurch sich die Variable mit dem Zeiger ; auf die aktuelle Desktop-Objektliste ergibt. jsr EnterSuperVisorMode move.l $4F2,A0 move.w $2(A0),D1 ; D1 = TOSVersion move.l 24(A0),D2 ; D2 = Erstellungsdatum clr.l DesktopObjectTreeHdl cmpi.w #$0100,D1 bne NoTOS10 move.l #$A0C4,DesktopObjectTreeHdl bra TOSOk !NoTOS10 cmpi.w #$0102,D1 bne NoTOS12 move.l #$C942,DesktopObjectTreeHdl bra TOSOk !NoTOS12 cmpi.w #$0104,D1 bne NoTOS14 cmpi.l #$08081988,D2 bne IsNewTOS14 move.l #$71E2,DesktopObjectTreeHdl ; TOS 1.4 vom 8.8.88 bra TOSOk !IsNewTOS14 move.l #$6E38,DesktopObjectTreeHdl ; TOS 1.4 > 8.8.88 z.B. 6.4.89 bra TOSOk !NoTOS14 cmpi.w #$0106,D1 bne NoTOS16 cmpi.l #$06191989,D2 bne IsNewTOS16 move.l #$6E3C,DesktopObjectTreeHdl ; altes TOS 1.6 bra TOSOk !IsNewTOS16 move.l #$6E7C,DesktopObjectTreeHdl ; neues TOS 1.6 v. 29.7.90 !NoTOS16 !TOSOk andi.w #$DFFF,SR ; SuperMode verlassen dc.w $A000 move.w BytesOfOneLine(A0),BytesOfLine sf IsSM124 cmpi.w #400,V_REZ_VT(A0) bne IsNoSM124 cmpi.w #640,V_REZ_HZ(A0) bne IsNoSM124 st IsSM124 !IsNoSM124 move.l #TabDongSound,DongSound move.l #TabLaugherSound,LaugherSound END; SetSampleFrequency ( 6269 ); KnockAni[0] := icTrashNormal; KnockAni[1] := icTrashKnock1; KnockAni[2] := icTrashKnock2; KnockAni[3] := icTrashKnock1; KnockAni[4] := icTrashNormal; LookAni[0] := icTrashNormal; LookAni[1] := icTrashLook1; LookAni[2] := icTrashLook2; LookAni[3] := icTrashLook3; LookAni[4] := icTrashLook4; LookAni[5] := icTrashLook3; LookAni[6] := icTrashLook2; LookAni[7] := icTrashLook1; LookAni[8] := icTrashNormal; JumpAni[0] := icTrashNormal; JumpAni[1] := icTrashLook1; JumpAni[2] := icTrashLook2; JumpAni[3] := icTrashLook3; JumpAni[4] := icTrashJump1; JumpAni[5] := icTrashJump2; JumpAni[6] := icTrashJump1; JumpAni[7] := icTrashLanding; JumpAni[8] := icTrashLook3; JumpAni[9] := icTrashLook2; JumpAni[10] := icTrashLook1; JumpAni[11] := icTrashNormal; TrashWaitEnd := MinMaxRandom ( 600, 1200 ); REPEAT ASSEMBLER ; EVNT_TIMER lea control,A0 move.w #24,(A0) move.w #2,2(A0) move.w #1,4(A0) clr.w 6(A0) clr.w 8(A0) lea intin,A0 move.w #100,(A0) ; 100 Millisekunden fr andere Prozesse... move.w #0,2(A0) move.l #AESPB,D1 move.w #200,D0 trap #2 ; AES-Aufruf tst.l TrashObjectPtr bne IHaveTheTrashObject tst.l DesktopObjectTreeHdl beq.w UnknownTOS move.l DesktopObjectTreeHdl,A0 tst.l (A0) beq.w ThatsNotTheDesktopObjectTree !SearchTrash ; Suchen des Papierkorbobjekts, es ist das erste Icon-Objekt in der Liste move.l DesktopObjectTreeHdl,A0 move.l (A0),A0 move.l A0,DesktopObjectTree !NoTrashFound lea 2(A0),A0 cmpi.l #$FFFF001F,(A0) bne NoTrashFound subq.l #4,A0 move.l A0,TrashObjectPtr move.l ObjectRec.spec(A0),A0 move.l IconBlk.pmask(A0),TrashIconMask move.l IconBlk.pdata(A0),TrashIconData ; ... und gleich mal das Icon „ndern: move.w #icTrashNormal,(A3)+ jsr SetTrashIcon !IHaveTheTrashObject move.l DesktopObjectTreeHdl,A1 tst.l (A1) beq.w ThatsNotTheDesktopObjectTree move.l DesktopObjectTree,A0 cmpa.l (A1),A0 bne.w SearchTrash ; Objektbaum wurde neu erstellt! move.w TrashBehavior,D0 add.w D0,D0 add.w D0,D0 pea AfterBehavior(PC) move.l BehaviorProcs(PC,D0.W),-(A7) rts !BehaviorProcs dc.l DoWait, DoKnock, DoLook, DoJump !AfterBehavior !DrawTrash tst.b MustDrawTrash beq.w NoTrashDraw sf MustDrawTrash ; WIND_UPDATE (BEGIN) lea control,A0 move.w #107,(A0) move.w #1,2(A0) move.w #1,4(A0) clr.w 6(A0) clr.w 8(A0) lea intin,A0 move.w #1,(A0) move.l #AESPB,D1 move.w #200,D0 trap #2 ; AES-Aufruf ; FORM_DIAL lea control,A0 move.w #51,(A0) move.w #9,2(A0) move.w #1,4(A0) clr.w 6(A0) clr.w 8(A0) lea intin,A0 move.w #3,(A0) move.w #0,2(A0) move.w #0,4(A0) move.w #0,6(A0) move.w #0,8(A0) move.l TrashObjectPtr,A1 move.w ObjectRec.x(A1),D0 move.w D0,10(A0) add.w TrashXMove,D0 move.w D0,ObjectRec.x(A1) move.w ObjectRec.y(A1),12(A0) move.w ObjectRec.width(A1),D0 add.w TrashXMove,D0 move.w D0,14(A0) move.w ObjectRec.height(A1),16(A0) move.w ObjectRec.y(A1),(A3)+ jsr LineSync move.l #AESPB,D1 move.w #200,D0 trap #2 ; AES-Aufruf ; WIND_UPDATE (END) lea control,A0 move.w #107,(A0) move.w #1,2(A0) move.w #1,4(A0) clr.w 6(A0) clr.w 8(A0) lea intin,A0 move.w #0,(A0) move.l #AESPB,D1 move.w #200,D0 trap #2 ; AES-Aufruf !UnknownTOS !NoTrashDraw !ThatsNotTheDesktopObjectTree END; UNTIL FALSE; END TRASHY.