home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0200 - 0209 / ibm0200-0209 / ibm0200.tar / ibm0200 / LBPK10.ZIP / LITE.PPS < prev    next >
Encoding:
Text File  |  1994-03-23  |  7.7 KB  |  312 lines

  1. ; LightBar module PPE  03/3/94
  2. ; by: Mr. Data
  3. ;
  4.  
  5. ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  6. ; DECLARATIONS
  7. ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  8. String    LiteModule, LiteExt
  9. String    In, Out, YoX, YoY
  10. String    Title(50), Stuff(50), Disp(50), UnHiX, HiX, HotKey(50)
  11.  
  12. Byte    XPos(50), YPos(50), TXPos, TYPos, SavPos(5,1)
  13. Byte    NumItems, Flag, Yo, CurItem, LastItem, PageDivisor
  14. Byte    Start, RelTitE, RelTitS, RelIteE, RelIteS
  15. SByte    SX, SY
  16.  
  17. ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  18. ; DEFINITIONS
  19. ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  20. LiteModule    = GetToken()
  21. LiteExt        = ".LIT"
  22. LiteModule    = PPEPath()+LiteModule+LiteExt
  23. Start        = 1
  24. RelTitE        = 2
  25. RelTitS        = 3
  26. RelIteE        = 4
  27. RelIteS        = 5
  28. SavPos(Start, 0)    = GetX()
  29. SavPos(Start, 1)    = GetY()
  30. SavPos(RelTitE, 0)    = GetX()
  31. SavPos(RelTitE, 1)    = GetY()
  32. SavPos(RelTitS, 0)    = GetX()
  33. SavPos(RelTitS, 1)    = GetY()
  34. SavPos(RelIteE, 0)    = GetX()
  35. SavPos(RelIteE, 1)    = GetY()
  36. SavPos(RelIteS, 0)    = GetX()
  37. SavPos(RelIteS, 1)    = GetY()
  38. CurItem        = 1
  39. LastItem    = 1
  40. PageDivisor    = 4
  41.  
  42. ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  43. ; CODE
  44. ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  45. If (Exist(LiteModule) = False) Then
  46.     SPrintLn    LiteModule, " Not Found"
  47.     End
  48. EndIf
  49. FClose    0
  50. FOpen    0, LiteModule, O_RD, S_DN
  51.  
  52. ;-----
  53. While (True) Do                    ;Display title(s)
  54.     FGet    0, YoX
  55.     If (Left(YoX, 2) = "@X") Then
  56.         UnHiX = YoX
  57.         FGet    0, HiX
  58.         If ((GrafMode() = "A")||(GrafMode() = "N")) Then
  59.             HiX = Chr(27)+"[7m"
  60.             UnHiX = Chr(27)+"[0m"
  61.         EndIf
  62.         FGet    0, NumItems
  63.         Break
  64.     Else
  65.         FGet    0, YoY
  66.         FGet    0, Title(0)
  67.         Gosub    MakeCoords
  68.         SX = TXPos
  69.         SY = TYPos
  70.         Gosub    AnsPos
  71.         SavPos(RelTitS, 0) = GetX()
  72.         SavPos(RelTitS, 1) = GetY()
  73.         SavPos(RelIteS, 0) = GetX()
  74.         SavPos(RelIteS, 1) = GetY()
  75.         If (Left(Title(0), 1) = "%") Then
  76.             DispFile    Mid(Title(0), 2, Len(Title(0))-1), Graph+Lang
  77.         ElseIf (Left(Title(0), 1) = "#") Then
  78.             Cls
  79.             DispFile    Mid(Title(0), 2, Len(Title(0))-1), Graph+Lang
  80.         Else
  81.             Print    Title(0)
  82.         EndIf
  83.     EndIf
  84. EndWhile
  85. SavPos(RelTitE, 0) = GetX()
  86. SavPos(RelTitE, 1) = GetY()
  87. SavPos(RelIteE, 0) = GetX()
  88. SavPos(RelIteE, 1) = GetY()
  89.  
  90. ;-----
  91. For Yo = 1 to NumItems                ;read in item info
  92.     FGet    0, YoX
  93.     FGet    0, YoY
  94.     FGet    0, Title(Yo)
  95.     FGet    0, Out
  96.     If (Left(Out, 1) = "^") Then
  97.         HotKey(Yo) = "~"+String(Asc(Chr(Asc(Mid(Out, 2, Len(Out)))-64)))
  98.     ElseIf (Left(Out, 1) = "~") Then
  99.         HotKey(Yo) = Out
  100.     Else
  101.         HotKey(Yo) = "~"+String(Asc(Upper(Out)))
  102.     EndIf
  103.     FGet    0, Disp(Yo)
  104.     FGet    0, Stuff(Yo)
  105.     Gosub    MakeCoords
  106.     XPos(Yo) = TXPos
  107.     YPos(Yo) = TYPos
  108.     SX = TXPos
  109.     SY = TYPos
  110.     Gosub    AnsPos
  111.     SavPos(RelIteS, 0) = GetX()
  112.     SavPos(RelIteS, 1) = GetY()
  113.     If (Yo = 1) Then
  114.         Print    HiX, StripAtX(Title(Yo))
  115.     Else
  116.         Print    UnHiX, Title(Yo)
  117.     EndIf
  118.     SavPos(RelIteE, 0) = GetX()
  119.     SavPos(RelIteE, 1) = GetY()
  120. Next Yo
  121. FClose    0
  122. Flag = True
  123.  
  124. ;----------
  125. ; Main Loop
  126. :FruitLoop
  127.  
  128. Gosub    GetCh
  129.  
  130. If ((In = "DOWN")||(In = "RIGHT")||(In = "2")||(In = "6")) Then
  131.     LastItem = CurItem
  132.     CurItem = CurItem+1 - NumItems*(CurItem >= NumItems)
  133.     Gosub    Update
  134. ElseIf ((In = "UP")||(In = "LEFT")||(In = "8")||(In = "4")) Then
  135.     LastItem = CurItem
  136.     CurItem = CurItem-1 + NumItems*(CurItem <= 1)
  137.     Gosub    Update
  138. ElseIf ((In = "HOME")||(In = "7")) Then
  139.     LastItem = CurItem
  140.     CurItem = 1
  141.     Gosub    Update
  142. ElseIf ((In = "END")||(In = "1")) Then
  143.     LastItem = CurItem
  144.     CurItem = NumItems
  145.     Gosub    Update
  146. ElseIf ((In = "PGUP")||(In = "9")) Then
  147.     If (CurItem != 1) Then
  148.         LastItem = CurItem
  149.         Yo = NumItems/PageDivisor + (NumItems < PageDivisor)
  150.         CurItem = CurItem - Yo + (Yo - CurItem+1)*(CurItem < Yo)
  151.         Gosub    Update
  152.     EndIf
  153. ElseIf ((In = "PGDN")||(In = "3")) Then
  154.     If (CurItem != NumItems) Then
  155.         LastItem = CurItem
  156.         Yo = NumItems/PageDivisor + (NumItems < PageDivisor)
  157.         CurItem = CurItem + Yo - (Yo - (NumItems-CurItem))*((CurItem+Yo) > NumItems)
  158.         Gosub    Update
  159.     EndIf
  160. ElseIf (Asc(In) = 13) Then
  161.     DefColor
  162.     If (GrafMode() = "A") Then
  163.         Print UnHiX
  164.     EndIf
  165.     Flag = False
  166. Else
  167.     In = "~"+String(Asc(Upper(In)))
  168.     For Yo = 1 to NumItems            ;check hotkeys
  169.         If (In = HotKey(Yo)) Then
  170.             LastItem = CurItem
  171.             CurItem = Yo
  172.             Gosub    Update
  173.             Break
  174.         EndIf
  175.     Next Yo
  176. EndIf
  177. If (Flag) Then
  178.     Goto    FruitLoop
  179. EndIf
  180.  
  181. Print    Chr(13)+UnHiX    ;Carriage Return only
  182. ClrEol
  183. If (Disp(CurItem) != "-") Then
  184.     If (Left(Disp(CurItem), 1) = "%") Then
  185.         DispFile    Mid(Disp(CurItem), 2, Len(Disp(CurItem))), Graph + Lang
  186.     ElseIf (Left(Disp(CurItem), 1) = "#") Then
  187.         Cls
  188.         DispFile    Mid(Disp(CurItem), 2, Len(Disp(CurItem))-1), Graph + Lang
  189.     ElseIf (Left(Disp(CurItem), 1) = "!") Then
  190.         Call    Mid(Disp(CurItem), 2, Len(Disp(CurItem))-1)
  191.     Else
  192.         PrintLn    Disp(CurItem)
  193.     EndIf
  194. EndIf
  195.  
  196. If (Left(Stuff(CurItem), 1) = "^") Then            ; Control Code
  197.     KbdStuff    Chr(Asc(Mid(Stuff(CurItem), 2, 1))-64)
  198. ElseIf (Left(Stuff(CurItem), 1) = "~") Then        ; Ascii Code
  199.     KbdStuff    Chr(Mid(Stuff(CurItem), 2, Len(Stuff(CurItem))))
  200. Else
  201.     KbdStuff    Stuff(CurItem)
  202. EndIf
  203.  
  204. END
  205. ;═══════════════════════════════════════════════════════════════════════════════
  206. :Update
  207. SX = XPos(LastItem)
  208. SY = YPos(LastItem)
  209. Gosub    AnsPos
  210. Print    UnHiX, Title(LastItem)
  211. SX = XPos(CurItem)
  212. SY = YPos(CurItem)
  213. Gosub    AnsPos
  214. Print    HiX, StripAtX(Title(CurItem))
  215. Return
  216. ;═══════════════════════════════════════════════════════════════════════════════
  217. :GetCh
  218. In = ""
  219. While (In = "") Do
  220.     In = Inkey()
  221. EndWhile
  222. Return
  223. ;═══════════════════════════════════════════════════════════════════════════════
  224. :MakeCoords
  225. If (YoX = "C") Then                ;X Coord
  226.     TXPos = GetX()
  227. ElseIf (Left(YoX, 1) = "R") Then
  228.     YoX = Mid(YoX, 2, Len(YoX))
  229.     TXPos = SavPos(Start, 0) + YoX
  230. ElseIf (Left(YoX, 1) = "T") Then
  231.     YoX = Mid(YoX, 2, Len(YoX))
  232.     TXPos = SavPos(RelTitE, 0) + YoX
  233. ElseIf (Left(YoX, 1) = "t") Then
  234.     YoX = Mid(YoX, 2, Len(YoX))
  235.     TXPos = SavPos(RelTitS, 0) + YoX
  236. ElseIf (Left(YoX, 1) = "I") Then
  237.     YoX = Mid(YoX, 2, Len(YoX))
  238.     TXPos = SavPos(RelIteE, 0) + YoX
  239. ElseIf (Left(YoX, 1) = "i") Then
  240.     YoX = Mid(YoX, 2, Len(YoX))
  241.     TXPos = SavPos(RelIteS, 0) + YoX
  242. Else
  243.     If (Left(YoX, 1) = "A") Then
  244.         YoX = Mid(YoX, 2, Len(YoX))
  245.     EndIf
  246.     TXPos = YoX
  247. EndIf
  248.  
  249. If (YoY = "C") Then                ;Y Coord
  250.     TYPos = GetY()
  251. ElseIf (Left(YoY, 1) = "R") Then
  252.     YoY = Mid(YoY, 2, Len(YoY))
  253.     TYPos = SavPos(Start, 1) + YoY
  254. ElseIf (Left(YoY, 1) = "T") Then
  255.     YoY = Mid(YoY, 2, Len(YoY))
  256.     TYPos = SavPos(RelTitE, 1) + YoY
  257. ElseIf (Left(YoY, 1) = "t") Then
  258.     YoY = Mid(YoY, 2, Len(YoY))
  259.     TYPos = SavPos(RelTitS, 1) + YoY
  260. ElseIf (Left(YoY, 1) = "I") Then
  261.     YoY = Mid(YoY, 2, Len(YoY))
  262.     TYPos = SavPos(RelIteE, 1) + YoY
  263. ElseIf (Left(YoY, 1) = "i") Then
  264.     YoY = Mid(YoY, 2, Len(YoY))
  265.     TYPos = SavPos(RelIteS, 1) + YoY
  266. Else
  267.     If (Left(YoY, 1) = "A") Then
  268.         YoY = Mid(YoY, 2, Len(YoY))
  269.     EndIf
  270.     TYPos = YoY
  271. EndIf
  272. Return
  273. ;═══════════════════════════════════════════════════════════════════════════════
  274. :AnsPos
  275. SX = SX - GetX()
  276. SY = SY - GetY()
  277. ;-----
  278. If (SX > 0) Then                ;XPosition
  279.     If (SX = 1) Then
  280.         Print    Chr(27)+"["+"C"
  281.     Else
  282.         Print    Chr(27)+"["+String(SX)+"C"
  283.     EndIf
  284. ElseIf (SX < 0) Then
  285.     SX = -SX
  286.     If (SX = 1) Then
  287.         Print    Chr(27)+"["+"D"
  288.     Else
  289.         Print    Chr(27)+"["+String(SX)+"D"
  290.     EndIf
  291. EndIf
  292. ;-----
  293. If (SY > 0) Then                ;YPosition
  294.     If (SY = 1) Then
  295.         Print    Chr(27)+"["+"B"
  296.     Else
  297.         Print    Chr(27)+"["+String(SY)+"B"
  298.     EndIf
  299. ElseIf (SY < 0) Then
  300.     SY = -SY
  301.     If (SY = 1) Then
  302.         Print    Chr(27)+"["+"A"
  303.     Else
  304.         Print    Chr(27)+"["+String(SY)+"A"
  305.     EndIf
  306. EndIf
  307.  
  308. Return
  309. ;═══════════════════════════════════════════════════════════════════════════════
  310. ;███████████████████████████████████████████████████████████████████████████████
  311.  
  312.