F-PCBUGS.TXT Known Bugs in F-PC version 3.5 by Tom Zimmer This file contains a list of the bugs that are known to exist in F-PC. In some cases they are not really bugs, but peculiarities that may seem like bugs (did I say feature?). The bugs are not numbered in order because they came from a larger list of bugs that have been fixed, and the fixed bugs have been removed from the list. 7. Status line peculiarity 01/03/89 15:25:22.20 It has been reported that if you try to move a filename into SEQHANDLE, it gets erased after you move it in. What is happening here is that the routine that displays the status line looks at the current contents of SEQHANDLE and the >HNDLE value is -1 indicating a file has been closed, it reads the system directory path into SEQHANDLE and changes the >HNDLE value to -2 prior to displaying the status line. The status line is trying to display either the currently open filename and path, or just the path on the current drive. If in the proccess of moving a filename into SEQHANDLE, you also call HCLOSE to close any file already in SEQHANDLE, then the status routine thinks it needs to re-read the drive path from DOS into SEQHANDLE. Normally you would not encounter this since normally you would then proceed to open or create the file placed in SEQHANDLE prior to returning to the keyboard (which is where STATUS was performed); it is normally only a problem while debugging. To prevent this interference by STATUS, you can type STATOFF just prior to debugging your program. STATON can then be used to re-enable the status line. 10. Assembler buglets. If you are typing in CODE definitions from the keyboard, and you get an assembly error on an instruction, additional instructions typed in will have the same error reported even if they are entered correctly. The error condition will only be reset by a new CODE word being started. If you try to use an IN or OUT instruction in the assembler with an immediate port number greater than $FF hex, the assembler will discard the high byte of the port number and compile the instruction as if nothing was wrong. IN AL, # $115 will assemble as IN AL, # $015 OUT # $110 AL will assemble as OUT # $010 AL The 80x6 family does not support immediate port number IN or OUT instructions greater than $FF, but the assembler SHOULD report the error and does not. 12. Jack Brown rightly points out that the F-PC documentation doesn't specify the machine register usage clearly. Here is an excerpt from the ECFB where George Hawkins explained how F-PC uses the 80x86 registers. F-PC MACHINE RESOURCE USAGE: CS = code seg: used for any code definitions (Must be preserved by code word.); DS = data seg: used for data other than ." strings (NOTE: CS=DS and underlying kernel primitives rely on this correspondence!, also must be preserved by code word.); ES = extra seg: used as the segment location for the current instruction pointer (IP). (Must be preserved by code word.); SS = stack seg: used as the segment location for the current stack pointer (SP). (Must be preserved by code word.); BP = Return Pointer (RP). (Must be preserved by code word.); SP = Stack Pointer (SP). (Must be preserved by code word.); SI = Instruction Pointer (IP). (Must be preserved by code word.); DF = Direction Flag. Assumed to be 0/increment. Some older FF (or before?) words do an initial CLD (e.g., CMOVE), but this shouldn't be necessary. If you specifically need DF=1, then do: STD ...code... CLD; AX, BX, CX, DX, & DI : Have a ball!!