home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Hack-Phreak Scene Programs
/
cleanhpvac.zip
/
cleanhpvac
/
AXDOS10.ZIP
/
PCBDOS.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1996-09-06
|
7KB
|
570 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 3.2O (Encryption type I) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Integer INTEGER001
String STRING001
String STRING002
String STRING003
String STRING004
String STRING005
String STRING006
String TSTRING007(10)
String TSTRING008(1)
String STRING009
String STRING010
String STRING011
String STRING012
String STRING013
String STRING014
String STRING015
String STRING016
String STRING017
String STRING018
String STRING019
String STRING020
String STRING021
String STRING022
String STRING023
String STRING024
String STRING025
String STRING026
String STRING029
String STRING030
String STRING031
Int INT001
Int INT002
Int INT003
Declare Function FUNCTION001(Integer INTEGER005) String
Declare Function FUNCTION002() String
Declare Procedure PROC001(Var String STRING027, Integer INTEGER002)
;------------------------------------------------------------------------------
STRING005 = Cwd()
TSTRING008(0) = " @X08· @X09PCBoard DOS Version 1.00 @X08· @X07Coded by @X0FM@X07av@X08erick [@X0CANTi@X08-@X0FX@X08]"
TSTRING008(1) = " @X08· @X07Based on iNiQUiTY's MicroDOS(C) by Mike Fricker"
FOpen 1, PPEPath() + "PCBDOS.CFG", 0, 0
FGet 1, STRING015
FGet 1, STRING003
FGet 1, STRING021
FGet 1, STRING018
FGet 1, STRING019
FGet 1, STRING016
FGet 1, STRING017
FGet 1, STRING022
FGet 1, STRING023
FGet 1, STRING024
FGet 1, STRING025
FGet 1, STRING026
FGet 1, STRING020
FGet 1, STRING009
FGet 1, STRING010
FGet 1, STRING011
FGet 1, STRING012
FGet 1, STRING014
FGet 1, STRING013
FClose 1
RdUNet PcbNode()
WrUNet PcbNode(), "B", UN_Name(), UN_City(), UN_Name(), ""
Cls
PrintLn STRING015
Newlines 2
PrintLn TSTRING008(0)
PrintLn TSTRING008(1)
Newline
INT002 = 0
:LABEL001
StartDisp 1
BOOLEAN001 = 0
Newline
OpText Cwd()
Print STRING003
PROC001(STRING004, 80 - Len(Cwd()))
If (STRING004 == "") Goto LABEL001
STRING006 = STRING004
STRING004 = Upper(STRING004)
If (InStr(STRING004, "/P") > 0) Then
STRING004 = StripStr(STRING004, "/P")
BOOLEAN001 = 1
Endif
Tokenize STRING004
STRING004 = GetToken()
If (STRING004 == "EXIT") Then
ChDir STRING005
End
Endif
Select Case (STRING004)
Case "?", "HELP"
If (BOOLEAN001) StartDisp 2
DispFile PPEPath() + "PCBDOS.HLP", 0
Case "DIR"
If (BOOLEAN001) StartDisp 2
Newlines 2
STRING004 = GetToken()
If (STRING004 == "") STRING004 = "*.*"
STRING001 = FUNCTION002()
OpText STRING001
PrintLn STRING020
Newline
STRING001 = FindFirst(STRING004)
Case ""
OpText STRING004
PrintLn STRING019
INTEGER001 = 0
While (STRING001 <> "") Do
STRING004 = ReplaceStr(STRING009, "@FILENAME@", Trim(FileInf(STRING001, 8), " "))
STRING004 = ReplaceStr(STRING004, "@EXT@", Left(FileInf(STRING001, 9), 3))
STRING004 = ReplaceStr(STRING004, "@SIZE@", Space(10 - Len(StripAtx(FUNCTION001(FileInf(STRING001, 4))))) + FUNCTION001(FileInf(STRING001, 4)))
STRING004 = ReplaceStr(STRING004, "@DATE@", ReplaceStr(String(FileInf(STRING001, 2)), "-", STRING010))
STRING004 = ReplaceStr(STRING004, "@TIME@", ReplaceStr(Left(String(FileInf(STRING001, 3)), 5), ":", STRING011))
INT001 = FileInf(STRING001, 5)
If (IsBitSet(INT001, 0)) Then
STRING004 = ReplaceStr(STRING004, "@R@", "R")
Else
STRING004 = ReplaceStr(STRING004, "@R@", STRING014)
Endif
If (IsBitSet(INT001, 1)) Then
STRING004 = ReplaceStr(STRING004, "@H@", "H")
Else
STRING004 = ReplaceStr(STRING004, "@H@", STRING014)
Endif
If (IsBitSet(INT001, 2)) Then
STRING004 = ReplaceStr(STRING004, "@S@", "S")
Else
STRING004 = ReplaceStr(STRING004, "@S@", STRING014)
Endif
If (IsBitSet(INT001, 5)) Then
STRING004 = ReplaceStr(STRING004, "@A@", "A")
Else
STRING004 = ReplaceStr(STRING004, "@A@", STRING014)
Endif
If (Abort()) Goto LABEL002
PrintLn STRING004
Inc INTEGER001
STRING001 = FindNext()
EndWhile
OpText FUNCTION001(INTEGER001)
PrintLn STRING013
Case "TYPE"
Newlines 2
If (BOOLEAN001) StartDisp 2
DispFile GetToken(), 0
Wait
Case "CLS"
Cls
Case "CD"
STRING004 = Trim(Right(STRING006, Len(STRING006) - 2), " ")
ChDir STRING004
Case "MD", "MKDIR"
MkDir GetToken()
Case "RD", "RMDIR"
ReDir GetToken()
Case "DEL"
STRING004 = GetToken()
STRING001 = FindFirst(STRING004)
Case ""
OpText STRING001
PrintLn STRING019
Case "*.*"
Newline
STRING004 = "N"
STRING001 = FUNCTION002() + "*.*"
OpText STRING001
InputYN STRING017, STRING004, 7
If (STRING004 == YesChar()) Then
Delete STRING001
Endif
While (STRING001 <> "") Do
STRING004 = "N"
If (BOOLEAN001) Then
Newline
OpText Trim(STRING001, " ")
InputYN STRING016, STRING004, 7
If (STRING004 == YesChar()) Then
Delete STRING001
Endif
Else
Delete STRING001
Endif
STRING001 = FindNext()
EndWhile
Case "REN"
STRING001 = GetToken()
STRING004 = GetToken()
If ((STRING001 == "") || (STRING004 == "")) Then
Newlines 2
PrintLn STRING018
Else
Rename STRING001, STRING004
Endif
Case "EXT"
STRING004 = GetToken()
If (STRING004 == "") Then
Newlines 2
PrintLn STRING018
Else
STRING001 = Trim(Right(STRING006, Len(STRING006) - 3), " ")
Tokenize STRING001
STRING004 = GetToken()
Newline
OpText STRING004
PrintLn STRING026
SaveScrn
Shell 1, INTEGER001, STRING004, GetToken()
RestScrn
If (Exist("PCBDOS.TXT")) Then
StartDisp 2
Newlines 2
DispFile "PCBDOS.TXT", 0
Delete "PCBDOS.TXT"
Wait
Endif
Endif
Case "PPE"
STRING004 = GetToken()
Newlines 2
If (STRING004 == "") Then
PrintLn STRING018
Else
STRING001 = Trim(Right(STRING006, Len(STRING006) - 3), " ")
Call STRING001
Endif
Case "FLAG"
STRING002 = Cwd()
Newlines 2
STRING004 = GetToken()
If (STRING004 == "") Then
PrintLn STRING018
Else
STRING001 = FindFirst(STRING004)
If (STRING001 == "") Then
OpText STRING004
PrintLn STRING019
Goto LABEL002
Endif
While (STRING001 <> "") Do
STRING001 = Trim(FUNCTION002() + STRING001, " ")
OpText STRING001
PrintLn STRING022
ChDir STRING005
Flag STRING001
ChDir STRING002
STRING001 = FindNext()
EndWhile
Endif
ChDir STRING002
Case "SEND"
Case
Newlines 2
PrintLn STRING023
STRING001 = FUNCTION002()
Newlines 2
STRING004 = GetToken()
If (STRING004 == "") Then
PrintLn STRING018
Else
STRING001 = FindFirst(STRING001 + STRING004)
FOpen 1, STRING005 + "\PCBDSZ.LST", 1, 3
While (STRING001 <> "") Do
FPutLn 1, FUNCTION002() + STRING001
STRING001 = Trim(FindNext(), " ")
EndWhile
FClose 1
PrintLn STRING024
Shell 1, INTEGER001, "ZMSEND.EXE", "@" + STRING005 + "\PCBDSZ.LST"
Delete STRING005 + "\PCBDSZ.LST"
STRING001 = GetEnv("DSZLOG")
If (Exist(STRING001)) Delete STRING001
Newline
Endif
Case "RECEIVE"
Case
Newlines 2
PrintLn STRING023
STRING001 = FUNCTION002()
Newlines 2
PrintLn STRING025
Shell 1, INTEGER001, "ZMRECV.EXE", STRING001
STRING001 = GetEnv("DSZLOG")
If (Exist(STRING001)) Delete STRING001
Newline
Case "VER"
Newlines 2
PrintLn TSTRING008(0)
PrintLn TSTRING008(1)
Case Else
Newline
Print STRING021
End Select
:LABEL002
If (INT002 < 10) INT002 = INT002 + 1
TSTRING007(10) = TSTRING007(9)
TSTRING007(9) = TSTRING007(8)
TSTRING007(8) = TSTRING007(7)
TSTRING007(7) = TSTRING007(6)
TSTRING007(6) = TSTRING007(5)
TSTRING007(5) = TSTRING007(4)
TSTRING007(4) = TSTRING007(3)
TSTRING007(3) = TSTRING007(2)
TSTRING007(2) = TSTRING007(1)
TSTRING007(1) = STRING006
Goto LABEL001
End
;------------------------------------------------------------------------------
Procedure PROC001(Var String STRING027, Integer INTEGER002)
String STRING028
Integer INTEGER003
Integer INTEGER004
STRING027 = ""
INTEGER003 = 0
:LABEL003
STRING028 = TInkey(0)
If (Len(STRING028) > 1) Then
If (STRING028 == "UP") Then
If (INTEGER004 < INT002) Then
TSTRING007(INTEGER004) = STRING027
INTEGER004 = INTEGER004 + 1
Backup 80
Print STRING003 + TSTRING007(INTEGER004)
ClrEol
INTEGER003 = Len(TSTRING007(INTEGER004))
STRING027 = TSTRING007(INTEGER004)
Endif
Endif
If (STRING028 == "DOWN") Then
If (INTEGER004 > 0) Then
TSTRING007(INTEGER004) = STRING027
INTEGER004 = INTEGER004 - 1
Backup 80
Print STRING003 + TSTRING007(INTEGER004)
ClrEol
INTEGER003 = Len(TSTRING007(INTEGER004))
STRING027 = TSTRING007(INTEGER004)
Endif
Endif
Endif
TSTRING007(INTEGER004) = STRING027
If (STRING028 == Chr(13)) Goto LABEL004
If (STRING028 == Chr(29)) Goto LABEL003
If (STRING028 == Chr(27)) Then
INTEGER003 = 0
TSTRING007(INTEGER004) = ""
STRING027 = ""
Backup 80
Print STRING003
ClrEol
Goto LABEL003
Endif
If (STRING028 == Chr(8)) Then
If (INTEGER003 == 0) Goto LABEL003
INTEGER003 = INTEGER003 - 1
Backup 1
Print " "
Backup 1
STRING027 = Left(STRING027, INTEGER003)
Goto LABEL003
Endif
If (!(Len(STRING028) == 1)) Goto LABEL003
If (Asc(STRING028) < 31) Goto LABEL003
If (INTEGER003 == INTEGER002) Goto LABEL003
STRING027 = STRING027 + STRING028
INTEGER003 = INTEGER003 + 1
Print "@X08", STRING028
Backup 1
Delay 1
Print "@X07", STRING028
Backup 1
Delay 1
Print "@X0F", STRING028
Goto LABEL003
:LABEL004
STRING027 = Trim(TSTRING007(INTEGER004), " ")
EndProc
;------------------------------------------------------------------------------
Function FUNCTION001(Integer INTEGER005) String
Int INT003
String STRING030
String STRING031
INT003 = 1
While (((1 < 0) && (INT003 >= Len(INTEGER005) / 3 + 1)) || ((1 >= 0) && (INT003 <= Len(INTEGER005) / 3 + 1))) Do
STRING030 = Trim(Left(Right(INTEGER005, INT003 * 3), 3), " ")
If (INT003 == 1) Then
FUNCTION001 = STRING030
Else
If (STRING030 <> "") FUNCTION001 = STRING030 + STRING012 + FUNCTION001
Endif
INT003 = INT003 + 1
EndWhile
EndFunc
;------------------------------------------------------------------------------
Function FUNCTION002() String
If (Right(Cwd(), 1) == "\") Goto LABEL005
FUNCTION002 = Cwd() + "\"
Goto LABEL006
:LABEL005
FUNCTION002 = Cwd()
:LABEL006
EndFunc
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 2 End
; 2 Cls
; 3 ClrEol
; 2 Wait
; 100 Goto
; 94 Let
; 9 Print
; 22 PrintLn
; 66 If
; 3 DispFile
; 2 FOpen
; 2 FClose
; 19 FGet
; 1 FPutLn
; 5 StartDisp
; 7 Delete
; 2 InputYN
; 2 Delay
; 1 Inc
; 9 Newline
; 13 Newlines
; 2 Tokenize
; 3 Shell
; 1 Call
; 10 OpText
; 1 RdUNet
; 1 WrUNet
; 7 Backup
; 1 SaveScrn
; 1 RestScrn
; 1 Rename
; 1 Flag
; 1 EndProc
; 2 EndFunc
; 5 ChDir
; 1 MkDir
; 1 ReDir
;
;
; ■ Functions used :
;
; 1 *
; 2 /
; 23 +
; 7 -
; 44 ==
; 5 <>
; 4 <
; 1 <=
; 3 >
; 2 >=
; 51 !
; 2 &&
; 5 ||
; 11 Len(
; 1 Upper()
; 5 Left()
; 5 Right()
; 1 Space()
; 4 Chr()
; 1 Asc()
; 1 InStr()
; 1 Abort()
; 9 Trim()
; 2 YesChar()
; 1 StripAtx()
; 2 String()
; 2 PPEPath()
; 2 PcbNode()
; 2 OnLocal()
; 2 UN_Name()
; 1 UN_City()
; 14 GetToken()
; 2 GetEnv()
; 3 Exist()
; 7 FileInf()
; 15 ReplaceStr()
; 1 StripStr()
; 4 IsBitSet()
; 4 FindFirst()
; 4 FindNext()
; 1 TInkey()
; 7 Cwd()
;
;------------------------------------------------------------------------------
;
; Analysis flags : SCfi
;
; S - Shell to DOS ■ 5
; This may be normal if the PPE need to execute an external command,
; but may be actually anything... nasty (formating HD, rebooting,...)
; or usefull (sorting, maintenance,...). Check!
; ■ Search for : SHELL
;
; C - Call child PPE ■ 3
; This is usually normal, but may be a tricky way to launch some
; sysop-only commands.
; ■ Search for : CALL
;
; f - Flag files for download ■ 3
; This may be normal if a PPE needs to send some files, but since
; this statement allows flagging of any file on the hard disk, you
; have to be carefull. Check!
; ■ Search for : FLAG
;
; i - Sequencially read files in directory ■ 3
; Program is reading files in directory sequencially, maybe to get
; a DIR image, but this can be to look for targets to destroy
; ■ Search for : FINDFIRST(), FINDNEXT()
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 0 For/Next
; 5 While/EndWhile
; 24 If/Then or If/Then/Else
; 1 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------