home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Carsten's PPE Collection
/
Carstens_PPE_Collection_2007.zip
/
S
/
STACK10.ZIP
/
!.PPE
(
.txt
)
next >
Wrap
PCBoard Programming Language Executable
|
1995-10-25
|
5KB
|
396 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.1O (Encryption type I) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
String TSTRING001(8)
String TSTRING002(1)
String STRING003
String STRING004
String TSTRING005(1)
String TSTRING006(1)
String STRING007
;------------------------------------------------------------------------------
GetUser
SaveScrn
Cls
FOpen 1, PPEPath() + "stcktext" + LangExt(), 2, 0
FGet 1, TSTRING001(0)
For INTEGER003 = 1 To 8
FGet 1, TSTRING001(INTEGER003)
Next
FClose 1
DOpen 1, PPEPath() + "key" + String(PcbNode()), 0
Gosub LABEL003
If (Abort()) Then
ResetDisp
Gosub LABEL004
End
Endif
While (STRING004 <> Chr(27)) Do
If (Abort()) Then
ResetDisp
Gosub LABEL004
End
Endif
STRING004 = ""
While (STRING004 == "") Do
STRING004 = Upper(Inkey())
If (STRING004 == "UP") STRING004 = "U"
If (STRING004 == "DOWN") STRING004 = "D"
If (InStr("DEMU" + Chr(13) + Chr(27), STRING004) == 0) STRING004 = ""
EndWhile
AnsiPos 3, INTEGER001 + 1
Print TSTRING005(INTEGER001)
Select Case (STRING004)
Case "U"
If (INTEGER001 == 1) Then
INTEGER001 = INTEGER002
Else
Dec INTEGER001
Endif
Case "D"
If (INTEGER001 == INTEGER002) Then
INTEGER001 = 1
Else
Inc INTEGER001
Endif
Case "E"
INTEGER006 = DRecCount(1) + 1 - INTEGER001
INTEGER006 = INTEGER006
DGo 1, INTEGER006
DDelete 1
Color DefColor()
DPack 1
Cls
Gosub LABEL003
If (STRING004 == Chr(13)) Then
Gosub LABEL004
KbdStuff TSTRING002(INTEGER001)
End
Endif
Case Chr(27)
Gosub LABEL004
KbdStuff "^M"
End
End Select
If (STRING004 == "M") Then
AnsiPos 1, INTEGER002 + 3
PrintLn TSTRING001(6)
PrintLn TSTRING001(7)
Print TSTRING001(8)
AnsiPos 3, INTEGER001 + 1
Print TSTRING005(INTEGER001)
AnsiPos 3, INTEGER001 + 1
INTEGER004 = 1
STRING004 = ""
If (Abort()) Then
ResetDisp
Gosub LABEL004
End
Endif
While (STRING004 <> Chr(13)) Do
If (Abort()) Then
ResetDisp
Gosub LABEL004
End
Endif
STRING004 = ""
While (STRING004 == "") Do
STRING004 = Inkey()
If (STRING004 == "RIGHT") STRING004 = Chr(2)
If (STRING004 == "LEFT") STRING004 = Chr(3)
If (STRING004 == "END") STRING004 = Chr(16)
If (STRING004 == "HOME") STRING004 = Chr(23)
If (STRING004 == "CTRL LEFT") STRING004 = Chr(1)
If (STRING004 == "CTRL RIGHT") STRING004 = Chr(6)
If (STRING004 == "CTRL END") STRING004 = Chr(5)
If (InStr(Chr(1) + Chr(2) + Chr(3) + Chr(5) + Chr(16) + Chr(23) + Chr(25) + Chr(6) + Chr(8) + Chr(13) + Mask_Ascii(), STRING004) == 0) STRING004 = ""
EndWhile
If (STRING004 == Chr(2)) Then
If (INTEGER004 <> 75) Then
Forward 1
Inc INTEGER004
Endif
Continue
Endif
If (STRING004 == Chr(3)) Then
If (INTEGER004 <> 1) Then
Backup 1
Dec INTEGER004
Endif
Continue
Endif
If (STRING004 == Chr(16)) Then
STRING003 = Trim(StripAtx(TSTRING005(INTEGER001)), " ")
INTEGER005 = Len(STRING003)
If (INTEGER005 <> 75) Then
INTEGER004 = INTEGER005 + 1
Goto LABEL001
Endif
INTEGER004 = INTEGER005
:LABEL001
AnsiPos INTEGER004 + 2, INTEGER001 + 1
Continue
Endif
If (STRING004 == Chr(23)) Then
INTEGER004 = 1
AnsiPos INTEGER004 + 2, INTEGER001 + 1
Continue
Endif
If (STRING004 == Chr(1)) Then
STRING003 = Trim(StripAtx(TSTRING005(INTEGER001)), " ")
If (INTEGER004 <> 1) Then
For INTEGER003 = INTEGER004 To 1 Step -1
STRING007 = Mid(STRING003, INTEGER003 - 1, 1)
If ((STRING007 == Chr(32)) && (INTEGER003 <> INTEGER004)) Break
Next
Endif
INTEGER004 = INTEGER003
AnsiPos INTEGER004 + 2, INTEGER001 + 1
Continue
Endif
If (STRING004 == Chr(6)) Then
STRING003 = Trim(StripAtx(TSTRING005(INTEGER001)), " ")
INTEGER005 = Len(STRING003)
If (INTEGER004 < INTEGER005 + 1) Then
For INTEGER003 = INTEGER004 To INTEGER005
STRING007 = Mid(STRING003, INTEGER003 + 1, 1)
If (STRING007 == Chr(32)) Break
Next
Endif
INTEGER004 = INTEGER003 + 2
If (INTEGER004 > INTEGER005) INTEGER004 = INTEGER005 + 1
AnsiPos INTEGER004 + 2, INTEGER001 + 1
Continue
Endif
If (STRING004 == Chr(8)) Then
If (INTEGER004 <> 1) Then
Dec INTEGER004
TSTRING005(INTEGER001) = TSTRING001(5) + Left(StripAtx(TSTRING005(INTEGER001)), INTEGER004 - 1) + Right(StripAtx(TSTRING005(INTEGER001)), 75 - INTEGER004) + " "
TSTRING006(INTEGER001) = TSTRING001(4) + StripAtx(TSTRING005(INTEGER001))
AnsiPos 3, INTEGER001 + 1
Print TSTRING005(INTEGER001)
AnsiPos INTEGER004 + 2, INTEGER001 + 1
Endif
Continue
Endif
If (STRING004 == Chr(5)) Then
STRING003 = Trim(StripAtx(TSTRING005(INTEGER001)), " ")
STRING003 = Left(STRING003, INTEGER004 - 1)
TSTRING005(INTEGER001) = TSTRING001(5) + STRING003 + Space(75 - INTEGER004)
TSTRING006(INTEGER001) = TSTRING001(4) + STRING003 + Space(75 - INTEGER004)
AnsiPos 3, INTEGER001 + 1
Print TSTRING005(INTEGER001)
AnsiPos INTEGER004 + 2, INTEGER001 + 1
Continue
Endif
If (STRING004 == Chr(13)) Then
Continue
Endif
If (STRING004 == Chr(25)) Then
TSTRING005(INTEGER001) = TSTRING001(5) + Space(75)
TSTRING006(INTEGER001) = TSTRING001(4) + Space(75)
INTEGER004 = 1
AnsiPos INTEGER004 + 2, INTEGER001 + 1
Print TSTRING005(INTEGER001)
AnsiPos INTEGER004 + 2, INTEGER001 + 1
Continue
Endif
If (INTEGER004 <> 75) Then
Inc INTEGER004
Print Upper(STRING004)
TSTRING005(INTEGER001) = ScrText(3, 1 + INTEGER001, 75, 1)
TSTRING006(INTEGER001) = TSTRING001(4) + StripAtx(TSTRING005(INTEGER001))
AnsiPos INTEGER004 + 2, INTEGER001 + 1
Endif
EndWhile
If (Trim(StripAtx(TSTRING005(INTEGER001)), " ") == "") Then
INTEGER006 = DRecCount(1) + 1 - INTEGER001
DGo 1, INTEGER001
DDelete 1
Color DefColor()
DPack 1
Cls
Gosub LABEL003
Goto LABEL002
Endif
DNew 1
DPut 1, "KEY", StripAtx(TSTRING005(INTEGER001))
DAdd 1
Color DefColor()
Cls
Gosub LABEL003
Endif
:LABEL002
AnsiPos 3, INTEGER001 + 1
Print TSTRING006(INTEGER001)
EndWhile
End
:LABEL003
INTEGER002 = U_PageLen - 7
Redim TSTRING002, INTEGER002
DBottom 1
DGet 1, "KEY", TSTRING002(0)
If ((Trim(TSTRING002(0), " ") == "") && (DRecCount(1) <= 1)) Then
Gosub LABEL004
KbdStuff "^M"
End
Endif
PrintLn TSTRING001(1)
For INTEGER003 = 1 To INTEGER002
DGet 1, "KEY", TSTRING002(INTEGER003)
TSTRING002(INTEGER003) = Trim(TSTRING002(INTEGER003), " ")
If (Len(TSTRING002(INTEGER003)) > 75) Then
STRING003 = Left(TSTRING002(INTEGER003), 75)
Else
STRING003 = TSTRING002(INTEGER003)
Endif
If (TSTRING002(INTEGER003) <> "") Then
OpText STRING003
PrintLn TSTRING001(2)
Else
Dec INTEGER003
Endif
If (DRecNo(1) == 1) Then
INTEGER002 = INTEGER003
Break
Endif
DSkip 1, -1
Next
INTEGER001 = 1
PrintLn TSTRING001(3)
Redim TSTRING005, INTEGER002
Redim TSTRING006, INTEGER002
For INTEGER003 = 1 To INTEGER002
TSTRING005(INTEGER003) = ScrText(3, 1 + INTEGER003, 75, 1)
TSTRING006(INTEGER003) = TSTRING001(4) + StripAtx(TSTRING005(INTEGER003))
Next
AnsiPos 3, 2
Print TSTRING006(1)
Return
:LABEL004
DClose 1
Color DefColor()
Cls
RestScrn
Return
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 8 End
; 5 Cls
; 4 Color
; 74 Goto
; 64 Let
; 9 Print
; 5 PrintLn
; 57 If
; 1 FOpen
; 1 FClose
; 2 FGet
; 4 ResetDisp
; 1 GetUser
; 11 Gosub
; 2 Return
; 3 Inc
; 4 Dec
; 3 KbdStuff
; 1 OpText
; 17 AnsiPos
; 1 Backup
; 1 Forward
; 1 SaveScrn
; 1 RestScrn
; 3 Redim
; 1 DOpen
; 1 DClose
; 2 DPack
; 1 DNew
; 1 DAdd
; 2 DGo
; 1 DBottom
; 1 DSkip
; 2 DDelete
; 2 DGet
; 1 DPut
;
;
; ■ Functions used :
;
; 4 -
; 67 +
; 9 -
; 36 ==
; 10 <>
; 6 <
; 6 <=
; 2 >
; 10 >=
; 43 !
; 12 &&
; 5 ||
; 3 Len(
; 2 Upper()
; 2 Mid()
; 3 Left()
; 1 Right()
; 4 Space()
; 35 Chr()
; 2 InStr()
; 4 Abort()
; 7 Trim()
; 11 StripAtx()
; 2 Inkey()
; 1 String()
; 1 Mask_Ascii()
; 2 PPEPath()
; 1 PcbNode()
; 1 LangExt()
; 4 DefColor()
; 2 ScrText()
; 3 DRecCount()
; 1 DRecNo()
;
;------------------------------------------------------------------------------
;
; Analysis flags : No flag
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 5 For/Next
; 4 While/EndWhile
; 30 If/Then or If/Then/Else
; 1 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------