home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Hack-Phreak Scene Programs
/
cleanhpvac.zip
/
cleanhpvac
/
DOD-BIGD.ZIP
/
BIGDOS.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1995-05-11
|
8KB
|
452 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.O1 (Encryption type I) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Integer INTEGER016
Integer INTEGER017
Integer INTEGER018
Integer INTEGER019
Integer INTEGER020
Integer INTEGER021
Integer INTEGER022
String STRING001
String STRING002
String STRING003
String STRING004
String TSTRING005(100)
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
String STRING011
BigStr BIGSTR001
Declare Procedure PROC001(Var Integer INTEGER002, Var Integer INTEGER003)
Declare Procedure PROC002(Integer INTEGER009, Var Integer INTEGER010)
Declare Procedure PROC003(Integer INTEGER001)
;------------------------------------------------------------------------------
If ("" <> "HEAVY METAL RULEZ") Goto LABEL001
BIGSTR001 = "666"
PrintLn BIGSTR001
:LABEL001
Goto LABEL002
End
;------------------------------------------------------------------------------
Procedure PROC003(Integer INTEGER001)
Select Case (INTEGER001)
Case 1
PrintLn "@X07Invalid function number"
Case 2
PrintLn "@X07File not found"
Case 3
PrintLn "@X07Path not found"
Case 4
PrintLn "@X07Too many open files"
Case 5
PrintLn "@X07Access denied"
Case 6
PrintLn "@X07Invalid handle"
Case 7
PrintLn "@X07Memory ctrl blocks destroyed"
Case 8
PrintLn "@X07Insufficient memory"
Case 9
PrintLn "@X07Invalid memory block address"
Case 10
PrintLn "@X07Invalid environment"
Case 11
PrintLn "@X07Invalid format"
Case 12
PrintLn "@X07Invalid access code"
Case 13
PrintLn "@X07Invalid data"
Case 16
PrintLn "@X07(error code not used)"
Case 15
PrintLn "@X07Invalid drive specified"
Case 16
PrintLn "@X07Can't remove current dir"
Case 17
PrintLn "@X07Not same device"
Case 18
PrintLn "@X07No more matching files"
End Select
EndProc
;------------------------------------------------------------------------------
Procedure PROC001(Var Integer INTEGER002, Var Integer INTEGER003)
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
INTEGER004 = RegDI()
INTEGER007 = RegES()
INTEGER006 = RegDS()
INTEGER005 = RegSI()
INTEGER008 = RegF()
DoIntr 33, 6400, 0, 0, 0, 0, INTEGER004, INTEGER008, INTEGER006, INTEGER007
If (IsBitSet(RegF(), 0)) Then
INTEGER003 = RegAL()
Else
INTEGER003 = 0
Endif
If (INTEGER003 == 32) INTEGER003 = 0
INTEGER002 = RegAL()
EndProc
;------------------------------------------------------------------------------
Procedure PROC002(Integer INTEGER009, Var Integer INTEGER010)
Integer INTEGER011
Integer INTEGER012
Integer INTEGER013
Integer INTEGER014
Integer INTEGER015
INTEGER011 = RegDI()
INTEGER014 = RegES()
INTEGER013 = RegDS()
INTEGER012 = RegSI()
INTEGER015 = RegF()
DoIntr 33, 3584, 0, 0, INTEGER009, 0, INTEGER011, INTEGER015, INTEGER013, INTEGER014
If (IsBitSet(RegF(), 0)) Then
INTEGER010 = RegAL()
PROC003(INTEGER010)
Else
INTEGER010 = 0
Endif
If (INTEGER010 == 32) INTEGER010 = 0
EndProc
:LABEL002
PrintLn "@X0BBIGDOS@X03(tm) 1.0"
PrintLn "@X0BC@X03oded @X0Bb@X03y @X0BL@X03ars @X0BU@X03lrich @X08[DRiNK OR DiE] @X0Bi@X03n @X0B1@X03995"
PrintLn
PrintLn "@X0BT@X03ype '@X0Bexit@X03' @X0Bt@X03o @X0Br@X03eturn @X0Bt@X03o @X0BP@X03CBoard"
PrintLn
PrintLn
Gosub LABEL012
GetToken STRING008
If (STRING008 <> "") Then
STRING006 = Mid(STRING008, 1, 1)
STRING002 = Strip(STRING008, " ")
Else
STRING006 = "C"
STRING002 = "C:\"
Endif
Gosub LABEL011
:LABEL003
STRING004 = ""
DispStr "@X0F" + STRING002
InputStr "@X0F>@X07_", STRING004, 7, 128, Mask_Ascii(), 256 + 1024
If ((Upper(STRING004) == "EXIT") || (Upper(STRING004) == "QUIT")) Goto LABEL005
If (Strip(STRING004, " ") == "") Goto LABEL003
If ((Upper(Mid(STRING004, 1, 2)) == "CD") || (Upper(Mid(STRING004, 1, 5)) == "CHDIR")) Then
Gosub LABEL008
Goto LABEL003
Endif
If ((Upper(Mid(STRING004, 1, 2)) == "MD") || (Upper(Mid(STRING004, 1, 5)) == "MKDIR")) Then
Gosub LABEL009
Goto LABEL003
Endif
If ((Upper(Mid(STRING004, 1, 2)) == "RD") || (Upper(Mid(STRING004, 1, 5)) == "RMDIR")) Then
Gosub LABEL010
Goto LABEL003
Endif
If ((Len(STRING004) == 2) && (Mid(STRING004, 2, 1) == ":")) Then
STRING007 = STRING002
STRING002 = STRING004 + "\"
STRING006 = Upper(Mid(STRING002, 1, 1))
Gosub LABEL011
If (INTEGER022 <> 0) Then
STRING002 = STRING007
STRING006 = Mid(STRING002, 1, 1)
Endif
Goto LABEL003
Endif
If (Upper(Mid(STRING004, 1, 5)) == "TYPE ") Then
If (Len(STRING004) <= 5) Then
PrintLn "@X07Required argument missing"
Goto LABEL004
Endif
STRING001 = Strip(Mid(STRING004, InStr(STRING004, " ") + 1, Len(STRING004)), " ")
If (Exist(STRING001)) Then
DispFile STRING001, 1
Goto LABEL004
Endif
PrintLn "@X07File not found"
:LABEL004
Goto LABEL003
Endif
If ((STRING004 == "?") || (Upper(STRING004) == "HELP")) Then
PrintLn " @X03 @X0BBigDos@X03(tm) @X0BFunctions@X03 "
PrintLn ""
PrintLn " @X0Fx: @X03- Change drive @X0FCLS @X03- Clear screen"
PrintLn " @X0FCD @X03- Change directory @X0BDEL @X03- Delete file(s)"
PrintLn " @X0BCOPY @X03- Copy file(s) @X0BDIR @X03- Directory"
PrintLn " @X0FEXIT @X03- Exit BigDos @X0FMD @X03- Create directory"
PrintLn " @X0BREN @X03- Rename file @X0FRD @X03- Remove directory"
PrintLn " @X0FTYPE @X03- Type file @X0F? @X03- This help screen"
PrintLn " @X0FVER @X03- Version info"
PrintLn ""
Goto LABEL003
Endif
If (Upper(STRING004) == "CLS") Then
PrintLn "@X07@CLS@"
Goto LABEL003
Endif
If (Upper(STRING004) == "VER") Then
PrintLn "@X0BBIGDOS@X03<tm> 1.0"
PrintLn "@X0BC@X03oded @X0Bb@X03y @X0BL@X03ars @X0BU@X03lrich @X0Bi@X03n @X0B1@X03995"
PrintLn
Goto LABEL003
Endif
If (InStr(STRING004, " ") <> 0) Then
STRING009 = Mid(STRING004, 1, InStr(STRING004, " ") - 1)
Else
STRING009 = STRING004
Endif
STRING010 = ""
If (Mid(Right(STRING009, 4), 1, 1) <> ".") Then
If (Exist(STRING009 + ".COM")) STRING009 = STRING009 + ".COM"
If (Exist(STRING009 + ".BAT")) STRING009 = STRING009 + ".BAT"
If (Exist(STRING009 + ".EXE")) STRING009 = STRING009 + ".EXE"
If (Exist(STRING009 + ".PPE")) STRING009 = STRING009 + ".PPE"
Endif
If (((Len(FileInf(STRING009, 9)) == 3) && (InStr(" COM EXE BAT PPE ", FileInf(STRING009, 9)) <> 0)) && Exist(STRING009)) STRING010 = FileInf(STRING009, 9)
If (STRING010 == "PPE") Then
STRING001 = "!" + STRING009
If (InStr(STRING004, " ") <> 0) STRING001 = STRING001 + " " + Mid(STRING004, InStr(STRING004, " ") + 1, Len(STRING004))
DispStr STRING001
Else
If (OnLocal() == 1) Gosub LABEL006
Shell 0, INTEGER016, GetEnv("COMSPEC"), "/C " + STRING004 + " >" + "C:\" + "BIGDOS.TMP"
If (OnLocal() == 1) Gosub LABEL007
If (Exist("C:\" + "BIGDOS.TMP")) Then
DispFile "C:\" + "BIGDOS.TMP", 1
Delete "C:\" + "BIGDOS.TMP"
Endif
Endif
Goto LABEL003
:LABEL005
Gosub LABEL013
Stop
:LABEL006
For INTEGER017 = 1 To 23
TSTRING005(INTEGER017) = ScrText(1, INTEGER017, 80, 1)
Next
INTEGER018 = GetX()
INTEGER019 = GetY()
Return
:LABEL007
For INTEGER017 = 1 To 23
AnsiPos 1, INTEGER017
DispStr TSTRING005(INTEGER017)
AnsiPos INTEGER018, INTEGER019
Next
Return
:LABEL008
STRING003 = Strip(Mid(STRING004, InStr(STRING004, " ") + 1, Len(STRING004)), " ")
If ((InStr(STRING004, " ") == 0) && (Upper(Mid(STRING004, 1, 2)) == "CD")) STRING003 = Strip(Mid(STRING004, 3, Len(STRING004)), " ")
If (Mid(STRING003, 2, 1) <> ":") STRING003 = STRING006 + ":" + STRING003
STRING007 = STRING002
STRING002 = Upper(STRING003)
STRING006 = Upper(Mid(STRING002, 1, 1))
Gosub LABEL011
If (INTEGER022 <> 0) Then
STRING002 = STRING007
STRING006 = Mid(STRING007, 1, 1)
Endif
Return
:LABEL009
STRING003 = Strip(Mid(STRING004, InStr(STRING004, " ") + 1, Len(STRING004)), " ")
If ((STRING003 == "") || (InStr(STRING004, " ") == 0)) Then
PrintLn "@X07Required argument missing"
Return
Endif
If (Mid(STRING003, 2, 1) <> ":") STRING003 = STRING006 + ":" + STRING003
STRING001 = Upper(STRING003)
INTEGER022 = 0
VarOff STRING001, INTEGER021
VarSeg STRING001, INTEGER020
DoIntr 33, 14592, 0, 0, INTEGER021, RegSI(), RegDI(), RegF(), INTEGER020, RegES()
If (IsBitSet(RegF(), 0)) Then
INTEGER022 = RegAX()
PROC003(INTEGER022)
Return
Endif
Return
:LABEL010
STRING003 = Strip(Mid(STRING004, InStr(STRING004, " ") + 1, Len(STRING004)), " ")
If ((STRING003 == "") || (InStr(STRING004, " ") == 0)) Then
PrintLn "@X07Required argument missing"
Return
Endif
If (Mid(STRING003, 2, 1) <> ":") STRING003 = STRING006 + ":" + STRING003
STRING001 = Upper(STRING003)
INTEGER022 = 0
VarOff STRING001, INTEGER021
VarSeg STRING001, INTEGER020
DoIntr 33, 14848, 0, 0, INTEGER021, RegSI(), RegDI(), RegF(), INTEGER020, RegES()
If (IsBitSet(RegF(), 0)) Then
INTEGER022 = RegAX()
PROC003(INTEGER022)
Return
Endif
Return
:LABEL011
INTEGER022 = 0
VarOff STRING002, INTEGER021
VarSeg STRING002, INTEGER020
DoIntr 33, 15104, 0, 0, INTEGER021, RegSI(), RegDI(), RegF(), INTEGER020, RegES()
If (IsBitSet(RegF(), 0)) Then
INTEGER022 = RegAX()
PROC003(INTEGER022)
Return
Endif
INTEGER016 = Asc(STRING006) - 65
PROC002(INTEGER016, INTEGER022)
DoIntr 33, 18176, 0, 0, 0, INTEGER021, RegDI(), RegF(), INTEGER020, RegES()
STRING002 = Chr(INTEGER016 + 65) + ":\" + STRING002
STRING006 = Chr(INTEGER016 + 65)
Return
End
:LABEL012
VarOff STRING011, INTEGER021
VarSeg STRING011, INTEGER020
DoIntr 33, 18176, 0, 0, 0, INTEGER021, RegDI(), RegF(), INTEGER020, RegES()
PROC001(INTEGER016, INTEGER022)
STRING011 = Chr(INTEGER016 + 65) + ":\" + STRING011
Return
:LABEL013
VarOff STRING011, INTEGER021
VarSeg STRING011, INTEGER020
DoIntr 33, 15104, 0, 0, INTEGER021, RegSI(), RegDI(), RegF(), INTEGER020, RegES()
INTEGER016 = Asc(Mid(STRING011, 1, 1)) - 65
PROC002(INTEGER016, INTEGER022)
Return
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 2 End
; 83 Goto
; 71 Let
; 43 PrintLn
; 61 If
; 2 DispFile
; 1 Delete
; 1 InputStr
; 10 Gosub
; 13 Return
; 1 GetToken
; 1 Shell
; 1 Stop
; 3 DispStr
; 8 DoIntr
; 5 VarSeg
; 5 VarOff
; 2 AnsiPos
; 3 EndProc
;
;
; ■ Functions used :
;
; 41 +
; 3 -
; 46 ==
; 11 <>
; 2 <
; 3 <=
; 4 >=
; 44 !
; 8 &&
; 9 ||
; 9 Len(
; 18 Upper()
; 26 Mid()
; 1 Right()
; 3 Chr()
; 2 Asc()
; 12 InStr()
; 7 Strip()
; 1 Mask_Ascii()
; 2 OnLocal()
; 1 GetEnv()
; 3 RegAL()
; 3 RegAX()
; 6 RegSI()
; 8 RegDI()
; 13 RegF()
; 2 RegDS()
; 8 RegES()
; 7 Exist()
; 1 GetX()
; 1 GetY()
; 3 FileInf()
; 1 ScrText()
; 5 IsBitSet()
;
;------------------------------------------------------------------------------
;
; Analysis flags : SI
;
; 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
;
; I - Interrupt call ■ 5
; This is rare in PPE... Although it may be a way to replace a PPE
; command by its fast interrupt equivalent. Be aware that an
; interrupt call may do anything... nasty (formating HD, rebooting,...)
; or usefull (fast screen i/o, hardware ressource access,...). Check!
; ■ Search for : DOINTR
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 2 For/Next
; 0 While/EndWhile
; 24 If/Then or If/Then/Else
; 1 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------