(*--------------------------------------------------------------------------- :Program. IntuiPointer.mod :Contents. Prozeduren zum Setzen des Mauszeigers auf 'Busy' (ZZ) :Author. Bernd Preusing :Address. Gerhardstr. 16 D-2200 Elmshorn :Phone. 04121/22486 :Copyright. Public Domain :Language. Modula-2 :Translator. M2Amiga V3.2e :History. V1.0 08-Oct-89 Bernd Preusing :Bugs. none :Remark. Please, create beautiful pointers for me! ---------------------------------------------------------------------------*) IMPLEMENTATION MODULE IntuiPointer; FROM SYSTEM IMPORT ADDRESS, ADR, INLINE; IMPORT Arts, Intuition, Exec; CONST POINTERSIZE = (16+2)*2*2; (* never change this! *) VAR ZZ: ADDRESS; StartLevel: INTEGER; (* $E- *) PROCEDURE ZZData(); (* I'm busy or tired! *) BEGIN INLINE( 00000H,00000H, 03E00H,03E00H, 07FC0H,07FC0H, 043E0H,07FE0H, 0F7E0H,0FFE0H, 0EE10H,0FFF0H, 0C3B0H,0FFF0H, 07F70H,07FF0H, 07E10H,07FF0H, 03FE0H,03FE0H, 01FC0H,01FC0H, 00020H,00020H, 007E0H,007E0H, 007C0H,007C0H, 00330H,00330H, 00070H,00070H, 00030H,00030H, 00000H,00000H ) END ZZData; PROCEDURE Normal(Win:Intuition.WindowPtr); BEGIN Intuition.ClearPointer(Win); END Normal; PROCEDURE Busy(Win:Intuition.WindowPtr); BEGIN Intuition.SetPointer(Win,ZZ,16,16,-7,-7); END Busy; PROCEDURE Exit; BEGIN IF Arts.CurrentLevel()<=StartLevel THEN IF ZZ#NIL THEN Exec.FreeMem(ZZ,POINTERSIZE); ZZ:=NIL; END; END END Exit; BEGIN StartLevel:=Arts.CurrentLevel(); ZZ:=NIL; Arts.TermProcedure(Exit); ZZ:=Exec.AllocMem(POINTERSIZE,Exec.MemReqSet{Exec.chip,Exec.public}); Arts.Assert(ZZ#NIL,ADR('no chipmem for Busy Pointer')); Exec.CopyMem(ADR(ZZData),ZZ,POINTERSIZE); END IntuiPointer.mod