Niakwa, Inc.

    

 


What's News
NPL Products
NPL Support
NPL Downloads
System Integration
swiggle_small.gif (991 bytes)

swiggle_small.gif (991 bytes)

Bug Report #9
for Niakwa Programming Language
Report Date - January 7, 1994

This report lists known problems in the Niakwa Programming Language, Releases III and IV, for all platforms supported, which were discovered after October 1, 1993. This report is in addition to Bug Reports 1 through 8. This report is available on the Niakwa BBS and can be downloaded along with a Bug Report Index.

NOTES: The first part of the Report contains closed or resolved bugs that were listed in previous reports. Bugs that are listed as "Under Review" in previous reports and are not listed in this report are still open.

Bugs are identified in this report by problem number, the internal Niakwa bug code number (shown in parentheses). Corrected bugs have in addition the report number where they were originally published.

Some bugs described in this report are corrected in a revision of the NPL RunTime that is not yet available for the field. Developers should be aware that Revision 3.xx bug correction may never be released to the field, and are published here for informational purposes only. All bug corrections noted in these releases have also been applied to NPL Release IV (either the current version or future releases).

An interim revision of Release IV NPL for MS-DOS based platforms, which corrects some of the bugs listed in this report, is available from Niakwa Technical Support on request. Contact Niakwa for details.

For a current update on corrected bugs, refer to the BBS Bug Index that is updated monthly. The Bug Index can be downloaded or provided upon request.

For the latest product release available, refer to the latest Niakwa Newsletter or the Niakwa BBS

Corrected Problems Listed in Previous Reports

Problem 9 (00565)/Report 8:

The compiler generates an incorrect (non-variable) argument type for string fields, if the field name is specified indirectly using a constant string-variable.

0010 RECORD /PUBLIC X

FIELD Stuff$10

END RECORD

0100 PROCEDURE 'DisplayString(/POINTER String$)

END PROCEDURE

DIM LicenseData$#RECORDLENGTH(X)

PROCEDURE 'PrintField(/POINTER _FieldName$)

'DisplayString(LicenseData$.<_FieldName$>$)

END PROCEDURE

0120 'PrintField($NAMEOF(FIELD .Stuff$))

RUN

0100 :::: 'DisplayString(LicenseData$.<_FieldName$>$)

^

ERR 215: Argument for non-constant /POINTER parameter is not modifiable.

Use a STR( ) function, a #FIELDSTART function and a #FIELDLENGTH function, to avoid the problem.

For example, replace:

'DisplayString(LicenseData$.<_FieldName$>$)

with:

'DisplayString(STR(LicenseData$,#FIELDSTART(<_FieldName$>$), #FIELDLENGTH(<_FieldName$>$)))

Solution: Release 4.00.22 or greater

Programs Affected: RTI, RTP, B2C

Revision Number: 4.00.20.00.I

Platforms: All

Problem 15 (00410)/Report 6:

Under AIX on the IBM RS/6000, attempts to compile from ASCII code to p-code/OBJ format result in the error message "no names found in" when the ASCII (.SRC) file is not in the current directory.

For example:

b2c /usr/BASIC2C/uextrn/include/MYBOOT

entered from the /usr directory generates the above error.

NOTE: If the ASCII file is located in the current directory, the problem does not occur.

Solution: Corrected in 3.20.15.20.U and greater.

Programs Affected: B2C

Revision Number: 3.20.15.07.U and greater

Platforms: IBM RS/6000 or any later "C" port platforms.

New Open Problems

1. Problem: (00604)

When scramble protected modules are used, a LIST PUBLIC [DEFFN/FUNCTION/PROCEDURE] * statement does not display the function prototype of the public functions and DEFFNs. Only the line numbers are displayed.

Solution: Corrected in Revisions 4.00.22 or greater.

Programs Affected: RTI, BESDK

Revision Number: 4.00.20 and greater

Platforms: All

2. Problem: (00603)

CONTINUE RETURN or CONTINUE NEXT halts, after the first executed return from a FUNCTION or PROCEDURE. This also occurs if it is a nested function call (function is called after CONTINUE RETURN or CONTINUE NEXT command).

Solution: Corrected in Revisions 4.00.22 or greater.

Programs Affected: RTI, BESDK

Revision Number: 4.00.20 and greater

Platforms: All

3. Problem: (00602)

External DEFFN's defined in external libraries with either more than or less than 16 parameters can fail if a function with less than 16 parameters is called after calling a function with more than 16 parameters.

Solution: Corrected in Revisions 3.20.15.23 and 4.00.22 or greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 3.20 and greater

Platforms: All

4. Problem: (00601)

Under the 386/DOS-Extender, the workspace allocated by the Release IV RunTime is sometimes 64K larger than the space allocated by Release III. This problem is due to the way the RunTime allocates temporary buffers for compiling immediate mode lines.

Solution: Corrected in Revisions 4.00.22 or greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20.00.P

Platforms: 386/DOS-Extender

5. Problem: (00600)

If a program that contains DATA or ERROR statements is SAVEd while resolved, the output is not identical to the output produced by the B2C compiler. The difference does not affect loading, running or display of programs, but it may show up in direct comparisons of the programs' files.

Solution: Corrected in Revisions 4.00.22 or greater.

Programs Affected: RTI, RTP

Revision Number: 4.00.20 and greater

Platforms: All

6. Problem: (00587)

Under the 386/DOS-Extender, the RunTime may hang on the first memory reorganization, if at start up, the value used to specify the device equivalence table entries (i.e. /Dx) is larger than 16, and is a value for which mod(x,8)=5. For example, values like: 21, 29, 37, 45, 53, 61, etc. may cause the system to hang if used as a /D value and then a CLEAR command is used.

Workaround: Avoid use of the above values for /D option.

Solution: Corrected in Revisions 4.00.22 or greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20 and greater

Platforms: 386/DOS-Extender

7. Problem: (00585)

When using $OBJECT to compile source lines in Release III, compatible format (no second argument for LIN table used), syntax errors may be returned when a STR() function or a numeric expression starting with a built-in function word is encountered in $PACK or DATA SAVE statements. This occurs if the STR() function or any other built-in function word is encountered in a position where a numeric array name would also be allowed.

Workaround: Use atomized keyword values instead of the keyword. For example, use the atomized value HEX(D3) instead of "STR(". For a complete list of atomized codes, refer to Appendix E of the NPL Release IV Programmer's Guide.

Example:

200 A$="3511 $PACK (F=N1$) K$ FROM STR(A0$(Q),2,71), POS(K$=I$)"

change to:

200 S$=HEX(D3) :; replacement for STR( keyword

: P$=HEX(DF) :; replacement for POS( keyword

: A$="3511 $PACK (F=N1$) K$ FROM " & S$ & "A0$(Q),2,71), " & P$ & "K$=I$)"

Solution: Corrected in Revisions 4.00.22 or greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20 and greater

Platforms: DOS/Novell, MS-Windows, 386/DOS-Extender

8. Problem: (00584)

A01 - Memory Overflow errors may occur even when there is a large amount of free memory in the workspace. These errors may occur when DEFFN' values over 255 are used.

These errors occur because the entries allocated for DEFFN' values above 255 in the handle table are not correctly released when programs are deresolved (by CLEAR P or before program overlay). As a result the handle table can progressively fill with unusable entries and grow larger than needed, eventually reaching the maximum size of the table. When the table is full, any request for new memory may fail. These memory requests would occur when loading a program or declaring variables.

The maximum size of the handle table used during a RunTime session can be monitored in byte 21 of $MACHINE (in units of 1024 byte entries). The /H option can be used to increase the number of entries in the Handle Table and help defer the problem.

Workaround: There are a couple of interim solutions:

1. Use the FUNCTION and PROCEDURE interface to replace DEFFN's.

2. Use the largest possible handle table (/H16 for DOS and MS-WINDOWS NPL, /H64 for 386/DOS-Extender).

3. Locate DEFFN' with numbers greater than 255 in library modules, to avoid repeated resolution/deresolution. This way the problem will be deferred, but it may still occur eventually.

4. Periodically exit and re-start the RunTime.

5. Use NPL Revision 3.20.

Solution: Corrected in Revision 4.00.22 or greater. A revision of NPL that corrects this problem is available on request from Niakwa Technical Support.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20 and greater

Platforms: All

9. Problem: (00583)

Attempts to use a single-user Release IV DOS RunTime from a local workstation attached to a network with a Revision 3.20 Novell RunTime installed and with the security on the network passed by the Supervisor (thus, the ONCE-A-DAY feature is enabled) fails with "user limit exceeded" error message.

Solution: Corrected in 4.00.27 or greater

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20 and greater

Platforms: DOS/Novell, Windows, 386/DOS-Extender

10. Problem: (000582)

If the only Release IV features in a program are LIST V or TRACE V statements that contain Long Identifier Names (LINs), the program is not saved correctly. Attempts to LOAD or LIST the damaged program may result in Error 242 - "Internal Error", or may cause the system to hang if the program is RUN.

Example:

:0010 ;EXAMPLE

: TRACE V MYNAME$

: SAVE BOOT "EXAMPLE"

: CLEARP

: LOAD BOOT

: LIST

/ IMM LIST

^

ERR 242: Internal Error.

Solution: Corrected in Revisions 4.00.22 or greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20 and greater

Platforms: All

11. Problem: (00581)

A memory fault can occur if a program is halted in a library module, and a LOAD RUN statement is executed. This error occurs if the program executes a LIST or TRACE V statement before halting.

Solution: Corrected in Revisions 4.00.22 or greater.

Programs Affected: RTI, BESDK

Revision Number: 4.00.20 and greater

Platforms: DOS/Novell, MS-Windows, 386/DOS-Extender

12. Problem: (00579)

If the NPL_SECURITY environment variable is set to a lower-case drive letter, it is ignored and the alternate drive search is used to find the fingerprint.

Solution: Corrected in Revisions 4.00.23 or greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20 and greater

Platforms: DOS/Novell, MS-Windows, 386/DOS-Extender

13. Problem: (000578)

Passing NPL security as Supervisor using the DOS/Novell RunTime does not enable the network-wide ONCE-A-DAY check for 386/DOS Extender or MS-Windows RunTimes. The reverse is also true: passing the security as Supervisor using the 386/DOS-Extender or MS-Windows RunTime does not enable the network-wide ONCE-A-DAY check for DOS/Novell RunTime.

Solution: Corrected in Revisions 4.00.23 and 3.21.14 or greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 3.20.02 and 4.00.20 and greater

Platforms: DOS/Novell, MS-Windows, 386/DOS-Extender

14. Problem: (00577)

When using Novell's VLM drivers under Novell NetWare 3.11 or 4.0, the RunTime may behave erratically because it does not detect that the workstation is connected to the network at RunTime startup.

Solution: Not a Niakwa problem. Corrected by upgrade to the VLM drivers (version 1.1). These drivers work with Novell 4.01 and 3.1x installations. For details, refer to Technical Note 63 available on the Niakwa BBS.

Programs Affected: RTI, RTP, BESDK

Revision Number: 3.20.02 and 4.00.20 and greater

Platforms: DOS/Novell, MS-Windows, 386/DOS-Extender

15. Problem: (00700)

When using Novell's VLM drivers under Novell NetWare 3.11 or 4.0, the Windows RunTime does not recognize the installed fingerprint.

Solution: Corrected by new versions of NIAKSECx.COM and NIAKMOV.COM files dated 10/25/93. These files are available on NIAKWA BBS or upon request. For details, refer to Technical Note 66 available on the Niakwa BBS.

Programs Affected: RTI, RTP, BESDK

Revision Number: 3.20.02 and 4.00.20 and greater

Platforms: MS-Windows

16. Problem: (00613)

Under MS-Windows, the BrightBackground parameter of the RTIWIN.INI file does not work. This parameter is used to specify whether background colors should use the bright attribute.

Solution: Corrected in Revisions 4.00.25 or greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20 and greater

Platforms: MS-Windows

17. Problem: (00612)

If an END SWITCH statement does not follow a CASE statement, the RunTime displays an /IMM error (immediate mode error) with an Error 235 - "Switch not matched with CASE/END SWITCH", instead of displaying the program line that contains the CASE statement.

Solution: Corrected in Revisions 4.00.25.

Programs Affected: RTI, BESDK

Revision Number: 4.00.20 and greater

Platforms: All

18. Problem: (00611)

Under protected mode operating systems (MS-Windows, SuperDOS,386/DOS-Extender, etc.), the CONVERT statement may generate Memory Fault errors if preceded by any operation that causes a previously used selector to become invalid.

Example: (under Windows)

Module 1:

10 ;MODULE1

20 DIM A$65000, B$65000, C$65000, D$65000, X=1234

:; D$ address is in 4th allocated segment of 64K

: $PACK(F=HEX(1010))D$ FROM X

30 LOAD T "MODULE2"

Module 2:

10 ; MODULE2

; After the overlay the D$ address is no longer used

20 DIM X$="5678"

: $SHELL "rem"

: ; force memory compaction under Windows

: SELECT P6

30 FOR X=1 TO 10

: PRINT HEX(0D);

: NEXT X

40 SELECT P

: CONVERT X$ TO X

: ; any convert statement will fault.

Workaround: Any of the following statements may be added before the CONVERT statement:

$PACK/$UNPACK, DATA LOAD DA/DC, DATA SAVE DA/DC, PACK/UNPACK

Solution: Corrected in Revisions 4.00.25 and 3.21.13 or greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 3.20.02 and 4.00.20 and greater

Platforms: MS-Windows, 386/DOS-Extender, SuperDOS, Intel UNIX

19. Problem: (00610)

After a program containing a SELECT PRINT statement directed to a device other than the screen (005) is executed, evaluation of a function in immediate mode causes the output values to go to the SELECT PRINT address rather than to the screen.

Example :

10 FUNCTION 'myfunction$

: RETURN ("hello")

: END FUNCTION

20 SELECT PRINT 215

: run

: PRINT "here on the screen"; 'myfunction

here on the screen

NOTE : The "hello" will be printed onto device 215, instead of to the screen.

Solution: Corrected in Revisions 4.00.25 or greater.

Programs Affected: RTI, BESDK

Revision Number: 4.00.20 and greater

Platforms: All

20. Problem: (00609)

Forced exits (RETURN ERROR(251)) due to program modification or a $END while in a callback from an external library can cause memory faults or errors. The problem occurs if other function or procedure calls are pending since the callback routine was entered.

Solution: Corrected in Revisions 4.00.25 or greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20 and greater

Platforms: DOS/Novell, MS-Windows, 386/DOS-Extender

21. Problem: (00608)

Compiling from the 2200 atomized code format with -LSTFORMAT .SRC or .LST produces output files with corrupted program line numbers.

Solution: Corrected in Revision 3.21.14 or greater.

Programs Affected: b2c

Revision Number: 3.20.13 and greater

Platforms: Intel UNIX, RS/6000 and later "C" port platforms

22. Problem: (00607)

The statement SELECT #x Dxx used without a slash ("/") may generate errors.

Example:

SELECT #1 D10 ; may generate syntax error even it is a legal statement,

SELECT #1/D10 ; equivalent statement but no error is generated.

Workaround: Use of the "/" version of the syntax of the command.

Solution: Corrected in Revisions 4.00.24 and 3.21.13 or greater.

Programs Affected: RTI, RTP, BESDK, b2c

Revision Number: 3.20.02 and 4.00.20 and greater

Platforms: 386/DOS-Extender, Intel UNIX, RS/6000 and later "C" port platforms.

23. Problem: (00606)

If memory is extremely low (SPACEF < 32 bytes) a RUN command may cause the system to hang or generate bizarre behavior.

Solution: Corrected in Revisions 4.00.24 or greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20 and greater

Platforms: DOS/Novell, MS-Windows, 386/DOS-Extender

24. Problem: (00605)

When error messages are generated for unresolved FUNCTION/FORWARD, PROCEDURE/FORWARD declarations with no parameters and unresolved DEFFN' /FORWARD declarations, the statement following the declaration where the error occurred is highlighted.

Solution: Corrected in Revisions 4.00.24 or greater.

Programs Affected: RTI, BESDK

Revision Number: 4.00.20 and greater

Platforms: DOS/Novell, MS-Windows, 386/DOS-Extender

25. Problem: (00592)

A large value for the numeric variable used in the ON <val> GOTO statement causes Abnormal Protection termination for the RunTime.

Example:

10 Q=1326094.585172

20 ON Q GOTO 30,40

: PRINT "ERROR"

: GOTO 50

30 PRINT "LINE 30"

: GOTO 50

40 PRINT "LINE 40"

: GOTO 50

50 STOP

Solution: Corrected in Revisions 4.00.25 or greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 3.20.13 and 4.00.20. and greater

Platforms: 386/DOS-Extender, Intel UNIX

26. Problem: (00590)

Attempts to load a program containing Long Identifier Names from a "raw" diskette will generate a D88 error - "Wrong Error Type".

Solution: Corrected in Revisions 4.00.24 or greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20. and greater

Platforms: 386/DOS-Extender, Intel UNIX

27. Problem: (00589)

A LISTDIM * statement of an array variable does not list all the elements and some of the last elements containing blanks show corrupted information instead. The missing elements do contain the correct information and can be displayed by a direct PRINT statement.

Solution: Corrected in Revisions 3.21.10.07.U.

Programs Affected: RTI, BESDK

Revision Number: 3.20.15.11.U and greater

Platforms: RS/6000 and later "C" port platforms

28. Problem: (00586)

Under MS-Windows and 386/DOS-Extender, attempts to execute programs with no Release IV features using a 3.20 Revision RunTime that passed security from a 4.0 installation result in D88 - Wrong Record Type error.

Workaround: The 3.20 RunTime can pass security from the original 3.20 installation. The 3.20 fingerprint should be installed in a different directory from the 4.0. By setting the NIAKWA_RUNTIME environment variable to point to the appropriate directory, each of the RunTimes (3.2 and 4.0) will pass security from its own fingerprint.

Solution: Corrected in Revisions 3.21.07 and greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 3.20.15.00.P and greater

Platforms: MS-Windows, 386/DOS-Extender

29. Problem: (00703)

The END statement does not close files as documented in the Release IV Statements Guide, page 2-477.

Example:

10 $DEVICE(/D33)="f:\BASIC2C\UTILITY.BS2"

20 $OPEN/D33

30 LISTDT : KEYIN V$

40 END

Line 30 will show device /D33 open. After the END statement, a LISTDT will still show the device opened.

Solution: Corrected in Revisions 4.00.28 and greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 3.00 and greater.

Platforms: All

30. Problem: (00620)

A LOAD statement executed when the RUN module has an /EXIT procedure may fail to delete the indicated (or default) program line range, or may generate a protection fault on protected mode operation systems.

Solution: Corrected in Revisions 4.00.28 and greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20.00 and greater.

Platforms: 386/DOS-Extender, SuperDOS, Intel UNIX

31. Problem: (00619)

If a GOTO or GOSUB statement-label references a label that does not exist, the error diagnostic line highlights the following statement on the line.

Solution: Corrected in Revisions 4.00.28 and greater.

Programs Affected: RTI, BESDK

Revision Number: 4.00.20.00 and greater.

Platforms: All

32. Problem: (00618)

Under the RS/6000, attempts to switch to background partition, ($RELEASE TERMINAL TO <part#>) hang the terminal under the C (csh) shell or Korn shell (ksh). The problem does not occur under the Bourne shell (sh). In newer version of the AIX operating system, this problem occurs because the C and Korn shells prevent access to the terminal by all processes except the one that is in the foreground.

Workaround: The problem is always avoided if the Bourne shell is used. This shell is invoked if the command "sh" is issued after login. The login shell script associated with the user's login ID can be updated to issue the command "/bin/sh".

Solution: Corrected in 3.21.10.09.U and greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 3.20.15.11.U and above.

Platforms: AIX and later C port platforms

33. Problem: (00617)

If Long Identifiers Names (LINs) are used in the input range of a LIST STACK DIM statement, the input range does not work properly, causing no variables to be displayed.

Solution: Corrected in 4.00.26 and greater.

Programs Affected: RTI, BESDK

Revision Number: 4.00.20.00 and above.

Platforms: All

34. Problem: (00616)

IF FOR/NEXT loops are pending when a RETURN (x) or RETURN ERROR (x) exits from a FUNCTION or PROCEDURE, and there are no pending GOSUB's, the total available FOR/NEXT limit is decreased. Repeated use of such a function can result in the inability to use FOR/NEXT at all.

Example:

10 FUNCTION 'ShowBug

: DIM T

: FOR T=1 TO 20

: IF T=10 THEN RETURN (T)

: NEXT T

: END FUNCTION

20 DIM Q,R

: FOR Q=1 TO 100

: R='ShowBug

: ; each call decreases available FOR/NEXT limit by 1

: NEXT Q

Solution: Corrected in 4.00.26.00. and greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20.00 and above.

Platforms: All

35. Problem: (00615)

The return value of a string FUNCTION is sometimes treated as a modifiable variable. It should be treated as a constant variable. An error should be issued if the return value is used as an argument to functions that require a modifiable /POINTER variable.

Example

10 DIM _ConstantVariable$="Literal Should not be Modifiable"

15 FUNCTION 'ShouldBeNonModifiable$(X)

: IF X=1

20 RETURN ("Literal Should not be Modifiable")

25 ELSE

: RETURN (_ConstantVariable$)

: ENDIF

30 END FUNCTION

35 ;

40 PROCEDURE 'Modify(/POINTER A$,B$16)

45 A$=B$

50 END PROCEDURE

60 LIST 20

: PRINT _ConstantVariable$

65 'Modify('ShouldBeNonModifiable$(1),"XXXXX")

70 'Modify('ShouldBeNonModifiable$(2),"YYYYY")

75 LIST 20

: PRINT _ConstantVariable$

NOTE: The first 'Modify procedure call effectively modifies the program literal on line 20, and the second 'Modify procedure changes the value of the _ConstantVariable$.

Solution: Corrected in 4.00.26.00. and greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20.00 and above.

Platforms: All

36. Problem: (00596)

Under MS-Windows, attempts to press function keys using the Functions bar (SF Keys from Option) hang the system when a polling form of KEYIN statement is in use.

Solution: Under Review

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20.00 and above.

Platforms: MS-Windows

37. Problem: (00597)

The following statements :

10 SCRATCHDISKT/D10,LS=10,END=100

10 DATASAVEDCOPENT#1

generate syntax errors. Both require a space before the T under Release IV. Due to LIN support, these statements that were previously valid now generate syntax errors.

Solution: Corrected in 4.00.28.00. and greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20.00 and above.

Platforms: All

38. Problem: (00598)

Error X75 is not recognized as a recoverable error in INPUT statements.

For example:

10 PRINT HEX(03);: INPUT Z: ERROR GOTO 100

20 STOP "LINE 20"

100 STOP "LINE 100"

If a character is entered when the above program is executed, then a X75 is generated but the program does not branch to line 100.

Solution: Corrected in 4.00.28.00. and greater.

Programs Affected: RTI, RTP, BESDK

Revision Number: 4.00.20.00 and above.

Platforms: All

 
blank.gif (841 bytes)


Niakwa, Basic-2C and NPL are trademarks of Niakwa, Inc. All other products mentioned are registered trademarks or trademarks of their respective companies.

Questions or problems regarding this web site should be directed to webmaster@niakwa.com.
Copyright 1996-2010 Niakwa, Inc. All rights reserved.
Last updated: Thursday January 07, 2010.