Page 1 of 1 1
Topic Options
#50366 - 2000-06-27 08:58 PM Compiler / formatter for Kix-scripts
kholm Offline
Korg Regular
*****

Registered: 2000-06-19
Posts: 714
Loc: Randers, Denmark
[Moderator (Sealeopard): Closed topic]

Transform.kix

This script can be used to 'compile', format, 'encrypt' or compress other scripts.

Added support for Pseudo-encryption

Pseudo-encryption

When Indent = 0, and KeepRemarks=N and KeepEmptyLines=N (Choices you make when
executing Transform.kix)
Transform.kix will enter pseudo-encryptionmode, lines can be until 500 characters long,
each linefeed from original script is replaced by a random white space: Space, tab, or
new line character.

The transformed script will be nearly impossible to read if it is not too small.
You can still read the script, but average users will not be able to understand
the script, and it will take a lot of effort to recreate it witout the original
source, at least the remarks are lost.

The advantage of this form of 'encryption' is that it is time-costless when executing
the script.

COMPILING
'Compile' dos not create an exe-file, but the script that is transformed is checked for
syntax-errors.

The script will check that strings are correctly terminated, and check that loops and
conditions are correctly terminated. (No missing If, EndIf, Select, EndSelect, While,
Loop, Do and Until statements).
Labels are checked for GoTo and GoSub statements


The script requires some coding diciplin in the script you want to compile.

Requirements:

Reserved words:
  • DO
  • ELSE
  • ENDIF
  • SELECT
  • ENDSELECT
  • LOOP
Must be the only word in the line. (Can be followed by a remark)
Strings must end in the line where they start. Meaning, if you have " as the first
stringdelimitor " must be present later in this line, the same goes for the delimitor '

Tip: Best results are achieved, if you have only one statement in each line, but this is not
required.

FORMATTING
The script can also be used to format scripts you have made by cut and paste from this or
other sites, same indent in entire script. If indents dos not exist this script will create
them.


COMPRESSING
A third way to use the script is to use it for compressing scripts, it can remove blank lines
and comments, and remove indents (Indent = 0)

The script allways creates a new file with extension .kix, so if your script is named
Logon.kix the script will create the transformed script Logon.kix.kix

CLEANING
Lines will allways be stripped for leading and trailing spaces and tabs.

The script Transform.kix in this post is transformed (by itself)
Logfile for this transform:


T R A N S F O R M L O G

Inputfile : Transform
Outputfile : Transform.kix

OPTIONS USED
Indent : 3 spaces
Remarks kept
Empty lines kept

Transform.kix successfully created, no errors found.

TIP
Keep the script in the same folder as the script you want to transform, then you only
have to enter the filename, otherwise you must enter path and filename

Examle log for a script containing errors

T R A N S F O R M L O G

Inputfile : TestError
Outputfile : TestError.kix

OPTIONS USED
Indent : Tabulator
Remarks kept
Empty lines removed

Error(s):
Mismatching stringdelimitors in line 55
Missing If statement before line 119
Missing 1 EndIf statement(s)
Subroutine (label) missing for GoSub GETXY in line 444

TestError.kix created with 4 Error(s)
Correct errors in TESTERROR and transform again

Errors are easier to find in TESTERROR.KIX if you are using
indents > 2 or indent = tabulator.

code:
; Script : Transform.kix
; Purpose: Check other scripts
; 'COMPILE' (Syntakschecking: Strings, labels, loops and conditions are checked)
; 'CLEANUP' (Remove leading and trailing spaces and tabs)
; Options:
; 'TRANSFORM' (Same indent in entire script)
; 'COMPRESS' (Remove remarks and blank lines)
; Version 1.7 June 30 2000 Erik Krholm (Erik Kaerholm)

Break On

; Constants
$CRLF = Chr(13) + Chr(10)
$True = -1
$False = 0
$StrSep1 = "'"
$StrSep2 = '"'
$LogFile = %TEMP% + "\Transform.log"

; Labelstatistic-vars
Dim $LabUsed[100]
$LabUsedNum = 0

Dim $LabDefined[100]
$LabDefinedNum = 0

Dim $SubCalled[100]
$SubCalledNum = 0

; Initialize
Color W+/b
$IndentNbr = 0
$LineNum = 0
$ErrorsFound = $False
$Compress = $False
$LongLine = ""
$ErrorNum = 0
$TotErr = 0
$Do = 0
$If = 0
$Select = 0
$While = 0

$Err = SetConsole("Maximize")

; *********************** Get user input **************************
Do
CLS
Box (1,1,3,78,"SINGLE")
AT (2,21) "T R A N S F O R M S C R I P T"

AT (5,5) "Script to transform : "
GetS $File

$Err = Open(1,"$File")
Until $Err = 0

$OutFile = $File + ".kix"
$Err = SetFileAttr($OutFile, 128)
If $Err = 0
AT (7,5) "Overwrite " + $OutFile + " Y/N "
Do
Get $x
If UCase($x) = "N"
Quit
EndIf
Until Ucase($x) = "Y"
"Y"
EndIf

$Indent = ""
AT (9,5) "Indent (T = Tabulator, 0..9 = number of spaces) : "
Do
Get $IndentIn
$IndentIn = UCase($IndentIn)
If $IndentIn = "T"
$Indent = Chr(9)
Else
$Test = Val($IndentIn)
If $Test > 0
$i = 0
While $i < $Test
$Indent = $Indent + " "
$i = $i + 1
Loop
EndIf
EndIf
Until $Indent <> "" Or $IndentIn = 0
$IndentIn

AT (11,5) "Keep remarks Y/N "
Do
Get $x
$x = UCase($x)
Until ($x = "Y") Or ($x = "N")
$x
If $x = "Y"
$KeepRemarks = $True
Else
$KeepRemarks = $False
EndIf

AT (13,5) "Keep empty lines Y/N "
Do
Get $x
$x = UCase($x)
Until ($x = "Y") Or ($x = "N")
$x
If $x = "Y"
$KeepEmptyLines = $True
Else
$KeepEmptyLines = $False
EndIf

If $IndentIn = 0 And $KeepRemarks = $False And $KeepEmptyLines = $False
$Compress = $True
$Seed = Val(SubStr("@Time",7,2))
$Seed=$Seed+1
Do
$x = Rnd(1)
$Seed = $Seed - 1
Until $Seed=0
EndIf

AT (17,5) "Transforming ..........."

Del "$OutFile"
$Err = Open(2,"$OutFile",5)

; ******************** Initiate logfile *************************
Del "$LogFile"
$Err = Open(3,"$LogFile",5)
$Err = WriteLine(3," T R A N S F O R M L O G" + $CRLF + $CRLF)
$Err = WriteLine(3,"Inputfile : " + $File + $CRLF)
$Err = WriteLine(3,"Outputfile : " + $OutFile + $CRLF + $CRLF)
$Err = WriteLine(3,"OPTIONS USED" + $CRLF)
$Err = WriteLine(3," Indent : ")

$IndentIn = "" + $IndentIn
Select
Case $IndentIn = "T"
$Err = WriteLine(3,"Tabulator" + $CRLF)
Case $IndentIn = "0"
$Err = WriteLine(3,"NONE" + $CRLF)
Case 1
$Err = WriteLine(3,$IndentIn + " spaces" + $CRLF)
EndSelect

If $KeepRemarks
$Err = WriteLine(3," Remarks kept" + $CRLF)
Else
$Err = WriteLine(3," Remarks removed" + $CRLF)
EndIf

If $KeepEmptyLines
$Err = WriteLine(3," Empty lines kept" + $CRLF + $CRLF)
Else
$Err = WriteLine(3," Empty lines removed" + $CRLF + $CRLF)
EndIf

; ************************ Main loop ****************************
$Line = ReadLine(1)
While @Error = 0
GoSub Status
$LineNum = $LineNum + 1
GoSub WriteOutLine
$Line = ReadLine(1)
Loop

If $Compress
$Err = WriteLine(2, "$LongLine")
EndIf

; ****************** Complete and show log **********************
At(17,30) " " ; Remove statussymbol

If $IndentNbr > 0
If $Do > 0
$TotErr = $TotErr + $Do
$ErrorNum = $Do
$ErrorType = "Until"
GoSub ErrorHandler
EndIf
If $If > 0
$TotErr = $TotErr + $If
$ErrorNum = $If
$ErrorType = "EndIf"
GoSub ErrorHandler
EndIf
If $Select > 0
$TotErr = $TotErr + $Select
$ErrorNum = $Select
$ErrorType = "EndSelect"
GoSub ErrorHandler
EndIf
If $While > 0
$TotErr = $TotErr + $While
$ErrorNum = $While
$ErrorType = "Loop"
GoSub ErrorHandler
EndIf
EndIf

GoSub CheckGoSub
GoSub CheckGoTo

$Err = WriteLine(3,$CRLF)

If $ErrorsFound
$Err = WriteLine(3,$OutFile + " created with " + $TotErr + " Error(s)" + $CRLF)
$Err = WriteLine(3,"Correct errors in " + UCase($File) + " and transform again" +
$CRLF + $CRLF)
$Err = WriteLine(3,"Errors are easier to find in " + UCase($OutFile) +
" if you are using" + $CRLF)
$Err = WriteLine(3,"indents > 2 or indent = tabulator.")
Else
$Err = WriteLine(3,$OutFile + " successfully created, no errors found.")
EndIf

$Err = Close(1)
$Err = Close(2)
$Err = Close(3)

Run "Start /Max NotePad.exe $LogFile"

Return ; End script Transform.kix


;***************
:WriteOutLine
;***************

; Remove leading spaces and tabs
While (SubStr($Line,1,1) = " ") Or (SubStr($Line,1,1) = Chr(9))
$Line = SubStr($Line, 2, Len($Line) - 1)
Loop

; Remove trailing spaces and tabs
While (SubStr($Line,Len($Line),1) = " ") Or (SubStr($Line,Len($Line),1) = Chr(9))
$Line = SubStr($Line, 1, Len($Line) - 1)
Loop

; Split code and remarks
$TmpLine = $Line
$PosRem = 0
GoSub GetPosRem
If $PosRem = 0
$TmpLine = $Line
GoSub TestStrings
EndIf
$FrontRem = ""
If $PosRem > 0
If $PosRem > 1
$FrontRem = $Indent
EndIf
$Remark = SubStr($Line, $PosRem , Len($Line) - $PosRem + 1)
$Code = SubStr($Line, 1, $PosRem - 1)
Else
$Remark = ""
$Code = $Line
EndIf

; Remove trailing spaces and tabs from code
While (SubStr($Code,Len($Code),1) = " ") Or (SubStr($Code,Len($Code),1) = Chr(9))
$Code = SubStr($Code, 1, Len($Code) - 1)
Loop

; Check if line is empty
If $Code = "" And $Remark = ""
$LineEmpty = $True
Else
$LineEmpty = $False
EndIf

; Check for reserved, words expected to be entire code
$PendingIndent = 0
$NotChecked = $False
$Test = UCase($Code)
Select
Case $Test = "DO"
$PendingIndent = 1
$Do = $Do + 1
Case $Test = "ELSE"
$PendingIndent = 1
$IndentNbr = $IndentNbr - 1
Case $Test = "ENDIF"
If $If > 0
$IndentNbr = $IndentNbr - 1
$If = $If - 1
Else
$ErrorType = "If"
GoSub ErrorHandler
EndIf
Case $Test = "SELECT"
$Select = $Select + 1
$PendingIndent = 1
$CasePrev = $False
Case $Test = "ENDSELECT"
If $Select > 0
$IndentNbr = $IndentNbr - 2
$Select = $Select - 1
Else
$ErrorType = "Select"
GoSub ErrorHandler
EndIf
Case $Test = "LOOP"
If $While > 0
$IndentNbr = $IndentNbr - 1
$While = $While - 1
Else
$ErrorType = "While"
GoSub ErrorHandler
EndIf
Case 1
$NotChecked = $True
EndSelect

; Check for reserved words expected to be part of code
If $NotChecked
If SubStr($Test, 1, 3) = "IF "
If SubStr($Test, Len($Test) - 5, 6) <> " ENDIF"
$PendingIndent = 1
$If = $If + 1
EndIf
Else
If SubStr($Test, 1, 5) = "CASE "
$PendingIndent = 1
If $CasePrev
$IndentNbr = $IndentNbr - 1
Else
$CasePrev = $True
EndIf
Else
If SubStr($Test, 1, 6) = "UNTIL "
If $Do > 0
$IndentNbr = $IndentNbr - 1
$Do = $Do - 1
Else
$ErrorType = "Do"
GoSub ErrorHandler
EndIf
Else
If SubStr($Test, 1, 6) = "WHILE "
$PendingIndent = 1
$While = $While + 1
Else
If SubStr($Test, 1, 6) = "GOSUB "
$LabName = Ltrim(RTrim(SubStr($Test, 7, Len($Test) - 6)))
GoSub SubInfo
Else
If SubStr($Test, 1, 5) = "GOTO "
$LabName = Ltrim(RTrim(SubStr($Test, 6, Len($Test) - 5)))
GoSub LabInfo
Else
If SubStr($Test, 1, 1) = ":"
$LabName = SubStr($Test, 2, Len($Test) - 1)
GoSub LabDefined
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf


; *********************** Create line ***************************
If $Code <> ""
$i = 0
$Front = ""
While $i < $IndentNbr
$Front = $Front + $Indent
$i = $i + 1
Loop
$Line = $Front + $Code
Else
$Line = ""
EndIf

If ($Remark <> "") And $KeepRemarks
If $Line <> ""
$Line = $Line + $FrontRem
EndIf
$Line = $Line + $Remark
EndIf

If $Line <> ""
If $Compress
$Rnd = Rnd(34)
Select
Case $Rnd < 20
$Del = Chr(9)
Case $Rnd < 33
$Del = " "
Case 1
$Del = Chr(10)
EndSelect
$LongLine = $LongLine + $Del + $Line
If Len($LongLine) > 500
$LineShift = $True
$Line = $LongLine
$LongLine = ""
Else
$LineShift = $False
EndIf
Else
$LineShift = $True
EndIf
EndIf

If $LineShift
If $Line <> ""
$Line = $Line + $CRLF
Else
If $KeepEmptyLines And $LineEmpty
$Line = $CRLF
EndIf
EndIf
$Err = WriteLine(2, "$Line")
EndIf

$IndentNbr = $IndentNbr + $PendingIndent

Return ; *END SUB* WriteOutLine


;**************
:GetPosRem
;**************
$TestRem = InStr($TmpLine, ";")
If $TestRem > 0
$TstStr1 = InStr($TmpLine, $StrSep1)
If $TstStr1 = 0
$TstStr1 = 100000
EndIf
$TstStr2 = InStr($TmpLine, $StrSep2)
If $TstStr2 = 0
$TstStr2 = 100000
EndIf
If $TstStr1 < $TstStr2
$StrSep = $StrSep1
$StartStr = $TstStr1
Else
$StrSep = $StrSep2
$StartStr = $TstStr2
EndIf
If $StartStr = 100000
$StartStr = 0
EndIf
If $StartStr < $TestRem And $StartStr > 0
$PosRem = $PosRem + $StartStr
$TmpLine = SubStr($TmpLine, $StartStr + 1, Len($TmpLine) - $StartStr)
$TestRem = InStr($TmpLine, ";")
$TestEnd = InStr($TmpLine, $StrSep)
If $TestEnd > 0
If $TestEnd > $TestRem
$PosRem = $PosRem + $TestEnd
$TmpLine = SubStr($TmpLine, $TestEnd + 1, Len($TmpLine) - $TestEnd)
GoSub GetPosRem
Else
$PosRem = $PosRem + $TestRem
EndIf
Else
If $ErrorsFound = $False
$Err = WriteLine(3,"Error(s):" + $CRLF)
EndIf
$TotErr = $TotErr + 1
$ErrorsFound = $True
$Err = WriteLine(3," Mismatching stringdelimitors in line " + $LineNum + $CRLF)
$PosRem = 0
$TmpLine = ""
EndIf
Else
$PosRem = $PosRem + InStr($TmpLine, ";")
Endif
Else
$PosRem = 0
EndIf

Return ;*END SUB* GetPosRem


;**************
:TestStrings
;**************
$TstStr1 = InStr($TmpLine, $StrSep1)
If $TstStr1 = 0
$TstStr1 = 100000
EndIf
$TstStr2 = InStr($TmpLine, $StrSep2)
If $TstStr2 = 0
$TstStr2 = 100000
EndIf
If $TstStr1 < $TstStr2
$StrSep = $StrSep1
$StartStr = $TstStr1
Else
$StrSep = $StrSep2
$StartStr = $TstStr2
EndIf
If $StartStr = 100000
$StartStr = 0
EndIf
If $StartStr > 0
$TmpLine = SubStr($TmpLine, $StartStr + 1, Len($TmpLine) - $StartStr)
$TestEnd = InStr($TmpLine, $StrSep)
If $TestEnd > 0
$TmpLine = SubStr($TmpLine, $TestEnd + 1, Len($TmpLine) - $TestEnd)
GoSub TestStrings
Else
If $ErrorsFound = $False
$Err = WriteLine(3,"Error(s):" + $CRLF)
EndIf
$TotErr = $TotErr + 1
$ErrorsFound = $True
$Err = WriteLine(3," Mismatching stringdelimitors in line " + $LineNum + $CRLF)
$TmpLine = ""
EndIf
EndIf

Return ; *END SUB* TestStrings


;**************
:Status
;**************
$s = $s + 1
Select
Case $s = 1
$Ch = "|"
Case $s = 2
$Ch = "/"
Case $s = 3
$Ch = "-"
Case 1
$Ch = "\"
$s = 0
EndSelect
At(17,30) $Ch

Return ; *END SUB* Status

;**************
:ErrorHandler
;**************
If $ErrorsFound = $False
$Err = WriteLine(3,"Error(s):" + $CRLF)
EndIf
If $ErrorNum > 0
$Err = WriteLine(3," Missing " + $ErrorNum + " " + $ErrorType + " statement(s)" + $CRLF)
Else
$TotErr = $TotErr + 1
$Err = WriteLine(3," Missing " + $ErrorType + " statement before line " + $LineNum + $CRLF)
EndIf
$ErrorsFound = $True

Return ; *END SUB* ErrorHandler


;**************
:SubInfo
;**************
If InStr($LabName, $StrSep1) Or InStr($LabName, $StrSep2)
$LabName = SubStr($LabName, 2, Len($LabName) - 2)
EndIf
$SubCalledNum = $SubCalledNum + 1
$SubCalled[$SubCalledNum] = $LabName + "," + $LineNum

Return ; *END SUB* SubInfo

;**************
:LabInfo
;**************
If InStr($LabName, $StrSep1) Or InStr($LabName, $StrSep2)
$LabName = SubStr($LabName, 2, Len($LabName) - 2)
EndIf
$LabUsedNum = $LabUsedNum + 1
$LabUsed[$LabUsedNum] = $LabName + "," + $LineNum

Return ; *END SUB* LabInfo


;**************
:LabDefined
;**************
Dim $i, $NotFound
$i = 1
$NotFound = $True
While $i <= $LabDefinedNum And $NotFound
If $LabName = $LabDefined[$i]
$NotFound = $False
EndIf
$i = $i + 1
Loop
If $NotFound
$LabDefinedNum = $LabDefinedNum + 1
$LabDefined[$LabDefinedNum] = $LabName
EndIf

Return ; *END SUB* LabDefined


;**************
:CheckGoTo
;**************
Dim $i, $j, $Pos, $Len, $NotFound, $TestName, $LineNum, $LabU
$i = 1
While $i <= $LabUsedNum
$LabU = $LabUsed[$i]
$Pos = InStr($LabU, ",")
$TestName = SubStr($LabU, 1, $Pos - 1)
$NotFound = $True
$j = 1
While $j <= $LabDefinedNum And $NotFound
If $TestName = $LabDefined[$j]
$NotFound = $False
EndIf
$j = $j + 1
Loop
If $NotFound
If $ErrorsFound = $False
$Err = WriteLine(3,"Error(s):" + $CRLF)
EndIf
$TotErr = $TotErr + 1
$Len = Len($LabU)
$LineNum = SubStr($LabU, $Pos + 1, $Len - $Pos)
$Err = WriteLine(3," Label missing for GoTo " + $TestName + " in line " +
$LineNum + $CRLF)
$ErrorsFound = $True
EndIf
$i = $i + 1
Loop

Return ; *END SUB* CheckGoTo


;**************
:CheckGoSub
;**************
Dim $i, $j, $Pos, $Len, $NotFound, $TestName, $LineNum, $SubC
$i = 1
While $i <= $SubCalledNum
$SubC = $SubCalled[$i]
$Pos = InStr($SubC, ",")
$TestName = SubStr($SubC, 1, $Pos - 1)
$NotFound = $True
$j = 1
While $j <= $LabDefinedNum And $NotFound
If $TestName = $LabDefined[$j]
$NotFound = $False
EndIf
$j = $j + 1
Loop
If $NotFound
If $ErrorsFound = $False
$Err = WriteLine(3,"Error(s):" + $CRLF)
EndIf
$TotErr = $TotErr + 1
$Len = Len($SubCalled[$i])
$LineNum = SubStr($SubCalled[$i], $Pos + 1, $Len - $Pos)
$Err = WriteLine(3," Subroutine (label) missing for GoSub " + $TestName +
" in line " + $LineNum + $CRLF)
$ErrorsFound = $True
EndIf
$i = $i + 1
Loop

Return ; *END SUB* CheckGoSub

[This message has been edited by kholm (edited 30 June 2000).]

[ 18. October 2003, 02:32: Message edited by: sealeopard ]

Top
#50367 - 2000-06-28 09:46 PM Re: Compiler / formatter for Kix-scripts
kholm Offline
Korg Regular
*****

Registered: 2000-06-19
Posts: 714
Loc: Randers, Denmark
When you use transform.kix to compress files you can gain a lot if your scripts
are large.

My main logonscript has a size of 45.421 bytes, after compression the size
is 30.448 bytes. (No blank lines, no comments and no indents)

Still working, but very difficult to read

I keep the commented script in a file without extension, all changes are made
in this file, after changes I transform it to a file with extension .kix and
copy the .kix script to netlogon-share.

I have added syntax-checking for missing labels in original post

Top
#50368 - 2000-06-29 01:40 AM Re: Compiler / formatter for Kix-scripts
kholm Offline
Korg Regular
*****

Registered: 2000-06-19
Posts: 714
Loc: Randers, Denmark
Still getting new ideas !

CJ - If you read this, I have used your randseed function instead of inventing one
myself.

Encryption
When Indent = 0, and KeepRemarks=N and KeepEmptyLines=N (Choices you make when
executing Transform.kix)
Transform.kix will enter pseudo-encryptionmode, lines can be until 30.000 characters long,
each linefeed from original script is replaced by a random white space: Space, tab, or
new line character.

The script will be nearly impossible to read if it is not too small.
You can still read the script, but average users will not be able to understand
the script, and it will take a lot of effort to recreate it witout the original
source, at least the remarks are lost.

The advantage of this form of 'encryption' is that it is time-costless when executing
the script.

I have changed the original post, first in this topic, again ! (Top of this page)

As an example i include CJ's Battle ships in 'encrypted' form
Original script: 2nd KiX game ever!!

Size before Compress/encrypt : 13,728 bytes
Size after Compress/encrypt : 9,823 bytes

code:

break on $=setascii(on) $seed=val(substr("@time",7,2)) $seed=$seed+1 do $=rnd(1) $seed=$seed-1 until $seed=0 dim $boat[5] dim $name dim $nameA[8] dim $grid[100] dim $boatlen[5] dim $boathit[5]
dim $g dim $gy dim $gx dim $ship1[7] dim $ship2[7] dim $ship3[7] $boat[0]="Frigate " $boatlen[0]=2 $boat[1]="Submarine " $boatlen[1]=3 $boat[2]="Cruiser " $boatlen[2]=3 $boat[3]="BattleShip" $boatlen[3]=4 $boat[4]="Carrier " $boatlen[4]=5 $name="Player" $last="o" $lose=0
$path=%TEMP% $random=0
$boathit[0]=0 $boathit[1]=0 $boathit[2]=0 $boathit[3]=0 $boathit[4]=0 $ship1[5]=" \ /" $ship1[6]=" \ /" $ship2[0]=" _" $ship2[1]=" __|_" $ship2[2]=" | 87 |" $ship3[5]=" \ \/ \/ / \/. / " $ship3[6]=" \ .\ \ / /. / " $ship2[3]=" ________|____|________" $ship2[4]=" / ooo -- ooo \" $ship3[3]=" | / \/ \/ | " $ship3[4]=" | \ /\ / /\ /. | " $ship2[5]=" [| -- |" $ship2[6]=" x\______________________/" $ship1[3]="_____|__|___|_____|___|__|____" $ship1[4]="\ 11 . . . . . /" $ship3[0]=" |\ | | /| " $ship3[1]=" | \/\| | | |/\/ | " $ship3[2]=" |/ \ \| |/ / | " $ship1[0]=" |" $ship1[1]=" \ \ __|__ / /" $ship1[2]=" \_\ | | /_/" $i=0 do $grid[$i]=9 $i=$i+1 until $i=100 goto MAIN :intro cls at(12,10) color b+/n "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" color w/n $y=0 do at(5+$y,17) $ship1[$y] at(16+$y,20) $ship2[$y] $y=$y+1 until $y=7 $x=20 do $y=0 do at(16+$y,$x) $ship2[$y] $y=$y+1 until $y=7 $x=$x+1 until $x=30
$y=19 do at($y+1,35) " " at(12,35) color b+/n "~" color w/n at($y,35) "!" at(19,35) "_" at(20,35) "o" at (31-$y,25) " " at(12,25) color b+/n "~" color w/n at(32-$y,25) "o" at(24,79) sleep 1 $y=$y-1 until $y=10 at(21,25) " " at(22,25) "*" $end=50 gosub burn at(22,25) " " color w/n $y=0 do at(5+$y,17) $ship3[$y] $y=$y+1 until $y=7 $end=30 gosub burn color w/n $d=0 do $y=6 at($d+11-$y,17) " " do color w/n at($d+12-$y,17) $ship3[6-$y] $y=$y-1 until $y=$d $end=10 gosub burn $d=$d+1 until $d=6
color w/n $x=30 do $y=0 do at(16+$y,$x) $ship2[$y] $y=$y+1 until $y=7 $x=$x+1 until $x=50 big color w/n at(0,0) "Battle" ? " Ships" small ? ? ? ? ? "Version 1.0" ? "by cj" ? ? ? "Press any key to begin" get$ cls return :burn $c=0 do $a=rnd(3)+8 $b=rnd(10)+27 $s1=rnd(2)+176 $s2=rnd(2)+176 $s3=rnd(2)+176 $col=rnd(2) if $col=0 color r+/n endif if $col=1 color r/n endif if $col=2 color y+/n endif at($a,$b) chr($s1) at($a-1,$b-1) chr($s2) at($a-1,$b+1) chr($s3) $c=$c+1 until $c=$end return
:drawgrid $r=3 do at($r,3) " " at($r+1,3) "Ĵ"
$r=$r+2 until $r=23 at(2,3) "Ŀ" at(22,3) "" color w/n at(1,4) "A B C D E F G H I J" at(1,4) $i=0 do at(3+2*$i,2) "$i" $i=$i+1 until $i=10 at(2,37) "Battleships" at(3,37) "Version 1.0" at(5,37) "Please enter your name :" $i=0 do $nameA[$i]=" " $i=$i+1 until $i=8 $i=0 do
:wrong at(5,62+$i) get $a if $a=chr(13) if $i=0 $name="Chris" endif $i=8 goto leave endif if $a=chr(8) if $i>0 $i=$i-1 endif at(5,62+$i) " " endif if ((asc($a)>47) and (asc($a)<58)) or ((asc($a)>64) and (asc($a)<91)) or ((asc($a)>96) and (asc($a)<123)) at(5,62+$i) $a $nameA[$i]=$a
$name="" $i=$i+1 else goto wrong endif :leave until $i=8 $i=0 do if $nameA[$i]<>" " $name=$name+$nameA[$i] endif $i=$i+1
until $i=8 at(5,37) " " at(5,37) "Welcome Commander $name." color w+/n at(7,37) "Enter co-ordinates:" color w/n return :getXY $boatname=$boat[$i] $nogo=0 select case $i=0 color b/n case $i=1 color g/n case $i=2 color c/n case $i=3 color m/n case $i=4 color y/n endselect at(8+$i,37) "$boatname : " :inputcol if $random=1 $gx=rnd(9) $gy=rnd(9) goto calc endif if $bad=0 $j=0 do at(3+2*$j,2) " " $j=$j+1 until $j=10 color w+/n at(1,4) ? color w/n else color w+/n at(9,62) "ABCDEFGHIJ" $z=0 do at(10+$z,61) " " $z=$z+1 until $z=10 endif at(8+$i,41+len($boatname)) flushkb get $c $c=ucase($c) if $c="Q" goto bye endif if $c="R" $random=1 $gx=rnd(9) $gy=rnd(9) goto calc else $random=0 endif if (asc($c)>64) and (asc($c)<75) at(8+$i,41+len($boatname)) "$c" else goto inputcol endif :inputrow if $bad=0 at(1,4) " " color w+/n $j=0 do at(3+2*$j,2) "$j" $j=$j+1 until $j=10 color w/n else at(9,62) " " color w+/n $z=0 do at(10+$z,61) "$z" $z=$z+1 until $z=10 endif at(8+$i,42+len($boatname)) flushkb get $r if $r="q" goto bye endif if (asc($r)>47) and (asc($r)<58) at(8+$i,42+len($boatname)) "$r" else goto inputrow endif
$gx=asc($c)-65 $gy=asc($r)-48 :calc $x=(2*$gx)+($gx+4) $y=(2*$gy)+3
$g=($gy*10)+$gx
if $bad=0 color w/n at(1,4) "A B C D E F G H I J" color w/n at(1,4) $j=0 do at(3+2*$j,2) "$j" $j=$j+1 until $j=10 else color w/n at(9,62) "ABCDEFGHIJ" $z=0 do at(10+$z,61) "$z" $z=$z+1 until $z=10 endif return :checkgrid $gn=$grid[$g] if $gn=9 else at(8+$i,41+len($boatname)) " " $nogo=1 goto out endif $b=$boatlen[$i] $by1=9-$b+1 $by2=0+$b-1 $ra="M" $da="P" $la="K" $ua="H" if $gx>($by1) $ra="" endif if $gx<($by2) $la="" endif if $gy>($by1) $da="" endif if $gy<($by2) $ua="" endif $j=1 $c=" " $rc="9" $dc="9" $lc="9" $uc="9" do if $ra<>"" $rc=$grid[$g+$j] endif if $da<>"" $dc=$grid[$g+($j*10)] endif if $la<>"" $lc=$grid[$g-$j] endif if $ua<>"" $uc=$grid[$g-($j*10)] endif if $rc<>9 $ra="" endif if $dc<>9 $da="" endif if $lc<>9 $la="" endif if $uc<>9 $ua="" endif $j=$j+1 until $j=$boatlen[$i] $avail=$ra+$da+$la+$ua if len($avail)=0 $nogo=1 color r+/n at(14,37) "Ship will not fit here" color w/n goto out
else at(14,37) " " endif color w/n at(8+$i,44+len($boatname)) if $random=0 if $ra<>"" chr(16) " " endif if $da<>"" chr(31) " " endif if $la<>"" chr(17) " " endif if $ua<>"" chr(30) " " endif endif :getway if $random=0 get $way else $rndch=rnd(3) if $rndch=0 $way="M" endif if $rndch=1 $way="P" endif if $rndch=2 $way="K" endif if $rndch=3 $way="H" endif endif if $way="q" goto bye endif if instr($avail,$way) else goto getway endif
if ($way="M") or ($way="K") $t=(($boatlen[$i]-1)*3)+2 $k=0 endif if ($way="P") or ($way="H") $t=($boatlen[$i]*2)-1 $k=0 endif
select case $i=0 color b/n case $i=1 color g/n case $i=2 color c/n case $i=3 color m/n case $i=4 color y/n endselect do
if $way="M" at($y,$x+$k) chr(219) endif if $way="P" at($y+$k,$x) chr(219) chr(219) endif if $way="K" at($y,$x-($k-1)) chr(219) endif if $way="H" at($y-$k,$x) chr(219) chr(219) endif $k=$k+1 until $k=$t color w/n $j=0 do $grid[$g]=$i if $way="M" $g=$g+1 endif if $way="P" $g=$g+10 endif if $way="K" $g=$g-1 endif if $way="H" $g=$g-10 endif $j=$j+1 until $j=$boatlen[$i] :out return :debug at(13,41) color w/n $y=0 $d=" " do $x=0 do at(13+$y,41+$x) $g=($y*10)+$x if $grid[$g]=9 $grid[$g] else "." endif $x=$x+1 until $x=10 $y=$y+1
until $y=10 return :status $i=0 $lose=1
do at(8+$i,51) if $boathit[$i]=0 at(8+$i,51) color g+/n "100%" $lose=0 endif if ($boathit[$i]>0) and ($boathit[$i]<$boatlen[$i]) $p=100-(($boathit[$i]*100)/$boatlen[$i]) color y+/n "$p% " $lose=0 endif if $boathit[$i]=$boatlen[$i] color r+/n "Lost" endif $i=$i+1 until $i=5 color w/n return :checkhit $gn=$grid[$g] $last="o" if $gn<>9 if $gn<>8 $boathit[$gn]=$boathit[$gn]+1 $last="X" endif $grid[$g]=8 color r+/n else color w/n endif at($y,$x) chr(178) chr(178) color w/n return :badguy color r+/n at(7,61) "$badguy" color w/n box(8,60,20,72,single) at(9,62) "ABCDEFGHIJ" $y=0 do at(10+$y,61) "$y" $x=0 do at(10+$y,62+$x)"." $x=$x+1 until $x=10 $y=$y+1 until $y=10 return :blowmeup $gx=rnd(9) $gy=rnd(9) $x=(2*$gx)+($gx+4) $y=(2*$gy)+3 $g=(10*$gy)+$gx gosub checkhit return :showbad if $mark="X" color r+/n else color w+/n endif at(10+$gy,62+$gx)"$mark" color w/n return
:sendattack $=open(1,"$path\$name.txt",5) $out=$last+chr(13)+chr(10) $=writeline(1,$out) $out=chr($gx+65)+","+chr($gy+48) $=writeline(1,$out) $=close(1) return :getattack $r=exist("$path\$badguy.txt") if $r=0 sleep 1 goto getattack endif sleep 1 $=open(1,"$path\$badguy.txt") $in1=readline(1)
if $in1="lose" color g+/n at(17,37) "You Won!" goto bye endif $in2=readline(1) $=close(1) del "$path\$badguy.txt" return :gameON del "$path\$name.txt"
$r=open(1,"$path\game.txt") if $r=2 $create=1 $=open(1,"$path\game.txt",5) $=writeline(1,$name) $=close(1)
:getreply $r=open(1,"$path\reply.txt") if $r=2 sleep 1 goto getreply endif $badguy=readline(1) $=close(1) del "$path\reply.txt" else $create=0 $badguy=readline(1) $=close(1) del "$path\game.txt" $=open(1,"$path\reply.txt",5) $=writeline(1,$name) $=close(1) endif return :bye $last="lose" gosub sendattack del "$path\$badguy.txt" at(22,0) color w+/n "Bye!" ? quit :MAIN gosub intro gosub drawgrid $i=0 $r=" " $c=" " $g=0 do :getagain $bad=0 gosub getXY
gosub checkgrid if $nogo=1 goto getagain endif at(8+$i,41+len($boatname)) " " $i=$i+1
until $i=5 $random=0 color w+/n at(15,37) "Looking for player" gosub gameON at(7,37) "Ship Status " gosub badguy :shoot gosub status if $lose=1 $last="lose" gosub sendattack color r+/n at(17,37) "You lost!" goto bye endif if $create=0 goto waitnow endif
color w+/n at(15,37) "Enter attack: " $i=7 $bad=1 $random=0 gosub inputcol $mark="?" gosub showbad color w/n at(15,37) "Processing... " gosub sendattack :waitnow
$create=1 gosub getattack $mark=$in1 gosub showbad $gxc=substr($in2,1,1) $gyc=substr($in2,3,1) $gx=asc($gxc)-65 $gy=asc($gyc)-48 $x=(2*$gx)+($gx+4) $y=(2*$gy)+3 $g=(10*$gy)+$gx gosub checkhit goto shoot


Compressed/encrypted script still working without decryption !

Logfile for transform of Battle ships script:

T R A N S F O R M L O G

Inputfile : Battle
Outputfile : Battle.kix

OPTIONS USED
Indent : NONE
Remarks removed
Empty lines removed


Battle.kix successfully created, no errors found.

[This message has been edited by kholm (edited 29 June 2000).]

Top
#50369 - 2000-07-03 08:34 PM Re: Compiler / formatter for Kix-scripts
MCA Offline
KiX Supporter
*****

Registered: 2000-04-28
Posts: 5152
Loc: Netherlands, EU
Very nice script, but how fast is it. By compression of 100 lines you must
wait a time, but by 10.000 lines it cost enormous amount of time and CPU capacity.

We are creating an additional program which can compress and encrypt any type of file.
By a shell automatically decryption and decompression will take place before starting running f.e. kixtart.
Mine experience with kixtart is that


  • kixtart creates a very heavy CPU-load by file handling.
  • kixtart free-format-syntax structure delivers unwanted statements.

see:
http://kixtart.org/board/Forum2/HTML/000570.html

Some benchmark results on Pentium 200 MHz:


  • script 1: 8618 lines / 282.643 bytes
    compress /e = 5.60 sec 42.807 bytes
    codec /e = 0.38 sec 62.395 bytes
    codec /d = 0.66 sec
    compress /d = 0.72 sec
  • script 2: 4126 lines / 149.988 bytes
    compress /e = 5.60 sec 23.823 bytes
    codec /e = 0.38 sec 33.914 bytes
    codec /d = 0.66 sec
    compress /d = 0.72 sec

Greetings.

[This message has been edited by MCA (edited 03 July 2000).]

_________________________
email scripting@wanadoo.nl homepage scripting@wanadoo.nl | Links | Summary of Site Site KiXforms FAQ kixtart.org library collection mirror MCA | FAQ & UDF help file UDF kixtart.org library collection mirror MCA | mirror USA | mirror europe UDF scriptlogic library collection UDFs | mirror MCA

Top
#50370 - 2000-07-04 04:44 AM Re: Compiler / formatter for Kix-scripts
MCA Offline
KiX Supporter
*****

Registered: 2000-04-28
Posts: 5152
Loc: Netherlands, EU
We did also some benchmarks on your script (372 lines; 9182 bytes)

[list]

  • transform script by your kixtart script
    benchmark: 78,49 sec

  • formatting/checking/stripping/label handling of script.
    remarks: no limitations of linelength. experience with lines greater then 256 KBytes are possible.
    a lot of editors can't handle files with those lines.
    a lot of program language has a default limit of string length of 32 or 64 KBytes.
    benchmark: 2.58 sec (9 lines; 6965 bytes)

    code:

    Break On $CRLF = Chr(13) + Chr(10) $True = -1 $False = 0 $StrSep1 = "'" $StrSep2 = '"' $LogFile = %TEMP% + "\Transform.log" Color W+/b $IndentNbr = 0 $LineNum = 0 $ErrorsFound = $False $Err = SetConsole("Maximize") Do CLS Box (1,1,3,78,"SINGLE") AT (2,21) "T R A N S F O R M S C R I P T" AT (5,5) "Script to transform : " GetS $File $Err = Open(1,"$File") Until $Err = 0 $OutFile = $File + ".kix" $Err = SetFileAttr($OutFile, 128) If $Err = 0 AT (7,5) "Overwrite " + $OutFile + " Y/N " Do Get $x If UCase($x) = "N" Quit EndIf Until Ucase($x) = "Y" "Y" EndIf $Indent = "" AT (9,5) "Indent (T = Tabulator, 0..9 = number of spaces) : " Do Get $IndentIn $IndentIn = UCase($IndentIn) If $IndentIn = "T" $Indent = Chr(9) Else $Test = Val($IndentIn) If $Test > 0 $i = 0 While $i < $Test $Indent = $Indent + " " $i = $i + 1 Loop EndIf EndIf Until $Indent <> "" Or $IndentIn = 0 $IndentIn AT (11,5) "Keep remarks Y/N " Do Get $x $x = UCase($x) Until ($x = "Y") Or ($x = "N") $x If $x = "Y" $KeepRemarks = $True Else $KeepRemarks = $False EndIf AT (13,5) "Keep empty lines Y/N " Do Get $x $x = UCase($x) Until ($x = "Y") Or ($x = "N") $x If $x = "Y" $KeepEmptyLines = $True Else $KeepEmptyLines = $False EndIf AT (17,5) "Transforming ..........." Del "$OutFile" $Err = Open(2,"$OutFile",5) Del "$LogFile" $Err = Open(3,"$LogFile",5) $Err = WriteLine(3," T R A N S F O R M L O G" + $CRLF + $CRLF) $Err = WriteLine(3,"Inputfile : " + $File + $CRLF) $Err = WriteLine(3,"Outputfile : " + $OutFile + $CRLF + $CRLF) $Err = WriteLine(3,"OPTIONS USED" + $CRLF) $Err = WriteLine(3," Indent : ") $IndentIn = "" + $IndentIn Select Case $IndentIn = "T" $Err = WriteLine(3,"Tabulator" + $CRLF) Case $IndentIn = "0" $Err = WriteLine(3,"NONE" + $CRLF) Case 1 $Err = WriteLine(3,$IndentIn + " spaces" + $CRLF) EndSelect If $KeepRemarks $Err = WriteLine(3," Remarks kept" + $CRLF) Else $Err = WriteLine(3," Remarks removed" + $CRLF) EndIf If $KeepEmptyLines $Err = WriteLine(3," Empty lines kept" + $CRLF + $CRLF) Else $Err = WriteLine(3," Empty lines removed" + $CRLF + $CRLF) EndIf $Line = ReadLine(1) While @Error = 0 GoSub Status $LineNum = $LineNum + 1 GoSub WriteOutLine $Line = ReadLine(1) Loop At(17,30) " " If $IndentNbr > 0 $ErrorsFound = $True $Err = WriteLine(3,$CRLF) $Err = WriteLine(3,"Error, indents not matching, EndIf, Until, Loop or EndSelect statement missing" + $CRLF) EndIf If $ErrorsFound $Err = WriteLine(3,$CRLF) $Err = WriteLine(3,"ERRORS FOUND in file : " + $File + $CRLF + $CRLF) Else $Err = WriteLine(3,"S U C C E S S" + $CRLF) EndIf $Err = WriteLine(3,$OutFile + " created") $Err = Close(1) $Err = Close(2) $Err = Close(3) At(21,5) "Close Notepad to complete Transform" Shell "%COMSPEC% /C Start /Wait /Max NotePad.exe $LogFile" $Ans = MessageBox("Delete logfile : " + $LogFile,"Delete logfile",36) If $Ans = 6 Del "$LogFile" EndIf Return
    :WriteOutLine
    While (SubStr($Line,1,1) = " ") Or (SubStr($Line,1,1) = Chr(9)) $Line = SubStr($Line, 2, Len($Line) - 1) Loop While (SubStr($Line,Len($Line),1) = " ") Or (SubStr($Line,Len($Line),1) = Chr(9)) $Line = SubStr($Line, 1, Len($Line) - 1) Loop $TmpLine = $Line $PosRem = 0 GoSub GetPosRem If $PosRem = 0 $TmpLine = $Line GoSub TestStrings EndIf $FrontRem = "" If $PosRem > 0 If $PosRem > 1 $FrontRem = $Indent EndIf $Remark = SubStr($Line, $PosRem , Len($Line) - $PosRem + 1) $Code = SubStr($Line, 1, $PosRem - 1) Else $Remark = "" $Code = $Line EndIf While (SubStr($Code,Len($Code),1) = " ") Or (SubStr($Code,Len($Code),1) = Chr(9)) $Code = SubStr($Code, 1, Len($Code) - 1) Loop If $Code = "" And $Remark = "" $LineEmpty = $True Else $LineEmpty = $False EndIf $PendingIndent = 0 $NotChecked = $False $Test = UCase($Code) Select Case $Test = "DO" $PendingIndent = 1 Case $Test = "ELSE" $PendingIndent = 1 $IndentNbr = $IndentNbr - 1 Case $Test = "ENDIF" $IndentNbr = $IndentNbr - 1 Case $Test = "SELECT" $PendingIndent = 1 $CasePrev = $False Case $Test = "ENDSELECT" $IndentNbr = $IndentNbr - 2 Case $Test = "LOOP" $IndentNbr = $IndentNbr - 1 Case 1 $NotChecked = $True EndSelect If $NotChecked If UCase(SubStr($Code, 1, 3)) = "IF " If UCase(SubStr($Code, Len($Code) - 5, 6)) <> " ENDIF" $PendingIndent = 1 EndIf Else If UCase(SubStr($Code, 1, 5)) = "CASE " $PendingIndent = 1 If $CasePrev $IndentNbr = $IndentNbr - 1 Else $CasePrev = $True EndIf Else If UCase(SubStr($Code, 1, 6)) = "UNTIL " $IndentNbr = $IndentNbr - 1 Else If UCase(SubStr($Code, 1, 6)) = "WHILE " $PendingIndent = 1 EndIf EndIf EndIf EndIf EndIf If $IndentNbr < 0 $ErrorsFound = $True $Err = WriteLine(3,"Error, negative indent in line " + $LineNum + " If, Do, Select or While statement missing previous in script" + $CRLF) $IndentNbr = 0 EndIf If $Code <> "" $i = 0 $Front = "" While $i < $IndentNbr $Front = $Front + $Indent $i = $i + 1 Loop $Line = $Front + $Code Else $Line = "" EndIf If ($Remark <> "") And $KeepRemarks If $Line <> "" $Line = $Line + $FrontRem EndIf $Line = $Line + $Remark EndIf If $Line <> "" $Line = $Line + $CRLF Else If $KeepEmptyLines And $LineEmpty $Line = $CRLF EndIf EndIf $Err = WriteLine(2, "$Line") $IndentNbr = $IndentNbr + $PendingIndent Return
    :GetPosRem
    $TestRem = InStr($TmpLine, ";") If $TestRem > 0 $TstStr1 = InStr($TmpLine, $StrSep1) If $TstStr1 = 0 $TstStr1 = 100000 EndIf $TstStr2 = InStr($TmpLine, $StrSep2) If $TstStr2 = 0 $TstStr2 = 100000 EndIf If $TstStr1 < $TstStr2 $StrSep = $StrSep1 $StartStr = $TstStr1 Else $StrSep = $StrSep2 $StartStr = $TstStr2 EndIf If $StartStr = 100000 $StartStr = 0 EndIf If $StartStr < $TestRem And $StartStr > 0 $PosRem = $PosRem + $StartStr $TmpLine = SubStr($TmpLine, $StartStr + 1, Len($TmpLine) - $StartStr) $TestRem = InStr($TmpLine, ";") $TestEnd = InStr($TmpLine, $StrSep) If $TestEnd > 0 If $TestEnd > $TestRem $PosRem = $PosRem + $TestEnd $TmpLine = SubStr($TmpLine, $TestEnd + 1, Len($TmpLine) - $TestEnd) GoSub GetPosRem Else $PosRem = $PosRem + $TestRem EndIf Else $ErrorsFound = $True $Err = WriteLine(3,"Mismatching stringdelimitors in line " + $LineNum + $CRLF) $PosRem = 0 $TmpLine = "" EndIf Else $PosRem = $PosRem + InStr($TmpLine, ";") Endif Else $PosRem = 0 EndIf Return
    :TestStrings
    $TstStr1 = InStr($TmpLine, $StrSep1) If $TstStr1 = 0 $TstStr1 = 100000 EndIf $TstStr2 = InStr($TmpLine, $StrSep2) If $TstStr2 = 0 $TstStr2 = 100000 EndIf If $TstStr1 < $TstStr2 $StrSep = $StrSep1 $StartStr = $TstStr1 Else $StrSep = $StrSep2 $StartStr = $TstStr2 EndIf If $StartStr = 100000 $StartStr = 0 EndIf If $StartStr > 0 $TmpLine = SubStr($TmpLine, $StartStr + 1, Len($TmpLine) - $StartStr) $TestEnd = InStr($TmpLine, $StrSep) If $TestEnd > 0 $TmpLine = SubStr($TmpLine, $TestEnd + 1, Len($TmpLine) - $TestEnd) GoSub TestStrings Else $ErrorsFound = $True $Err = WriteLine(3,"Mismatching stringdelimitors in line " + $LineNum + $CRLF) $TmpLine = "" EndIf EndIf Return
    :Status
    $s = $s + 1 Select Case $s = 1 $Ch = "|" Case $s = 2 $Ch = "/" Case $s = 3 $Ch = "-" Case 1 $Ch = "\" $s = 0 EndSelect At(17,30) $Ch Return

  • formatting/checking/stripping/label handling of script + compression + uuencode
    remark: an additional information header has been added for recognition.
    benchmark: 3.05 sec (10621 bytes)

    code:

    begin (c) CODEC 1.30e (2000186 tue 04-jul-2000 04:14:59.66)
    ;
    ; (c) The software product is protected by copyright laws and
    ; international copyright treaties, as well as other in-
    ; tellectual property laws and treaties.
    ; The SOFTWARE PRODUCT is licensed, not sold.
    ;
    ; If you want to use the software for any (new) purpose
    ; you needs a license agreement, which can only be deli-
    ; vered by creator and owner of this software.
    ;
    begin.. size=6965
    M0G)E86L@3VX@)$-23$8@/2!#:'(H,3,I("L@0VAR*#$P*2`D5')U92`]("TQ
    M("1&86QS92`](#`@)%-T<E-E<#$@/2`B)R(@)%-T<E-E<#(@/2`G(B<@)$QO
    M9T9I;&4@/2`E5$5-4"4@*R`B7%1R86YS9F]R;2YL;V<B($-O;&]R(%<K+V(@
    M)$EN9&5N=$YB<B`](#`@)$QI;F5.=6T@/2`P("1%<G)O<G-&;W5N9"`]("1&
    M86QS92`D17)R(#T@4V5T0V]N<V]L92@B36%X:6UI>F4B*2!$;R!#3%,@0F]X
    M("@Q+#$L,RPW."PB4TE.1TQ%(BD@050@*#(L,C$I(")4(%(@02!.(%,@1B!/
    M(%(@32`@(%,@0R!2($D@4"!4(B!!5"`H-2PU*2`B4V-R:7!T('1O('1R86YS
    M9F]R;2`Z("(@1V5T4R`D1FEL92`D17)R(#T@3W!E;B@Q+"(D1FEL92(I(%5N
    M=&EL("1%<G(@/2`P("1/=71&:6QE(#T@)$9I;&4@*R`B+FMI>"(@)$5R<B`]
    M(%-E=$9I;&5!='1R*"1/=71&:6QE+"`Q,C@I($EF("1%<G(@/2`P($%4("@W
    M+#4I(")/=F5R=W)I=&4@(B`K("1/=71&:6QE("L@(B!9+TX@(B!$;R!'970@
    M)'@@268@54-A<V4H)'@I(#T@(DXB(%%U:70@16YD268@56YT:6P@56-A<V4H
    M)'@I(#T@(EDB(")9(B!%;F1)9B`D26YD96YT(#T@(B(@050@*#DL-2D@(DEN
    M9&5N="`H5"`](%1A8G5L871O<BP@,"XN.2`](&YU;6)E<B!O9B!S<&%C97,I
    M(#H@(B!$;R!'970@)$EN9&5N=$EN("1);F1E;G1);B`](%5#87-E*"1);F1E
    M;G1);BD@268@)$EN9&5N=$EN(#T@(E0B("1);F1E;G0@/2!#:'(H.2D@16QS
    M92`D5&5S="`](%9A;"@D26YD96YT26XI($EF("1497-T(#X@,"`D:2`](#`@
    M5VAI;&4@)&D@/"`D5&5S="`D26YD96YT(#T@)$EN9&5N="`K("(@(B`D:2`]
    M("1I("L@,2!,;V]P($5N9$EF($5N9$EF(%5N=&EL("1);F1E;G0@/#X@(B(@
    M3W(@)$EN9&5N=$EN(#T@,"`D26YD96YT26X@050@*#$Q+#4I(")+965P(')E
    M;6%R:W,@62].("(@1&\@1V5T("1X("1X(#T@54-A<V4H)'@I(%5N=&EL("@D
    M>"`](")9(BD@3W(@*"1X(#T@(DXB*2`D>"!)9B`D>"`](")9(B`D2V5E<%)E
    M;6%R:W,@/2`D5')U92!%;'-E("1+965P4F5M87)K<R`]("1&86QS92!%;F1)
    M9B!!5"`H,3,L-2D@(DME97`@96UP='D@;&EN97,@62].("`B($1O($=E="`D
    M>"`D>"`](%5#87-E*"1X*2!5;G1I;"`H)'@@/2`B62(I($]R("@D>"`](").
    M(BD@)'@@268@)'@@/2`B62(@)$ME97!%;7!T>4QI;F5S(#T@)%1R=64@16QS
    M92`D2V5E<$5M<'1Y3&EN97,@/2`D1F%L<V4@16YD268@050@*#$W+#4I(")4
    M<F%N<V9O<FUI;F<@+BXN+BXN+BXN+BXB($1E;"`B)$]U=$9I;&4B("1%<G(@
    M/2!/<&5N*#(L(B1/=71&:6QE(BPU*2!$96P@(B1,;V=&:6QE(B`D17)R(#T@
    M3W!E;B@S+"(D3&]G1FEL92(L-2D@)$5R<B`](%=R:71E3&EN92@S+"(@("`@
    M(%0@4B!!($X@4R!&($\@4B!-("`@3"!/($<B("`K("1#4DQ&("L@)$-23$8I
    M("1%<G(@/2!7<FET94QI;F4H,RPB26YP=71F:6QE("`Z("(@("L@)$9I;&4@
    M*R`D0U),1BD@)$5R<B`](%=R:71E3&EN92@S+")/=71P=71F:6QE(#H@(B`@
    M*R`D3W5T1FEL92`K("1#4DQ&("L@)$-23$8I("1%<G(@/2!7<FET94QI;F4H
    M,RPB3U!424].4R!54T5$(B`K("1#4DQ&*2`D17)R(#T@5W)I=&5,:6YE*#,L
    M(B`@26YD96YT(#H@(BD@)$EN9&5N=$EN(#T@(B(@*R`D26YD96YT26X@4V5L
    M96-T($-A<V4@)$EN9&5N=$EN(#T@(E0B("1%<G(@/2!7<FET94QI;F4H,RPB
    M5&%B=6QA=&]R(B`K("1#4DQ&*2!#87-E("1);F1E;G1);B`]("(P(B`D17)R
    M(#T@5W)I=&5,:6YE*#,L(DY/3D4B("L@)$-23$8I($-A<V4@,2`D17)R(#T@
    M5W)I=&5,:6YE*#,L)$EN9&5N=$EN("L@(B!S<&%C97,B("L@)$-23$8I($5N
    M9%-E;&5C="!)9B`D2V5E<%)E;6%R:W,@)$5R<B`](%=R:71E3&EN92@S+"(@
    M(%)E;6%R:W,@:V5P="(@*R`D0U),1BD@16QS92`D17)R(#T@5W)I=&5,:6YE
    M*#,L(B`@4F5M87)K<R!R96UO=F5D(B`K("1#4DQ&*2!%;F1)9B!)9B`D2V5E
    M<$5M<'1Y3&EN97,@)$5R<B`](%=R:71E3&EN92@S+"(@($5M<'1Y(&QI;F5S
    M(&ME<'0B("L@)$-23$8@*R`D0U),1BD@16QS92`D17)R(#T@5W)I=&5,:6YE
    M*#,L(B`@16UP='D@;&EN97,@<F5M;W9E9"(@*R`D0U),1B`K("1#4DQ&*2!%
    M;F1)9B`D3&EN92`](%)E861,:6YE*#$I(%=H:6QE($!%<G)O<B`](#`@1V]3
    M=6(@4W1A='5S("1,:6YE3G5M(#T@)$QI;F5.=6T@*R`Q($=O4W5B(%=R:71E
    M3W5T3&EN92`D3&EN92`](%)E861,:6YE*#$I($QO;W`@070H,3<L,S`I("(@
    M(B!)9B`D26YD96YT3F)R(#X@,"`D17)R;W)S1F]U;F0@/2`D5')U92`D17)R
    M(#T@5W)I=&5,:6YE*#,L)$-23$8I("1%<G(@/2!7<FET94QI;F4H,RPB17)R
    M;W(L(&EN9&5N=',@;F]T(&UA=&-H:6YG+"!%;F1)9BP@56YT:6PL($QO;W`@
    M;W(@16YD4V5L96-T('-T871E;65N="!M:7-S:6YG(B`K("1#4DQ&*2!%;F1)
    M9B!)9B`D17)R;W)S1F]U;F0@)$5R<B`](%=R:71E3&EN92@S+"1#4DQ&*2`D
    M17)R(#T@5W)I=&5,:6YE*#,L(D524D]24R!&3U5.1"!I;B!F:6QE(#H@(B`K
    M("1&:6QE("L@)$-23$8@*R`D0U),1BD@16QS92`D17)R(#T@5W)I=&5,:6YE
    M*#,L(E,@52!#($,@12!3(%,B("L@)$-23$8I($5N9$EF("1%<G(@/2!7<FET
    M94QI;F4H,RPD3W5T1FEL92`K("(@8W)E871E9"(I("1%<G(@/2!#;&]S92@Q
    M*2`D17)R(#T@0VQO<V4H,BD@)$5R<B`]($-L;W-E*#,I($%T*#(Q+#4I(")#
    M;&]S92!.;W1E<&%D('1O(&-O;7!L971E(%1R86YS9F]R;2(@4VAE;&P@(B5#
    M3TU34$5#)2`O0R!3=&%R="`O5V%I="`O36%X($YO=&50860N97AE("1,;V=&
    M:6QE(B`D06YS(#T@365S<V%G94)O>"@B1&5L971E(&QO9V9I;&4@.B`B("L@
    M)$QO9T9I;&4L(D1E;&5T92!L;V=F:6QE(BPS-BD@268@)$%N<R`](#8@1&5L
    M("(D3&]G1FEL92(@16YD268@4F5T=7)N(`T*("`Z5W)I=&5/=71,:6YE#0I7
    M:&EL92`H4W5B4W1R*"1,:6YE+#$L,2D@/2`B("(I($]R("A3=6)3='(H)$QI
    M;F4L,2PQ*2`]($-H<B@Y*2D@)$QI;F4@/2!3=6)3='(H)$QI;F4L(#(L($QE
    M;B@D3&EN92D@+2`Q*2!,;V]P(%=H:6QE("A3=6)3='(H)$QI;F4L3&5N*"1,
    M:6YE*2PQ*2`]("(@(BD@3W(@*%-U8E-T<B@D3&EN92Q,96XH)$QI;F4I+#$I
    M(#T@0VAR*#DI*2`D3&EN92`](%-U8E-T<B@D3&EN92P@,2P@3&5N*"1,:6YE
    M*2`M(#$I($QO;W`@)%1M<$QI;F4@/2`D3&EN92`D4&]S4F5M(#T@,"!';U-U
    M8B!'9710;W-296T@268@)%!O<U)E;2`](#`@)%1M<$QI;F4@/2`D3&EN92!'
    M;U-U8B!497-T4W1R:6YG<R!%;F1)9B`D1G)O;G1296T@/2`B(B!)9B`D4&]S
    M4F5M(#X@,"!)9B`D4&]S4F5M(#X@,2`D1G)O;G1296T@/2`D26YD96YT($5N
    M9$EF("1296UA<FL@/2!3=6)3='(H)$QI;F4L("10;W-296T@+"!,96XH)$QI
    M;F4I("T@)%!O<U)E;2`K(#$I("1#;V1E(#T@4W5B4W1R*"1,:6YE+"`Q+"`D
    M4&]S4F5M("T@,2D@16QS92`D4F5M87)K(#T@(B(@)$-O9&4@/2`D3&EN92!%
    M;F1)9B!7:&EL92`H4W5B4W1R*"1#;V1E+$QE;B@D0V]D92DL,2D@/2`B("(I
    M($]R("A3=6)3='(H)$-O9&4L3&5N*"1#;V1E*2PQ*2`]($-H<B@Y*2D@)$-O
    M9&4@/2!3=6)3='(H)$-O9&4L(#$L($QE;B@D0V]D92D@+2`Q*2!,;V]P($EF
    M("1#;V1E(#T@(B(@06YD("1296UA<FL@/2`B(B`D3&EN945M<'1Y(#T@)%1R
    M=64@16QS92`D3&EN945M<'1Y(#T@)$9A;'-E($5N9$EF("1096YD:6YG26YD
    M96YT(#T@,"`D3F]T0VAE8VME9"`]("1&86QS92`D5&5S="`](%5#87-E*"1#
    M;V1E*2!396QE8W0@0V%S92`D5&5S="`](")$3R(@)%!E;F1I;F=);F1E;G0@
    M/2`Q($-A<V4@)%1E<W0@/2`B14Q312(@)%!E;F1I;F=);F1E;G0@/2`Q("1)
    M;F1E;G1.8G(@/2`D26YD96YT3F)R("T@,2!#87-E("1497-T(#T@(D5.1$E&
    M(B`D26YD96YT3F)R(#T@)$EN9&5N=$YB<B`M(#$@0V%S92`D5&5S="`](")3
    M14Q%0U0B("1096YD:6YG26YD96YT(#T@,2`D0V%S95!R978@/2`D1F%L<V4@
    M0V%S92`D5&5S="`](")%3D1314Q%0U0B("1);F1E;G1.8G(@/2`D26YD96YT
    M3F)R("T@,B!#87-E("1497-T(#T@(DQ/3U`B("1);F1E;G1.8G(@/2`D26YD
    M96YT3F)R("T@,2!#87-E(#$@)$YO=$-H96-K960@/2`D5')U92!%;F1396QE
    M8W0@268@)$YO=$-H96-K960@268@54-A<V4H4W5B4W1R*"1#;V1E+"`Q+"`S
    M*2D@/2`B248@(B!)9B!50V%S92A3=6)3='(H)$-O9&4L($QE;B@D0V]D92D@
    M+2`U+"`V*2D@/#X@(B!%3D1)1B(@)%!E;F1I;F=);F1E;G0@/2`Q($5N9$EF
    M($5L<V4@268@54-A<V4H4W5B4W1R*"1#;V1E+"`Q+"`U*2D@/2`B0T%312`B
    M("1096YD:6YG26YD96YT(#T@,2!)9B`D0V%S95!R978@)$EN9&5N=$YB<B`]
    M("1);F1E;G1.8G(@+2`Q($5L<V4@)$-A<V50<F5V(#T@)%1R=64@16YD268@
    M16QS92!)9B!50V%S92A3=6)3='(H)$-O9&4L(#$L(#8I*2`](")53E1)3"`B
    M("1);F1E;G1.8G(@/2`D26YD96YT3F)R("T@,2!%;'-E($EF(%5#87-E*%-U
    M8E-T<B@D0V]D92P@,2P@-BDI(#T@(E=(24Q%("(@)%!E;F1I;F=);F1E;G0@
    M/2`Q($5N9$EF($5N9$EF($5N9$EF($5N9$EF($5N9$EF($EF("1);F1E;G1.
    M8G(@/"`P("1%<G)O<G-&;W5N9"`]("14<G5E("1%<G(@/2!7<FET94QI;F4H
    M,RPB17)R;W(L(&YE9V%T:79E(&EN9&5N="!I;B!L:6YE("(@*R`D3&EN94YU
    M;2`K("(@268L($1O+"!396QE8W0@;W(@5VAI;&4@<W1A=&5M96YT(&UI<W-I
    M;F<@<')E=FEO=7,@:6X@<V-R:7!T(B`K("1#4DQ&*2`D26YD96YT3F)R(#T@
    M,"!%;F1)9B!)9B`D0V]D92`\/B`B(B`D:2`](#`@)$9R;VYT(#T@(B(@5VAI
    M;&4@)&D@/"`D26YD96YT3F)R("1&<F]N="`]("1&<F]N="`K("1);F1E;G0@
    M)&D@/2`D:2`K(#$@3&]O<"`D3&EN92`]("1&<F]N="`K("1#;V1E($5L<V4@
    M)$QI;F4@/2`B(B!%;F1)9B!)9B`H)%)E;6%R:R`\/B`B(BD@06YD("1+965P
    M4F5M87)K<R!)9B`D3&EN92`\/B`B(B`D3&EN92`]("1,:6YE("L@)$9R;VYT
    M4F5M($5N9$EF("1,:6YE(#T@)$QI;F4@*R`D4F5M87)K($5N9$EF($EF("1,
    M:6YE(#P^("(B("1,:6YE(#T@)$QI;F4@*R`D0U),1B!%;'-E($EF("1+965P
    M16UP='E,:6YE<R!!;F0@)$QI;F5%;7!T>2`D3&EN92`]("1#4DQ&($5N9$EF
    M($5N9$EF("1%<G(@/2!7<FET94QI;F4H,BP@(B1,:6YE(BD@)$EN9&5N=$YB
    M<B`]("1);F1E;G1.8G(@*R`D4&5N9&EN9TEN9&5N="!2971U<FX@#0H@(#I'
    M9710;W-296T-"B1497-T4F5M(#T@26Y3='(H)%1M<$QI;F4L("([(BD@268@
    M)%1E<W1296T@/B`P("14<W13='(Q(#T@26Y3='(H)%1M<$QI;F4L("13=')3
    M97`Q*2!)9B`D5'-T4W1R,2`](#`@)%1S=%-T<C$@/2`Q,#`P,#`@16YD268@
    M)%1S=%-T<C(@/2!);E-T<B@D5&UP3&EN92P@)%-T<E-E<#(I($EF("14<W13
    M='(R(#T@,"`D5'-T4W1R,B`](#$P,#`P,"!%;F1)9B!)9B`D5'-T4W1R,2`\
    M("14<W13='(R("13=')397`@/2`D4W1R4V5P,2`D4W1A<G13='(@/2`D5'-T
    M4W1R,2!%;'-E("13=')397`@/2`D4W1R4V5P,B`D4W1A<G13='(@/2`D5'-T
    M4W1R,B!%;F1)9B!)9B`D4W1A<G13='(@/2`Q,#`P,#`@)%-T87)T4W1R(#T@
    M,"!%;F1)9B!)9B`D4W1A<G13='(@/"`D5&5S=%)E;2!!;F0@)%-T87)T4W1R
    M(#X@,"`D4&]S4F5M(#T@)%!O<U)E;2`K("13=&%R=%-T<B`D5&UP3&EN92`]
    M(%-U8E-T<B@D5&UP3&EN92P@)%-T87)T4W1R("L@,2P@3&5N*"14;7!,:6YE
    M*2`M("13=&%R=%-T<BD@)%1E<W1296T@/2!);E-T<B@D5&UP3&EN92P@(CLB
    M*2`D5&5S=$5N9"`]($EN4W1R*"14;7!,:6YE+"`D4W1R4V5P*2!)9B`D5&5S
    M=$5N9"`^(#`@268@)%1E<W1%;F0@/B`D5&5S=%)E;2`D4&]S4F5M(#T@)%!O
    M<U)E;2`K("1497-T16YD("14;7!,:6YE(#T@4W5B4W1R*"14;7!,:6YE+"`D
    M5&5S=$5N9"`K(#$L($QE;B@D5&UP3&EN92D@+2`D5&5S=$5N9"D@1V]3=6(@
    M1V5T4&]S4F5M($5L<V4@)%!O<U)E;2`]("10;W-296T@*R`D5&5S=%)E;2!%
    M;F1)9B!%;'-E("1%<G)O<G-&;W5N9"`]("14<G5E("1%<G(@/2!7<FET94QI
    M;F4H,RPB36ES;6%T8VAI;F<@<W1R:6YG9&5L:6UI=&]R<R!I;B!L:6YE("(@
    M*R`D3&EN94YU;2`K("1#4DQ&*2`D4&]S4F5M(#T@,"`D5&UP3&EN92`]("(B
    M($5N9$EF($5L<V4@)%!O<U)E;2`]("10;W-296T@*R!);E-T<B@D5&UP3&EN
    M92P@(CLB*2!%;F1I9B!%;'-E("10;W-296T@/2`P($5N9$EF(%)E='5R;B`-
    M"B`@.E1E<W13=')I;F=S#0HD5'-T4W1R,2`]($EN4W1R*"14;7!,:6YE+"`D
    M4W1R4V5P,2D@268@)%1S=%-T<C$@/2`P("14<W13='(Q(#T@,3`P,#`P($5N
    M9$EF("14<W13='(R(#T@26Y3='(H)%1M<$QI;F4L("13=')397`R*2!)9B`D
    M5'-T4W1R,B`](#`@)%1S=%-T<C(@/2`Q,#`P,#`@16YD268@268@)%1S=%-T
    M<C$@/"`D5'-T4W1R,B`D4W1R4V5P(#T@)%-T<E-E<#$@)%-T87)T4W1R(#T@
    M)%1S=%-T<C$@16QS92`D4W1R4V5P(#T@)%-T<E-E<#(@)%-T87)T4W1R(#T@
    M)%1S=%-T<C(@16YD268@268@)%-T87)T4W1R(#T@,3`P,#`P("13=&%R=%-T
    M<B`](#`@16YD268@268@)%-T87)T4W1R(#X@,"`D5&UP3&EN92`](%-U8E-T
    M<B@D5&UP3&EN92P@)%-T87)T4W1R("L@,2P@3&5N*"14;7!,:6YE*2`M("13
    M=&%R=%-T<BD@)%1E<W1%;F0@/2!);E-T<B@D5&UP3&EN92P@)%-T<E-E<"D@
    M268@)%1E<W1%;F0@/B`P("14;7!,:6YE(#T@4W5B4W1R*"14;7!,:6YE+"`D
    M5&5S=$5N9"`K(#$L($QE;B@D5&UP3&EN92D@+2`D5&5S=$5N9"D@1V]3=6(@
    M5&5S=%-T<FEN9W,@16QS92`D17)R;W)S1F]U;F0@/2`D5')U92`D17)R(#T@
    M5W)I=&5,:6YE*#,L(DUI<VUA=&-H:6YG('-T<FEN9V1E;&EM:71O<G,@:6X@
    M;&EN92`B("L@)$QI;F5.=6T@*R`D0U),1BD@)%1M<$QI;F4@/2`B(B!%;F1)
    M9B!%;F1)9B!2971U<FX@#0H@(#I3=&%T=7,-"B1S(#T@)',@*R`Q(%-E;&5C
    M="!#87-E("1S(#T@,2`D0V@@/2`B?"(@0V%S92`D<R`](#(@)$-H(#T@(B\B
    M($-A<V4@)',@/2`S("1#:"`]("(M(B!#87-E(#$@)$-H(#T@(EPB("1S(#T@
    C,"!%;F1396QE8W0@070H,3<L,S`I("1#:"!2971U<FX@#0H`
    end: completed.
    end: crc16=21160
    end: check=???? ????

  • formatting/checking/stripping/label handling of script + compression + encryption
    remark: an additional information header has been added for recognition.
    benchmark: 3.09 sec (10321 bytes)

    code:

    begin (c) CODEC 1.30e (2000186 tue 04-jul-2000 04:14:53.00)
    ;
    ; (c) The software product is protected by copyright laws and
    ; international copyright treaties, as well as other in-
    ; tellectual property laws and treaties.
    ; The SOFTWARE PRODUCT is licensed, not sold.
    ;
    ; If you want to use the software for any (new) purpose
    ; you needs a license agreement, which can only be deli-
    ; vered by creator and owner of this software.
    ;
    begin. size=6965
    򈐾䉐특䝷Δˀė°<
    Ҷߊٛ豣佄ӯ<
    䖡Ϯȉѥ̦ߑ<
    إΌ˒մʄʸܚӉðҐп<
    ؁΀㱃Ѿè檫ћ܉¯ّڐʵų<
    ͌˝ϓѶ嶸⢩үՆ挻҈<
    ПЉ抂◘͂쨝ι᭑ֶ˃ᤇӯއ<
    ʔӶ霁¥脹̷юֽۛշȠ¤<
    㮾୊ȝ틒҉<
    成רԾ巌韥ݎݧеͮ쥄<
    Ā˵˾򗔟䌺ٻ܉饭ڡɑ럦׍<
    䁫εȍǠĚʃő༘<
    òڎڵ礰ήњ׋րᢰɜ񸦂׺<
    ˩ǃڃ֣ͥӺ݃ѝαՐ⦯ލij<
    ݫЋͷޭӿҺϰӡ侯љ<
    ŏꑊ㉱߼πѠʭߨŋ<
    ӵæNjՎ륤ܮ¤<
    ޸ٙ퀌Δχѓ<
    萣ըˢ䰀靰ʫ󈱦Ἐؚ瞽֠ѩ쥄<
    ¿𭷝ɳݍıɵ<
    ېܨ깼̡ȀƑى<
    萞ņ̐؍šک螑њ²̼Ú뜈<
    ؊×೓ªڬ۽޲ԄّƳ<
    ܍ºѤǧߍ舼覩ĸ퇰ʩ<
    ՟˧◝ؒ쨓ϹŮӿϠ<
    ײæ̻ȅǞϭ¤<
    Ϊɒ€ȇ瓧Ԓѹ<
    ƼІ̙ζˇʚ֞Ȣ<
    ˾Ljگڹٞчմ܄ˉצ<
    ͯ쪬寗ՠέφۂ¿<
    ѣނؒӹӥܿ߷ҏİŹӐ<
    ӸہՊèÂэ𫿲ԅ檡ճ<
    ک°̈́Ҳچܕ듢춸ɝ<
    Øѳ셊㳇ϯɡɩψǞʠК<
    ȍ쭍׵縷ߠߞن񗠔掝Ҹى¤<
    ⶺ䃙୊ȁ퀌뒥덏<
    ͟帠䷞ۄ됊ޒ漐ܚėРͽ<
    ֙﯂޼܌맺򡰗܄˸<
    ϑ鰋ءڳ񘤒̩͘ਜ츶<
    ܣũر□庿ĎıȞ҂ӆ<
    ϼГַĤܵߕӀ؆ij<
    襶ԏ׼אƧڊ蕨գ݋Ʃœ<
    εϵ雚§ᆻȀǛ߻҃<
    הǧĦܡƟ萎ϋδ쪣¤<
    ڸ懩ȑۤ܊Ԅӗ<
    ևϐӅ຅ϋ駎׀ؚЇȿ̨<
    ꏁ˪懈ᑮȞʋն䬕Ҡ<
    誅ް٦ōѧȑ轥؛͐ԉ<
    śێ⣰۽њ鵓ҡ͇놩φ月<
    Ω½Ӻ볣ˣڡޅճ<
    ʳرƽƞѶ׈ҸҴيЪ̙<
    Ӊ㉽ռľ҇Ջ<
    ӥ⍠¦ߵՌ얖ɩ᧾¤<
    ިꟘٓ͘銓ǟ<
    萣Ũ庣ͦˑž٦Оנɼ<
    Ⱦޣࠪݮڱ喙뱯ѯ<
    àﶤϳ➤艨őМ<
    ۿ蛥ϯ̡㗷Ѽ漮׫윈<
    μֆڦ剛λĴۻўϑ҇׳<
    ڱѰ֑˝״ѐȰĎô<
    ɡήՉֳہ쨕÷˃憹փ<
    稶߷Ǟ׎葎篆җͩLJ¤<
    ʳ畸ɒ퓯ϧ㏄ȇ؞<
    Խ܅܄ω̙ȹӐIJԛһȩ쥄<
    ڢ躯ݮ٘覣մɘض<
    ʖߡϨ˸֥Ŝڀ<
    إĎدҵ˒Ѕڿٚ낰ƀҲٟφں<
    ý۵ӡޤìő⦿嶔Ɇµdz<
    襶ЋզףÝ߂₹׸홛ӯϰ޻ə<
    ٢ΥՍ○֗츇ĈΈϰ<
    Ǽ˿nj򊶋毆ݙ¤<
    ʶə芮÷ӊ‥<
    Խ䉐蹩Ȏ坿漓Շ瞩נ<
    Қǔ񺯑ԻϝՓճⱠؐύش<
    刣⺤̡ٙďّ<
    ȵĆհŰۿ¡ӆ֩٘ߖͧᜈ<
    ϼ潠ٵꮮٙƳ<
    ׷ڥ™Øޭߑÿд؍׵ы<
    ʵˇ翧ܒݮ䷒ޛ<
    ֐切§ԷĶ뾡앨Վꃤ¤ըħ¤<
    ڰ쓙։ۙƜч뎏<
    ЗӁ̉𞩪筛ّޓ瞥נӹ<
    Ā׻ϭʴɉѷďɔߝ̬<
    ۠Ϥֲ勬˚̐븶<
    ߂़ޮ䞰ʻ܎Ӂ֪ٛ˗<
    μ½ֺޤтشݠŃ̒럻чճ<
    خ۱ˍҶ؂⦜႙ƬӶ₯<
    ㉱߼ߘԷɩوӯ͊Ԁ<
    ӠNjѭ¤<
    ڻ͏șٟؒÎ<
    ƈڢ؀׉ٙ칆ㄿ؟Иĭº<
    ˭ޮ݉І܄񶞝٢<
    ޖۡѬѧ̒ɨڇ︶<
    ǀ͹ӥ†Ǐ߁𳂢<
    ܍竰Ӳʨ׻ۿڡԕճ<
    آ޸۵ԶلÙΓ綌øȠЕҨ񅮫╤<
    ƫӽˇ۶ҡɱޔσÖ쒯<
    ьַĦכ򉕧ՎǴƨΧ¤<
    ډȁˈڃσ矃<
    ݗ탦͟م欆ՙ䌨᭐ɒ٤őحРր륄<
    ̄ۘϪ񺯘ߩɜٷ鴨Ճِ뤞ɵ<
    †밋ޡ촰ֵ̩dž˃踶<
    Цߖ۬ᇡɠгϜ՚<
    籦ػ 겯בρ߃Ƴ<
    ۈµ쳴ɒԜŨДӯ鮫<
    İǟϥ˗ೇŲ̔湌ޛ<
    ĕŧ퍠¦ʼŽńҤʮǩȠҗ¤<
    ڻཏɺ񙀯цѓ<
    尔̉䎢Ȏ󇻂ؚð<
    ψ޳ɳޭ͆臘ɤ񵼄ˋĨ<
    ܤԸŶ轥Ɇ؏奉<
    ėʩݩӉŹ҂ʓί䜈<
    ׃ͱӱ޴ڿ‘͓ڍճ<
    کɵƙބҶφ舼гށôф<
    굉鋳ռѠǰۑʨ<
    çIJ޺ގĊ£ߙ좧¤<
    ڰ痠鿉͏ȍ΄΃ԇ򗀸Ѽ<
    ׼˛ρ«㡚݀ÛͲ—ѵѮ<
    ō޼͊Ș襻ڡŋﴪ۵<
    ن⳪͝츶<
    Ġ؂͇۬Ŵ۹ߧǥɜˆᜈ<
    ־ߥĖϑɳ<
    ʫȞҡͥ˅߀̳ѺºДӯ鮫<
    ђΰ蔧츓赹߇ӿ<
    ִƽ۲ƞ翇Ŏ費¤<
    ϯ銌܄؄æꟓԅ挷󄢖ѹ<
    ɝٕ׉̙ˢ羌՚ԙҽÀ<
    ˑޏϢ齺ي獶Ë몞Ǩ<
    刣⺤ؚܴ<
    Ƃɨӵʮ͊곇ҀİȜ떩<
    ƬˀݳޱλӨܠѝ绀ח̳<
    Τ˝ϓȷɡ޺Ձè徯<
    𭾳דռ躤ͯϿ֛ċ<
    ƉӶƻ۲ѝԗģ¤<
    ʱ㓀ڟӓ璧<
    胱欆̉ÀϢ缛᜽ǰ<
    Ӛ𾭆ꅼۼ츢ӭԄ<
    㮖ءˠƵ܁<
    ţݐɇکܫĹ뗲ð̉ؿ윈<
    ʻӀ՚ӱ־»ܴ֩đחȳ<
    ޡɷߘ·԰ɠªŕ냢Ҩ֙<
    П憐˶郯ة਩᩵׹“͞<
    ЌDzâ۲ƞ悃櫋¤<
    ٕ파֑܊<
    ȕՙ̢ـԙدҽà<
    ק镖ǮŃӊ۸<
    刣⺤ܴ在̔ĉ<
    Ƃɨӵʮ͊곇ҀİȜ떩<
    ˒کĨ˰ܑɃ˃ސȳ<
    ֺѷôƌԲкȠ퇼Đ<
    űΧ鋳ؖͱߘ͹ӯꤋ<
    ǔħǧߡΠ㷵ę·¤<
    ߮ଡ଼ұԊ쐩<
    򉐰ɱཁۈϕ缃ጲ—Ţͯ쥄<
    ꕗྯ⎕˫܄眵շԄ<
    end: completed.
    end: crc16=21160
    end: check=

    Greetings.

    _________________________
    email scripting@wanadoo.nl homepage scripting@wanadoo.nl | Links | Summary of Site Site KiXforms FAQ kixtart.org library collection mirror MCA | FAQ & UDF help file UDF kixtart.org library collection mirror MCA | mirror USA | mirror europe UDF scriptlogic library collection UDFs | mirror MCA

  • Top
    #50371 - 2003-10-17 11:49 PM Re: Compiler / formatter for Kix-scripts
    MCA Offline
    KiX Supporter
    *****

    Registered: 2000-04-28
    Posts: 5152
    Loc: Netherlands, EU
    Dear,

    For a more recent version see F13-0048 Making use of KiXGUI, easy cut'n paste code.

    It is calling now TransGUI.kix
    greetings.
    _________________________
    email scripting@wanadoo.nl homepage scripting@wanadoo.nl | Links | Summary of Site Site KiXforms FAQ kixtart.org library collection mirror MCA | FAQ & UDF help file UDF kixtart.org library collection mirror MCA | mirror USA | mirror europe UDF scriptlogic library collection UDFs | mirror MCA

    Top
    #50372 - 2003-10-18 12:23 AM Re: Compiler / formatter for Kix-scripts
    Lonkero Administrator Offline
    KiX Master Guru
    *****

    Registered: 2001-06-05
    Posts: 22346
    Loc: OK


    MCA, you did again.
    last reply from year 2000 and you couldn't just do a topic that linked to this but you needed to dredge this one up?
    think we need to really discuss on the pointers here...


    [ 18. October 2003, 00:24: Message edited by: Lonkero ]
    _________________________
    !

    download KiXnet

    Top
    #50373 - 2003-10-18 02:01 AM Re: Compiler / formatter for Kix-scripts
    Sealeopard Offline
    KiX Master
    *****

    Registered: 2001-04-25
    Posts: 11165
    Loc: Boston, MA, USA
    I am very tempted to just close these type of topics if it happens again in the 'Scripts' and 'General' forums. The layout of this thread is just plain inacceptible.

    The alternatively is to just update the first post in the thread and bump it to the top.
    _________________________
    There are two types of vessels, submarines and targets.

    Top
    #50374 - 2003-10-18 02:18 AM Re: Compiler / formatter for Kix-scripts
    Les Offline
    KiX Master
    *****

    Registered: 2001-06-11
    Posts: 12734
    Loc: fortfrances.on.ca
    MCA's behaviour is not acceptable either for dredging up such an old thread or for posting such long lines. This is not the sort of example that a moderator should set! A forum moderator should remove the CODE tags from the long lines post and then close the topic.
    _________________________
    Give a man a fish and he will be back for more. Slap him with a fish and he will go away forever.

    Top
    Page 1 of 1 1


    Moderator:  Glenn Barnas, NTDOC, Arend_, Jochen, Radimus, Allen, ShaneEP, Ruud van Velsen, Mart 
    Hop to:
    Shout Box

    Who's Online
    0 registered and 302 anonymous users online.
    Newest Members
    Sir_Barrington, batdk82, StuTheCoder, M_Moore, BeeEm
    17886 Registered Users

    Generated in 0.061 seconds in which 0.025 seconds were spent on a total of 12 queries. Zlib compression enabled.

    Search the board with:
    superb Board Search
    or try with google:
    Google
    Web kixtart.org