home *** CD-ROM | disk | FTP | other *** search
File List | 1998-09-26 | 6.4 KB | 249 lines |
-
- DEF FN Malloc%L(Ammount%L)
- {
- LOCAL Adr%L
- GEMDOS Adr%L,72,L Ammount%L
- RETURN Adr%L
- }
-
- DEF FN Mxalloc%L(Ammount%L,Mem_Mode%L)
- {
- LOCAL Adr%L
- GEMDOS Adr%L,68,L Ammount%L,Mem_Mode%L
- RETURN Adr%L
- }
-
- DEF PROC Mfree(Adr%L)
- {
- LOCAL R%L
- GEMDOS R%L,73,L Adr%L
- RETURN R%L
- }
-
-
- DEF FN My_Mxalloc%L(Ammount%L,Mem_Mode%L)
- {
- LOCAL Adr%L,Super%L
-
- ' IF ( COMPILER ) THEN GEMDOS Super,32,L 0
-
- LOCAL Sram%L=FN Mxalloc%L(-1,0)
- LOCAL Sramg%L=FN Mxalloc%L(-1,64)
- LOCAL Aram%L=FN Mxalloc%L(-1,1)
- LOCAL Aramg%L=FN Mxalloc%L(-1,65)
-
- ' IF ( COMPILER ) THEN GEMDOS ,32,L Super
-
- IF (Sram%L=-1) THEN
- Adr%L=FN Malloc%L(Ammount%L)
- ELSE
- IF ((Sram%L+Aram%L)=Sramg%L) AND ((Sram%L+Aram%L)=Aramg%L) THEN
- Adr%L=FN Mxalloc%L(Ammount%L,Mem_Mode%L AND 3)
- ELSE
- Adr%L=FN Mxalloc%L(Ammount%L,Mem_Mode%L)
- ENDIF
- ENDIF
- RETURN Adr%L
- }
-
- DEF FN Strncmp%L(Adr%L,Str2$,N%L)
- {
- LOCAL I%L
- FOR I%L=1 TO N%L
- IF ( PEEK(Adr%L)<> ASC( MID$(Str2$,I%L,1))) THEN RETURN 1
- Adr%L+=1
- NEXT
- RETURN 0
- }
-
- DEF FN Atoi%L(Adr%L)
- {
- LOCAL Val$=" "*50,I%L=1
- WHILE ( PEEK(Adr%L))
- MID$ (Val$,I%L,1)= CHR$( PEEK(Adr%L))
- Adr%L+=1:I%L+=1
- WEND
- I%L= VAL(Val$)
- RETURN I%L
- }
-
- DEF FN Bgh_Load%L(Name$)
- {
-
- OPEN "i",1,Name$
- File_Len%L= LOF(1)
- CLOSE 1
- IF (File_Len%L>16) THEN
- {
- Bgh_Read%L=FN My_Mxalloc%L(File_Len%L+1,$43):Bgh_Head%L=Bgh_Read%L
- BLOAD Name$,Bgh_Head%L
- POKE Bgh_Read%L+File_Len%L,0
- IF ( LPEEK(Bgh_Head%L)=$23424748) THEN
- {
- DIM Last_Gruppen%L(3)
- FOR I%L=0 TO 2
- Last_Gruppen%L(I%L)=0: LPOKE Bgh_Head%L+4+4*I%L,0
- NEXT
-
- Bgh_Read%L+=16
- WHILE ( PEEK(Bgh_Read%L))
- {
- Char%L= PEEK(Bgh_Head%L)
- WHILE (Char%L<>0 AND Char%L<>$A AND Char%L<>$D)
- Bgh_Read%L+=1:Char%L= PEEK(Bgh_Read%L)
- WEND
- WHILE (Char%L=$A OR Char%L=$D)
- POKE Bgh_Read%L,0:Bgh_Read%L+=1:Char%L= PEEK(Bgh_Read%L)
- WEND
- IF (Char%L= ASC("#")) THEN
- {
- I%L=0:Bgh_Read%L+=1:Char%L= PEEK(Bgh_Read%L)
- SELECT Char%L
- CASE ASC("D")
- Egal$="Dial ":I%L=5:Section%L=0
- CASE ASC("A")
- Egal$="Alert ":I%L=6:Section%L=1
- CASE ASC("U")
- Egal$="User ":I%L=5:Section%L=2
- CASE ASC(" ")
-
- DEFAULT
- Last_Gruppe%L=0
- END_SELECT
- IF (I%L<>0 AND ( NOT FN Strncmp%L(Bgh_Read%L,Egal$,I%L))) THEN
- {
- Bgh_Read%L+=I%L:Char%L= PEEK(Bgh_Read%L)
- Egal%L=Bgh_Read%L
- WHILE (Char%L>= ASC("0") AND Char%L<= ASC("9"))
- Bgh_Read%L+=1:Char%L= PEEK(Bgh_Read%L)
- WEND
- IF (Char%L=$A OR Char%L= ASC(" ") OR Char%L=$D OR Char%L=0) THEN
- {
- IF (Char%L) THEN POKE Bgh_Read%L,0:Bgh_Read%L+=1:Char%L= PEEK(Bgh_Read%L)
- IF (Bgh_Read%L-Egal%L>=3) THEN
- {
- New_Gruppe%L=(Bgh_Read%L-8) AND NOT 1
- WPOKE New_Gruppe%L,FN Atoi%L(Egal%L)
- LPOKE New_Gruppe%L+2,0
- POKE New_Gruppe%L+6,Bgh_Read%L-New_Gruppe%L
-
- IF (Last_Gruppen%L(Section%L)<>0) THEN
- WPOKE Last_Gruppen%L(Section%L)+2,New_Gruppe%L-Last_Gruppen%L(Section%L)
- ELSE
- LPOKE Bgh_Head%L+4+4*Section%L,New_Gruppe%L
- ENDIF
- Last_Gruppe%L=New_Gruppe%L
- Last_Object%L=0
- }
- ENDIF
- }
- ENDIF
- }
- ELSE
- {
- IF (Last_Gruppe%L<>0) THEN
- {
- Bgh_Read%L+=1:Char%L= PEEK(Bgh_Read%L)
- Egal%L=Bgh_Read%L
- WHILE (Char%L>= ASC("0") AND Char%L<= ASC("9"))
- {
- Bgh_Read%L+=1:Char%L= PEEK(Bgh_Read%L)
- }
- WEND
- IF (Char%L= ASC(" ") AND Bgh_Read%L>=3) THEN
- {
- POKE Bgh_Read%L,0:Bgh_Read%L+=1
-
- New_Object%L=(Bgh_Read%L-5) AND NOT 1
- WPOKE New_Object%L,FN Atoi%L(Egal%L)
- WPOKE New_Object%L+2,0
- POKE New_Object%L+4,Bgh_Read%L-New_Object%L
-
- IF (Last_Object%L<>0) THEN
- WPOKE Last_Object%L+2,New_Object%L-Last_Object%L
- ELSE
- WPOKE Last_Gruppe%L+4,New_Object%L-Last_Gruppe%L
- ENDIF
- Last_Object%L=New_Object%L
- }
- ENDIF
- }
- ENDIF
- }
- ENDIF
- }
- ENDIF
- }
- WEND
- }
- ENDIF
- }
- ENDIF
- RETURN Bgh_Head%L
- }
-
- DEF PROC Bgh_Free(Bgh_Head%L)
- {
- IF (Bgh_Head%L<>0 AND LPEEK(Bgh_Head%L)=$23424748) THEN
- {
- LPOKE Bgh_Head%L,0
- Mfree(Bgh_Head%L)
- }
- ENDIF
- }
- END_PROC
-
- DEF FN Bgh_Gethelpstring%L(Bgh_Head%L,Section%L,Gruppe%L,Index%L)
- {
- LOCAL Result%L=0,Bgh_Gruppe%L,Bgh_Object%L
- IF (Bgh_Head%L<>0 AND LPEEK(Bgh_Head%L)=$23424748 AND Section%L>=1 AND Section%L<=3) THEN
- {
-
- Bgh_Gruppe%L= LPEEK(Bgh_Head%L+4*Section%L)
-
- WHILE (Bgh_Gruppe%L)
- {
- IF ( WPEEK(Bgh_Gruppe%L)=Gruppe%L) THEN
- {
- IF (Index%L=-1) THEN
- Result%L=Bgh_Gruppe%L+ PEEK(Bgh_Gruppe%L+6)
- ELSE
- {
- IF ( WPEEK(Bgh_Gruppe%L+4)) THEN
- Bgh_Object%L=Bgh_Gruppe%L+ WPEEK(Bgh_Gruppe%L+4)
- ELSE
- Bgh_Object%L=0
- ENDIF
- WHILE (Bgh_Object%L)
- {
- IF ( WPEEK(Bgh_Object%L)=Index%L) THEN
- {
- Result%L=Bgh_Object%L+ PEEK(Bgh_Object%L+4)
- EXIT
- }
- ENDIF
- IF ( WPEEK(Bgh_Object%L+2)) THEN
- Bgh_Object%L=Bgh_Objec%L+ WPEEK(Bgh_Object%L+2)
- ELSE
- Bgh_Object%L=0
- ENDIF
- }
- WEND
- }
- ENDIF
- EXIT
- }
- ENDIF
- IF ( WPEEK(Bgh_Gruppe%L+2)) THEN
- Bgh_Gruppe%L=Bgh_Gruppe%L+ WPEEK(Bgh_Gruppe%L+2)
- ELSE
- Bgh_Gruppe%L=0
- ENDIF
- }
- WEND
- }
- ENDIF
- RETURN Result%L
- }
-
-