Skip to content

Commit

Permalink
blackbox-1.7.1
Browse files Browse the repository at this point in the history
  • Loading branch information
X547 committed Oct 1, 2022
1 parent bba0c52 commit 665244b
Show file tree
Hide file tree
Showing 108 changed files with 7,551 additions and 2,100 deletions.
361 changes: 361 additions & 0 deletions BlackBox_1.7.1_Changes.txt

Large diffs are not rendered by default.

1,110 changes: 0 additions & 1,110 deletions BlackBox_1.7_Changes.txt

This file was deleted.

2 changes: 1 addition & 1 deletion Comm/Docu/Streams.txt
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ PROCEDURE (l: Listener) Close
NEW, ABSTRACT
Closes the listener, so that no services can't be requested over the network anymore. Close has no effect if the listener was closed already.

PROCEDURE (l: Listener) LocalAdr
PROCEDURE (l: Listener) LocalAdr (): Adr
NEW, ABSTRACT
Returns the name of the local port on which the listener listens.

Expand Down
5 changes: 3 additions & 2 deletions Dev/Docu/Analyzer.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ DevAnalyzer

Overview

Click on any of the blue warnings to jump directly to the corresponding tutorial section. For technical support go to the section on contact information.
DevAnalyzer can be applied just like the normal Component Pascal compiler for checking a program's syntactic and semantic correctness (it even uses the base modules of the Component Pascal compiler). In the examples below you can, for instance, remove a semicolon somewhere and DevAnalyzer will report the resulting syntax error.

Click on any of the underlined blue warning messages to jump directly to the corresponding tutorial section.


Warning message Number Explanation: item is ... Option
Expand All @@ -26,7 +28,6 @@ Click on any of the blue warnings to jump directly to the corresponding tutorial
During the development of a program, many design iterations are made. The source text is changed repeatedly and enhanced, errors are corrected, output statements are inserted and removed again later. The programmer changes procedure bodies and thereby inserts variables that are later not needed anymore. Modules are imported  for temporary purposes  but later never used.

To clean up such modules, which have evolved over time, DevAnalyzer has been developed. It is a "normal" Component Pascal compiler, which does a full syntactic and semantic analysis with error checking of the program at hand, but does not generate a symbol file or object code. Instead, it examines the program and reports problems in the code. The analysis takes place per module. Inter-module dependencies are not taken into account.
DevAnalyzer can be applied just like the normal Component Pascal compiler for checking a program's syntactic and semantic correctness (it even uses the base modules of the Component Pascal compiler). In the examples below you can, for instance, remove a semicolon somewhere and DevAnalyzer will report the resulting syntax error.


Tutorial
Expand Down
5 changes: 3 additions & 2 deletions Dev/Docu/Browser.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,9 @@ opts = "e" creates an output which shows only the items being extensible.
Several options may be combined.

PROCEDURE ImportCodeFile (f: Files.File; OUT s: Stores.Store)
This procedure is installed upon startup of BlackBox as an importer for code files (-> Converters). The importer converts the code file into a textual browser output.
This procedure is installed upon startup of BlackBox as an importer for code files (-> Converters). The importer converts the code file into a textual browser output in the same way as the command ShowCodeFile.

PROCEDURE ShowCodeFile
Guard: TextCmds.SelectionGuard
If a module name is selected, this command shows some information about the code file of the compiled module. If a qualident is selected, only the definition of the corresponding item is shown.
If a module name is selected, this command opens a text view in browser mode that shows information about the code file of the compiled module. This includes the code file's header information and the generated code both in hex form and in the form of symbolic instruction codes. In order to simplify reading of the generated code it is possible to merge the code of a procedure with its source code, if available, by clicking on the link at the beginning of a procedure. In the generated detail view, the source code pieces are links that navigate to the corresponding source code.
Note that absolute addresses in the code are resolved only at load time and are simply displayed as generated by the compiler. The fixup-chains used by the loader for resolving absolute addresses and the meta-information about program entities are (currently) not included in the output.
3 changes: 1 addition & 2 deletions Dev/Docu/Build-Tool.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
DevCompiler.CompileThis
WinApi WinOle WinCtl WinCmc WinOleAut WinOleCtl WinDlg WinOleDlg WinMM WinSql WinRpc WinNet WinGL WinGLAux WinGLUtil Kernel Files HostFiles StdLoader Math SMath Log Strings Dates Meta Dialog Services Fonts Ports Printers Stores Converters Sequencers Models Views Controllers Properties Printing Mechanisms Containers Documents Windows StdCFrames Controls StdInterpreter StdDialog StdApi StdCmds HostRegistry HostFonts HostPorts OleData HostMechanisms HostWindows HostPrinters HostClipboard HostCFrames HostDialog HostCmds HostMenus HostPictures TextModels TextRulers TextSetters TextViews TextControllers TextMappers StdLog TextCmds StdHeaders FormModels FormViews FormControllers FormGen FormCmds StdFolds StdLinks DevCommanders StdTables StdTabViews HostTabFrames StdViewSizer DevMarkers DevDebug DevHeapSpy DevSearch DevSubTool DevAlienTool HostPackedFiles DevPacker DevDependencies DevReferences DevCmds DevInspector HostTextConv HostBitmaps HostMail StdMenuTool StdClocks StdStamps StdDebug StdCoder StdScrollers Out DevCPM DevCPT DevCPS DevCPB DevCPP DevCPE DevCPH DevCPL486 DevCPC486 DevCPV486 DevSelectors DevCompiler DevBrowser DevLinker DevRBrowser OleStorage OleServer OleClient CtlT CtlC OleViews StdETHConv In XYplane Init Config Integers DevTypeLibs DevComInterfaceGen DevComDebug DevProfiler DevLinkChk DevMsgSpy DevAnalyzer CommStreams CommTCP CommV24 SqlDrivers SqlOdbc SqlOdbc3 SqlDB SqlControls SqlBrowser SqlObxDB SqlObxUI SqlObxNets SqlObxViews SqlObxGen SqlObxExt SqlObxInit SqlObxTab ComTools ComEnumRect ComObject ComConnect ComAggregate ComKoala ComKoalaTst ComKoalaExe ComKoalaDll ComEnum ComPhoneBook ComPhoneBookActiveX ComPhoneBookClient XhtmlWriters XhtmlEntitySets XhtmlStdFileWriters XhtmlTextTableMarkers XhtmlExporter CtlStdType CtlOffice CtlVBIDE CtlOfficeBinder CtlMSForms CtlExcel9 CtlWord9 CtlGraph9 CtlPowerPoint9 CtlOutlook9 CtlDAO36 CtlADODB CtlAccess9 ObxActions ObxAddress0 ObxAddress1 ObxAddress2 ObxAscii ObxBitmap ObxBlackBox ObxButtons ObxCalc ObxCaps ObxControls ObxDialog ObxConv ObxCount0 ObxCount1 ObxCtrls ObxCubes ObxDB ObxExcel ObxFact ObxRandom ObxFern ObxFldCtrls ObxGraphs ObxHello0 ObxHello1 ObxLines ObxLinks ObxPhoneDB ObxLookup0 ObxLookup1 ObxMMerge ObxOmosi ObxOpen0 ObxOpen1 ObxOrders ObxParCmd ObxPatterns ObxPDBRep0 ObxPDBRep1 ObxPDBRep2 ObxPDBRep3 ObxPDBRep4 ObxPhoneUI ObxPhoneUI1 ObxRatCalc ObxScroll ObxSample ObxTabs ObxTickers ObxTrap ObxTwins ObxViews0 ObxViews1 ObxViews2 ObxViews3 ObxViews4 ObxViews5 ObxViews6 ObxViews10 ObxViews11 ObxViews12 ObxViews13 ObxViews14 ObxWrappers ObxContIter ObxPi ObxUnitConv ObxLabelLister ObxControlShifter ObxFileTree ObxTabViews ObxWordEdit ObxStores CommObxStreamsClient CommObxStreamsServer
DevCompiler.CompileSubs Com Comm Ctl Dev Form Host Obx Ole Sql Std System Text Win Xhtml

DevLinker.Link BlackBox2.exe := Kernel$+ Files HostFiles StdLoader
1 BlackBox.res 1 Applogo.ico 2 Doclogo.ico 3 SFLogo.ico 4 CFLogo.ico 5 DtyLogo.ico 6 folderimg.ico 7 openimg.ico
Expand Down
2 changes: 1 addition & 1 deletion Dev/Docu/Debug.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Execute the string (between quotation marks), which must have the form of a Comp

PROCEDURE ShowGlobalVariables
Guard: TextCmds.SelectionGuard
Show the global variables of the module whose name is selected.
Show the global variables of the module whose name is selected. The module name may be either given in full, or by alias if an alias has been defined in the enclosing module's IMPORT statement.

PROCEDURE ShowLoadedModules
Show the list of all loaded modules. This command can be convenient to determine the modules which should be linked together when building an application.
Expand Down
3 changes: 3 additions & 0 deletions Dev/Docu/Decoder386.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
DevDecoder386

Module DevDecoder386 contains a decoder for Intel i386/387 code. This module has a private interface, it is only used internally.
4 changes: 2 additions & 2 deletions Dev/Docu/Dependencies.txt
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,10 @@ END
The item called Properties in this menu opens the standard font dialog and lets the user select a font for the view. The typeface and style of the chosen font effects the text displaying the names of the modules.The size of the font effects the text and the width of the lines and the arrows.

PROCEDURE Deposit
Analyzes the dependencies for each module in the selected list of modules. Then a view, displaying a graph of the dependencies, is created and deposited.
Analyzes the dependencies for each module in the selected list of modules. Then a view, displaying a graph of the dependencies, is created and deposited. The base module name may be either given in full, or by alias if an alias has been defined in the enclosing module's IMPORT statement.

PROCEDURE CreateTool
Analyzes the dependencies for each module in the selected list of modules. Then a tool document is created for the given modules. The tool document contains compiling, unloading, linking and packing commands. The compiling and unloading commands are only created for the currently expanded modules. The linking command includes the standard BlackBox icons and the packing command always includes all modules independent of which modules are currently expanded or hidden.
Analyzes the dependencies for each module in the selected list of modules. Then a tool document is created for the given modules. The tool document contains compiling, unloading, linking and packing commands. The compiling and unloading commands are only created for the currently expanded modules. The linking command includes the standard BlackBox icons and the packing command always includes all modules independent of which modules are currently expanded or hidden. The base module name may be either given in full, or by alias if an alias has been defined in the enclosing module's IMPORT statement.


The following commands are only used for manipulating the view (ordered the way they appear in the menu above):
Expand Down
24 changes: 13 additions & 11 deletions Dev/Docu/P-S-I.txt
Original file line number Diff line number Diff line change
Expand Up @@ -320,17 +320,19 @@ The module HostPorts exports constants for Windows-specific cursors which can be
linkCursor = 25;
pickCursor = 26; (* drag and pick cursor *)

Windows-specific mouse and keyboard modifiers

Modifier sets are used in Controllers.TrackMsg, Controllers.EditMsg, and Ports.Frame.Input. In addition to the platform independant modifiers Controllers.doubleClick, Controllers.extend, and Controllers.modify they contain platform-specific modifiers defined in HostPorts:

CONST
left = 16; (* left mouse button pressed *)
middle = 17; (* middle mouse button pressed *)
right = 18; (* right mouse button pressed *)
shift = 24; (* Shift key pressed *)
ctrl = 25; (* Control key pressed *)
alt = 28; (* Alt key pressed *)
Windows-specific mouse and keyboard modifiers

Modifier sets are used in Controllers.TrackMsg, Controllers.EditMsg, and Ports.Frame.Input. The BlackBox platform independant modifier elements doubleClick, extend, modify, popup, and pick are defined in module Controllers. Additional Windows platform-specific modifier elements are defined in module HostPorts. The correspondence between these elements is shown in the table below. If the HostPorts element is included it implies that the corresponding Controllers element will also be included.

 HostPorts HostPorts Controllers Controllers Mouse button
element value element value or key
-- -- doubleClick 0 double click
left 16 -- -- left mouse button
middle 17 pick 4 middle mouse button
right 18 popup 3 right mouse button
shift 24 extend 1 Shift key
ctrl 25 modify 2 Ctrl key
alt 28 pick 4 Alt key

Window and device context handles

Expand Down
14 changes: 11 additions & 3 deletions Dev/Docu/References.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ DEFINITION DevReferences;

IMPORT TextMappers, Files;

PROCEDURE ShowDocu;
PROCEDURE ShowSource;
PROCEDURE ShowText (module, ident: TextMappers.String; category: Files.Name);
PROCEDURE ResolveImportAlias (VAR mod: TextMappers.String; t: TextModels.Model);
PROCEDURE ShowDocu;
PROCEDURE ShowSource;
PROCEDURE ShowText (module, ident: TextMappers.String; category: Files.Name);

END DevReferences.

Expand All @@ -21,13 +22,20 @@ MENU
END


PROCEDURE ResolveImportAlias (VAR mod: TextMappers.String; t: TextModels.Model)
On input mod is assumed to contain either the name of a Module, or a Qualident, where the Module referenced in mod is imported by another Module whose source code is in t.
For example, if t contains the line "IMPORT Ref := DevReferences;" mod may be "Ref" or "DevReferences".
On output, in this example, mod would be set to "DevReferences".

PROCEDURE ShowDocu
Guard: TextCmds.SelectionGuard
Looks up the documentation text of the module whose name is selected. If a qualified identifier is selected, i.e., "module.ident", the corresponding item is searched. It must be written in boldface and in a smaller than 14 point type. The document must be located in the Docu directory of the module's subsystem.
The selected module name or qualident may be either given in full, or by alias if an alias has been defined in the enclosing module's IMPORT statement.

PROCEDURE ShowSource
Guard: TextCmds.SelectionGuard
Looks up the source text of the module whose name is selected. If a qualified identifier is selected, i.e., "module.ident", the corresponding item is searched. It must be written in boldface and in a smaller than 14 point type. The document must be located in the Mod directory of the module's subsystem.
The selected module name or qualident may be either given in full, or by alias if an alias has been defined in the enclosing module's IMPORT statement.

PROCEDURE ShowText (module, ident: TextMappers.String; category: Files.Name)
Used internally.
2 changes: 1 addition & 1 deletion Dev/Docu/User-Man.txt
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ The previous paragraph has shown everything you need to do to distribute an add-
1) This approach is suited for applications where updates and extensions are frequent: you provide the unlinked code files of your application and of BlackBox, together with a minimal linked application to boot the whole software system.
To make an unpacked and unlinked stand-alone version you need to copy some files and directories from the BlackBox directory to a new directory. BlackBox.exe may be renamed to the name of your new application.

2) This approach is suitable for applications that are closed or where incremental updates and extensions are relatively rare: you pack the BlackBox directory's contents into one large executable file. In contrast to the linker (see below), the packer is not limited to code files; it can also pack resources and documentation and any other kind of files into the application. In contrast to approach 1), the end user cannot easily destroy the applications just by deleting some code or resource file. See the packerdocumentation for details.
2) This approach is suitable for applications that are closed or where incremental updates and extensions are relatively rare: you pack the BlackBox directory's contents into one large executable file. In contrast to the linker (see below), the packer is not limited to code files; it can also pack resources and documentation and any other kind of files into the application. In contrast to approach 1), the end user cannot easily destroy the applications just by deleting some code or resource file. See the packer documentation for details.

3) This approach is most relevant for native applications (i.e., Component Pascal applications which don't use the BlackBox framework) and for linked libraries (DLLs under Windows): you use the linker tool to combine several code files into one application file.
For a linked version you need to use the linker to pack your code files together with the BlackBox code files into a single application. See the linker documentation for details. After linking, you need to copy the new application to a new directory. You also need to copy the Rsrc subdirectories of the Form, Host, Std, System, Text, and of your own subsystems. If the resource files are missing, the application would still operate (kind of), but lose all string mappings, all dialog box layouts, and all custom menus.
Expand Down
Loading

0 comments on commit 665244b

Please sign in to comment.