Process the Multiprog Documentation.

This commit is contained in:
Vasyl Palamarchuk
2026-09-18 13:13:11 -07:00
parent 25cd111786
commit c2863509e8
5 changed files with 350 additions and 0 deletions
+2
View File
@@ -70,3 +70,5 @@ Node.js/NPM packages are learning references only. Multi-PROG's embedded JavaScr
- `05_Reference`: glossary, search queries, checklist and security-research notes
- `06_URL_Shortcuts`: browser shortcut files
- `17_MultiPROG_SDK/docs`: per-function API reference documentation
- [Manual audit and gap analysis](../14_Repository_Review/MANUAL_AUDIT_AND_GAP_ANALYSIS.md)
- [Manual-derived SDK reference](../17_MultiPROG_SDK/docs/MANUAL_API_REFERENCE.md)
@@ -0,0 +1,105 @@
# Multi-PROG Manual Audit and Gap Analysis
## Scope and evidence rule
This report compares the repository with the two supplied PDFs:
- `01_Knowledge_Base/Multi-PROG User Manual.pdf` (16 extracted pages).
- `01_Knowledge_Base/Multi-PROG Script Manual (EN).pdf` (46 extracted pages).
Only statements directly present in those PDFs are classified as **Documented in provided manual**. Repository material from tutorials, forums, general engineering references, or source code is not promoted to manual evidence. Where the PDFs do not establish a fact, this report uses **NOT DOCUMENTED IN PROVIDED MANUALS**.
## Repository audit
| Area reviewed | Repository surface found | Manual-only status |
| --- | --- | --- |
| Existing documentation | `01_Knowledge_Base`, `04_Workflows`, `13_Research_Expansion`, `17_MultiPROG_SDK/docs`, `18_Documentation` | Partially documented; provenance varies by page |
| Script examples | `03_Script_Starter_Kit/examples`, `08_Collected_MultiPROG_Scripts`, `17_MultiPROG_SDK/examples` | Repository examples are not examples from either supplied PDF unless explicitly identified below |
| API references | `01_Knowledge_Base/API_DISCOVERY_WORKSHEET.md`, `13_Research_Expansion/*API*`, `17_MultiPROG_SDK/docs` | The script manual documents the API families and prototypes in `17_MultiPROG_SDK/docs/MANUAL_API_REFERENCE.md` |
| MCU documentation | `01_Knowledge_Base/AUTOMOTIVE_MEMORY_CONCEPTS.md`, `04_Workflows/MCU_READ_WRITE_WORKFLOW.md` | Partially documented; manual-specific facts added to the manual reference |
| EEPROM documentation | `01_Knowledge_Base/AUTOMOTIVE_MEMORY_CONCEPTS.md`, `04_Workflows/EEPROM_READ_WRITE_WORKFLOW.md` | Partially documented; manual-specific facts added to the manual reference |
| ECU/TCU documentation | `01_Knowledge_Base/ECU_TCU_CLONE_CONCEPTS.md`, related workflows | Partially documented; supported examples and stated operations are in the manual reference |
| Wiring information | Workflow pages and reference notes | Manual says wiring diagrams are supplied in software; complete pinouts are NOT DOCUMENTED IN PROVIDED MANUALS |
| JavaScript scripting | `18_Documentation`, `13_Research_Expansion`, SDK docs | Partially documented; lifecycle and language facts are directly covered by the script manual |
| Checksum information | `18_Documentation/CHECKSUM_GUIDE.md`, checksum utilities | User manual only states checksum processing for part of ECU computer data; algorithms and coverage are NOT DOCUMENTED IN PROVIDED MANUALS |
| Encryption information | Existing conceptual/reference material | Script manual documents AES/DES host functions and padding/mode names; automotive keys, algorithms, and procedures are NOT DOCUMENTED IN PROVIDED MANUALS |
| Function reference | Existing per-category SDK pages | Expanded with the script manual's exact documented names and prototypes; missing fields remain marked |
## Gap analysis
### Already documented in the manuals and repository
- Multi-PROG consists of a main unit and PC software, connected by RJ45 or USB.
- The user manual documents EEPROM read, erase, write, and check actions; MCU read/write; automotive module read/write; ECU read/write/clone examples; TCU read/write and clone wording; third-party scripts; and batch writing.
- The script manual documents JavaScript, Local Scripts, Released Features, script creation/editing/testing/publishing, `.mjs` released files, JavaScript basics, `Uint8Array`, and the built-in function categories.
### Partially documented
- Existing SDK pages describe several names from public/community material, but previously did not preserve the supplied script manual as the direct source for every prototype.
- Existing ECU/TCU pages contain broader conceptual and workflow material than the user manual. Those claims remain repository material and are not treated as manual-validated here.
- Existing examples demonstrate repository utilities, not the PDF's screenshots and snippets. The manual reference records the PDF examples without claiming they are executable repository scripts.
### Missing but available in the manuals
- User-manual hardware parameters and product/accessory list.
- User-manual memory-area terminology: `FLASH`, `CFLASH`, `CODE`, `ROM`, `DFLASH`, `EEPROM`, `DATA`, `INF`, and `Config`.
- User-manual MCU wiring notes on a required-low pin, a 1K pull-down to GND, a pull-up to VCC, and external clock use when the crystal is not 4 MHz.
- User-manual supported ECU and TCU examples and their stated operations.
- Script-manual lifecycle, Local Scripts/Released Features management, Uint8Array slice/subarray distinction, and documented built-in function prototypes.
### Missing and not available in the manuals
- Complete adapter pinouts, connector pin maps, ECU cable pin maps, and vehicle-specific wiring diagrams.
- A complete supported-device catalog beyond the examples and families named in the user manual.
- Exact MCU/EEPROM electrical limits beyond the stated hardware parameters and wiring notes.
- Detailed batch-write operation; the user manual refers to separate factory usage documentation.
- Complete parameter types and return-value descriptions for many script functions; the extracted script manual leaves several fields blank or gives only a prototype.
- Encryption key sizes, block-size rules, cryptographic test vectors, and automotive encryption procedures.
- Checksum algorithms and ECU-specific checksum coverage.
## Manual coverage report
| Requested domain | Coverage from supplied manuals | Repository action |
| --- | --- | --- |
| Hardware and accessories | Documented, including specs and named accessories | Added to manual reference |
| EEPROM | Documented at workflow/concept level | Added model/mask, read/write/erase/check facts |
| MCU | Documented at manufacturer, memory-area, and wiring-note level | Added exact terminology and limits |
| Automotive modules | Documented for immobilizer, dashboard, airbag, and other body modules; Porsche and Volkswagen Phideon examples | Added stated operations only |
| ECU | Documented examples: BMW MSV90/MSV80/B48/B58, Mercedes SIM271, VW MED17 | Added only read/write/clone/ISN scope stated |
| TCU | Documented examples: DQ200, DQ250, VL381, DL501, MPS6, BMW DKG, Mercedes VGS | Added only stated read/write/clone scope |
| Batch writing | Capability documented; detailed procedure deferred by manual | Marked limitation |
| Script architecture and lifecycle | Documented | Added to SDK manual reference |
| JavaScript and Uint8Array | Documented | Added to SDK manual reference |
| Built-in APIs | Names/prototypes/categories documented | Added exact names/prototypes; blank manual fields remain explicit |
| PDF code examples | Snippets appear throughout script manual | Indexed in SDK manual reference; not represented as unverified host scripts |
## Repository claims requiring separate validation
The following types of claims occur in existing repository material but cannot be validated from the two supplied PDFs alone: claims sourced from forums or tutorials; generic semiconductor behavior; exact support for models not named in the user manual; host-runtime compatibility claims; checksum algorithms; third-party script behavior; adapter pinouts; and any security, key, ISN, or encryption procedure beyond the manual's stated menu/function scope. These claims are not deleted because the audit must preserve existing material; they should be labeled **NOT VERIFIED FROM PROVIDED MANUALS** when used as manual-derived evidence.
## Cross-references
- [Manual-derived SDK reference](../17_MultiPROG_SDK/docs/MANUAL_API_REFERENCE.md)
- [SDK documentation index](../17_MultiPROG_SDK/docs/README.md)
- [Knowledge base index](../01_Knowledge_Base/README.md)
## Documentation update report
- Added manual-only hardware, accessory, EEPROM, MCU, module, ECU, TCU, batch-writing, scripting, Uint8Array, and API coverage to `17_MultiPROG_SDK/docs/MANUAL_API_REFERENCE.md`.
- Added direct navigation from the SDK documentation index and knowledge-base index.
- Preserved existing broader repository guidance and its existing verification status; no existing claim was rewritten as manual fact.
- Recorded missing manual fields and unsupported requested details as explicit gaps.
## New files created report
- `14_Repository_Review/MANUAL_AUDIT_AND_GAP_ANALYSIS.md`
- `17_MultiPROG_SDK/docs/MANUAL_API_REFERENCE.md`
- `17_MultiPROG_SDK/examples/javascript/MANUAL_SNIPPETS.md`
## Information found in manuals but not previously consolidated in the repository
The consolidated items include the exact hardware specification table; the `5BBD` to `95320` mask-search example; the complete MCU area vocabulary; the required-low, 1K pull-down, VCC pull-up, and non-4-MHz clock notes; the explicit ECU/TCU family list and operations; the user-manual batch-write limitation; the script editor/release management details; the script manual's complete encryption function family; and the manual's explicit `slice()` versus `subarray()` memory-sharing distinction.
## Repository claims not validated by these manuals
Claims about third-party sources, generic memory engineering, unsupported vehicle/module coverage, exact pinouts, proprietary checksum algorithms, host compatibility outside the documented functions, security algorithms, and detailed immobilizer/key/ISN procedures are **NOT VERIFIED FROM PROVIDED MANUALS**. They remain in place as repository material but are outside this manual-derived reference.
@@ -0,0 +1,172 @@
# Multi-PROG Manual-Derived Reference
This page contains only facts and names found in the supplied Multi-PROG User Manual and Multi-PROG Script Manual (EN). It is not a claim that a function is available in another software release. If the supplied script manual does not state a parameter type or return value, the field is recorded as **NOT DOCUMENTED IN PROVIDED MANUALS**.
## User-manual hardware and workflows
### Hardware
The user manual describes Multi-PROG as a programmer consisting of a main unit and PC software. The main unit connects to PC software through RJ45 or USB. It describes programming, reading, writing, and cloning of common automotive MCUs, memory chips, electronic modules, and ECU computer boards. The user manual also names USB A, USB B, RJ45, a power socket, PE grounding, a touch screen, status indicator, main-unit switch, magnetic shield, and an IC locking holder.
| Parameter | Manual value |
| --- | --- |
| Operating system | Linux |
| Processor | ZYNQ7020 Dual Core Cortex A9 + FPGA |
| Memory | 256M*2 DDR + 64M NOR FLASH |
| Display | 3.5 inch, 320*480 |
| Input voltage | 15V/4A |
| Working current | 300mA (14V) |
| Working temperature | -20 to 55 C |
| Storage temperature | -30 to 65 C |
| External interface | USB/RJ45 |
| Dimensions | L233*W150*H54mm |
### Accessories
The product list names the USB WiFi Network Card, 220V power cord, 15V/4A power adapter, VH13, VH20, VH23, MCU adapter Multi-PROG solder cable, MCU DB15 adapter cable, ECU adapter Multi-PROG solder cable, ECU DB15 adapter cable, ECU cable plug, Multi-PROG OBD cable, USB cable, and product documentation/certificates. The manual explicitly describes VH13 as a chip-holder adapter board for IC holders and DIP-sealed memory chips, VH20 as a self-test board used with the interface self-test flow, the power adapter as the device power source, the USB cable as the PC connection, and the USB WiFi card as device networking/data sharing. Individual pinouts and complete functions of every cable are **NOT DOCUMENTED IN PROVIDED MANUALS**.
### EEPROM
The manual describes EEPROM as storing vehicle electronic information data and says the software can select by manufacturer/model or search by model or silk-screen mask. Its example says entering the 8-pin mask `5BBD` displays the `95320` option. It states support for serial and parallel EEPROM interfaces, with some parallel memories requiring special adapters. The documented actions are read, erase, write, and check. Erasing loses all chip data; the manual says original data is erased automatically when Write is selected.
### MCU
The named manufacturers are Atmel, Motorola, Freescale, Infineon, Renesas, and STMicroelectronics. The manual divides MCU storage into program, data, and configuration areas. It uses `FLASH`, `CFLASH`, `CODE`, and `ROM` for program-area names; `DFLASH`, `EEPROM`, `DATA`, and `INF` for data-area names; and `Config` for configuration-area names. It says configuration may be unreadable for encrypted chips.
The wiring notes state that a pin marked optional/must be low must be low before reading; if it is not low, a 1K pull-down resistor to GND can be connected. A pull-up resistor is connected to VCC where the diagram requires it. If the crystal is not 4 MHz, the manual says to connect chip pin 1 to the programmer CLK output and check whether an external clock is needed. The manual requires following the software wiring diagram and says a multimeter may be needed to find the board connection diagram for the specific board.
### Automotive modules
The manual names immobilizer, dashboard, airbag, and other body electronic modules. It says the software provides a corresponding module circuit connection diagram. Its Porsche example concerns encrypted reading/writing of front-end modules and lists backup read, write, unlock, and lock operations. Its Volkswagen Phideon tire-pressure-module example says to select the option, solder the MCU cable according to the diagram, connect the device, and read/write.
### ECU and TCU scope
The user manual states the following examples and operations:
| Family/example | Operations stated by the manual |
| --- | --- |
| BMW MSV90, MSV80 and other series | Read, write, clone |
| BMW B48, B58 | ISN read |
| Mercedes-Benz SIM271 | Read, write, clone |
| Volkswagen Bosch MED17 | Read, write, clone |
| Volkswagen/Audi/Skoda DQ200, DQ250, Audi VL381 | TCU read/write; VL381 example also describes clone wording |
| Porsche DL501, Ford/Dodge and other MPS6 series | TCU read/write |
| BMW DKG, Mercedes-Benz VGS | TCU read/write |
For the BMW MSV90 and Mercedes SIM271 examples, the manual says to follow the software wiring diagram; for cloning it says to read/save EEPROM and FLASH and write the saved data to the replacement ECU. For MSV90, it says an ISN is displayed after EEPROM reading when required. For the Audi VL381 example it gives the same read/save EEPROM and FLASH, then write to the replacement computer wording. No deeper vehicle-specific algorithm or pinout is documented here.
### Batch writing
The user manual documents batch writing for common memory and microcontroller series, including batch write, offline write, and file offline write. It says detailed usage is in the factory usage-mode documentation and provides no further procedure. That procedure is **NOT DOCUMENTED IN PROVIDED MANUALS**.
## Script system architecture
The script manual states that scripts are written in JavaScript. The system has two menu surfaces: **Local Scripts** and **Released Features**. Local Scripts supports create, open, modify, save, debug/test, and publish. Released Features manages released `.mjs` files and supports import, export, run, delete, and viewing attributes such as name, type, manufacturer, description, remaining uses, and deadline. The script manual describes the lifecycle as create/edit/test/release/manage; it does not define a separate source-control or deployment protocol.
The manual says the Local Script editor can add function buttons to the main interface toolbar, with the button action configured by script. It describes `.mjs` as the generated published-script file. Release requires network and device connection, performs syntax and online verification, and generates the `.mjs` file at the selected path.
## JavaScript basics
The manual introduces value types (string, number, Boolean, null, undefined, and symbol) and reference types (object, array, and function). It includes variables, statements/comments, functions, strings, arrays, and common JavaScript syntax/examples. General JavaScript details beyond the examples in the supplied script manual are **NOT DOCUMENTED IN PROVIDED MANUALS**.
## Uint8Array
The manual has a dedicated Uint8Array section covering creation, common properties/methods, and the difference between `slice()` and `subarray()`. It shows `Uint8Array.of(...)` examples. The manual's demonstrated memory behavior is that `subarray()` shares the original array's memory, while `slice()` creates an independent copied region. Additional constructor edge cases and typed-array compatibility are **NOT DOCUMENTED IN PROVIDED MANUALS**.
## Built-in function reference
The following prototypes are transcribed from the script manual. The manual often leaves parameter descriptions and return fields blank; those fields are intentionally not filled with assumptions.
### File functions
| Function | Purpose | Syntax | Parameters | Return value | Manual example |
| --- | --- | --- | --- | --- | --- |
| `ReadFile` | Read a file | `ReadFile(path)` | `path`: documented by syntax; type not stated | NOT DOCUMENTED IN PROVIDED MANUALS | `var data = ReadFile("C:/temp.bin")` |
| `WriteFile` | Write data to a specified file | `WriteFile(path, data)` | `path`, `data`; types not stated | NOT DOCUMENTED IN PROVIDED MANUALS | Manual shows a `WriteFile` call |
| `ReadAndEmbedFile` | Read and embed a file | `ReadAndEmbedFile(path)` | `path`; type not stated | NOT DOCUMENTED IN PROVIDED MANUALS | `var data = ReadAndEmbedFile("C:/temp.bin")` |
| `GetOpenFileName` | Get a user-selected file name | `GetOpenFileName()` | None | NOT DOCUMENTED IN PROVIDED MANUALS | Function is listed with no fuller example |
| `GetSaveFileName` | Get a file name saved by the user | `GetSaveFileName()` | None | NOT DOCUMENTED IN PROVIDED MANUALS | Function is listed with no fuller example |
| `ReadFromSelectedFile` | Read the user's selected file | `ReadFromSelectedFile()` | None | NOT DOCUMENTED IN PROVIDED MANUALS | `var data = ReadFromSelectedFile()` |
| `WriteToSelectedFile` | Write to the user's selected file | `WriteToSelectedFile(data)` | `data`; type not stated | NOT DOCUMENTED IN PROVIDED MANUALS | `var length = WriteToSelectedFile(data)` |
### Device functions
| Function | Syntax | Manual-stated purpose |
| --- | --- | --- |
| `SelectBuffer` | `SelectBuffer(name)` | Select named data in a buffer |
| `BlankCheck` | `BlankCheck()` | Perform blank detection on the current buffer |
| `WriteData` | `WriteData(data)` | Write data to the current buffer |
| `ReadData` | `ReadData()` | Read data from the current buffer |
| `EraseData` | `EraseData()` | Manual API category lists this operation; detailed parameter/return fields are NOT DOCUMENTED IN PROVIDED MANUALS |
| `IDCheck` | `IDCheck()` | Manual API category lists this operation; detailed parameter/return fields are NOT DOCUMENTED IN PROVIDED MANUALS |
| `PinCheck` | `PinCheck()` | Manual API category lists this operation; detailed parameter/return fields are NOT DOCUMENTED IN PROVIDED MANUALS |
| `OpenPowerSetting` | `OpenPowerSetting()` | Manual API category lists this operation; detailed parameter/return fields are NOT DOCUMENTED IN PROVIDED MANUALS |
### Interface functions
The manual lists `Print`, `ClearLogs`, `Message`, `Question`, `GetInput`, `RequestInput`, `ShowDataInBufferArea`, `GetBufferData`, `GetBufferName`, `ShowPicture`, and `AddFunctionButton`. It demonstrates `Print(input)`, `Message("Message pop-up text information")`, `Question(...)`, `ShowDataInBufferArea(data)`, `GetBufferData()`, `GetBufferName()`, `ShowPicture("C:/wiring_diagram.jpg", "Please refer to the picture for wiring.")`, and `AddFunctionButton(text, functionName, languageId)`. For functions whose complete prototype/return description is not visible in the manual text, the missing details are **NOT DOCUMENTED IN PROVIDED MANUALS**.
### Shared memory
| Function | Syntax | Manual-stated purpose |
| --- | --- | --- |
| `SharedMemSetData` | `SharedMemSetData(data)` | Write data to the public buffer |
| `SharedMemGetData` | `SharedMemGetData()` | Get data in the public buffer |
| `SharedMemGetSize` | `SharedMemGetSize()` | Get the size of data in the public buffer |
| `SharedMemClear` | `SharedMemClear()` | Clear the public buffer |
### Verification functions
| Function | Syntax | Manual-stated purpose |
| --- | --- | --- |
| `MD5` | `MD5(data)` | Calculate MD5 of data |
| `CRC16` | `CRC16(data, init)` | Calculate CRC16 of data |
| `CRC32` | `CRC32(data, init)` | Calculate CRC32 of data |
| `SHA1` | `SHA1(data)` | Calculate SHA1 of data |
| `SHA256` | `SHA256(data)` | Calculate SHA256 of data |
The manual's examples create data with `Uint8Array.of(0x12, 0x13, 0x14, 0x15)` and pass it to these functions. It does not document algorithm parameters beyond the visible `init` syntax for CRC16/CRC32.
### Encryption functions
The manual lists AES and DES functions for ECB and CBC modes with ZERO, PKCS7, and ISO padding. The documented prototypes are:
```text
AES_ECB_ZERO_Encrypt(data, key) DES_ECB_ZERO_Encrypt(data, key)
AES_ECB_ZERO_Decrypt(data, key) DES_ECB_ZERO_Decrypt(data, key)
AES_ECB_PKCS7_Encrypt(data, key) DES_ECB_PKCS7_Encrypt(data, key)
AES_ECB_PKCS7_Decrypt(data, key) DES_ECB_PKCS7_Decrypt(data, key)
AES_ECB_ISO_Encrypt(data, key) DES_ECB_ISO_Encrypt(data, key)
AES_ECB_ISO_Decrypt(data, key) DES_ECB_ISO_Decrypt(data, key)
AES_CBC_ZERO_Encrypt(data, key, iv) DES_CBC_ZERO_Encrypt(data, key, iv)
AES_CBC_ZERO_Decrypt(data, key, iv) DES_CBC_ZERO_Decrypt(data, key, iv)
AES_CBC_PKCS7_Encrypt(data, key, iv) DES_CBC_PKCS7_Encrypt(data, key, iv)
AES_CBC_PKCS7_Decrypt(data, key, iv) DES_CBC_PKCS7_Decrypt(data, key, iv)
AES_CBC_ISO_Encrypt(data, key, iv) DES_CBC_ISO_Encrypt(data, key, iv)
AES_CBC_ISO_Decrypt(data, key, iv) DES_CBC_ISO_Decrypt(data, key, iv)
AES_Encrypt(level, mode, data, key, iv, padding)
DES_Encrypt(mode, data, key, iv, padding)
AES_Decrypt(level, mode, data, key, iv, padding)
DES_Decrypt(mode, data, key, iv, padding)
```
The generic AES example uses `AES_Encrypt(AES_128, CBC, data, key, iv, ZERO)` and the generic decrypt example uses the corresponding `AES_Decrypt` call. The manual names AES levels `AES_128`, `AES_192`, and `AES_256`. Key sizes, IV requirements beyond the prototype, block rules, and cryptographic return types are **NOT DOCUMENTED IN PROVIDED MANUALS**.
### Utility functions
| Function | Syntax | Manual-stated purpose |
| --- | --- | --- |
| `ByteArrayToHexString` | `ByteArrayToHexString(data)` | Convert an array to a hexadecimal string |
| `HexStringToByteArray` | `HexStringToByteArray(str)` | Convert a hexadecimal string to an array |
| `GetLanguageId` | `GetLanguageId()` | Obtain the language used by the script at runtime |
| `CurrentDateTime` | `CurrentDateTime(format)` | Get the current date and time |
The manual example formats the current time as `yyyy-MM-dd hh:mm:ss:zzz`. Parameter types and return types not shown by the prototype are **NOT DOCUMENTED IN PROVIDED MANUALS**.
## Manual examples index
Examples visible in the script manual include `Uint8Array.of(...)`, string/array operations, file reads/writes, buffer selection/read/write, UI messages and buttons, shared-memory access, MD5/CRC/SHA calls, AES/DES mode/padding calls, byte-array/hex conversion, language lookup, and date formatting. They are retained above as short API examples where extraction was unambiguous. Screenshot-only wiring and UI examples are not recreated as code because their source text is **NOT DOCUMENTED IN PROVIDED MANUALS**.
## Traceability and limitations
Source locations are the section/page headings in the supplied PDFs: user-manual chapters 3-11 and script-manual sections 1-8, especially script-manual pages 1-2, 16-21, 22-40, and 42-45. PDF text extraction has encoding artifacts in a few punctuation characters; function names and prototypes were preserved only where legible. No repository behavior has been changed based on a guess.
+2
View File
@@ -2,6 +2,8 @@
This is the structured, per-function reference for the Multi-PROG scripting host API surface. It complements (does not replace) `13_Research_Expansion/MULTIPROG_API_REFERENCE.md`, which tracks the same discoveries in flat table form for quick scanning.
For facts transcribed directly from the supplied User Manual and Script Manual, see [MANUAL_API_REFERENCE.md](MANUAL_API_REFERENCE.md). That reference preserves undocumented fields as explicit gaps and must not be read as validation of other software versions.
## Status convention
Every function below is labeled with a **Verification status**:
@@ -0,0 +1,69 @@
# Script Manual Examples
These are short, unmodified-in-meaning examples transcribed from the supplied Multi-PROG Script Manual (EN). They are reference snippets, not tested Node.js programs and not proof that a different Multi-PROG release exposes identical behavior.
## Uint8Array and verification
```javascript
var data = Uint8Array.of(0x12, 0x13, 0x14, 0x15);
var md5 = MD5(data);
var crc16 = CRC16(data);
var crc32 = CRC32(data);
var sha1 = SHA1(data);
var sha256 = SHA256(data);
```
The manual lists `init` in the `CRC16(data, init)` and `CRC32(data, init)` prototypes; the example shown in the manual calls each with `data` only.
## File and buffer operations
```javascript
var data = ReadFile("C:/temp.bin");
var embedded = ReadAndEmbedFile("C:/temp.bin");
var selected = ReadFromSelectedFile();
var length = WriteToSelectedFile(data);
var success = SelectBuffer("BUFFER NAME");
ShowDataInBufferArea(data);
var bufferData = GetBufferData();
var bufferName = GetBufferName();
```
The manual does not document the parameter types or return types beyond the displayed prototypes. Those details are **NOT DOCUMENTED IN PROVIDED MANUALS**.
## Interface operations
```javascript
Print(input);
Message("Message pop-up text information");
var ret = Question(MsgWarning, BtnCancel | BtnOK, "Alert");
ShowPicture("C:/wiring_diagram.jpg", "Please refer to the picture for wiring.");
AddFunctionButton("Message button", "MyFunc1");
AddFunctionButton("Pop up button", "MyFunc2");
```
## Shared memory and encryption
```javascript
SharedMemSetData(data);
var shared = SharedMemGetData();
var size = SharedMemGetSize();
SharedMemClear();
var encrypted = AES_ECB_ZERO_Encrypt(data, key);
var decrypted = AES_Decrypt(AES_128, CBC, data, key, iv, ZERO);
```
The manual names `ZERO`, `PKCS7`, and `ISO` padding and AES levels `AES_128`, `AES_192`, and `AES_256`. Key sizes, IV rules, and return types are **NOT DOCUMENTED IN PROVIDED MANUALS**.
## Conversion and date helpers
```javascript
var strHex = ByteArrayToHexString(arr);
Print(strHex);
var arr = HexStringToByteArray(strHex);
var languageId = GetLanguageId();
var date = CurrentDateTime("yyyy-MM-dd hh:mm:ss:zzz");
```
## Source note
The snippets correspond to the script manual's built-in-function examples and are linked from [MANUAL_API_REFERENCE.md](../../docs/MANUAL_API_REFERENCE.md). Existing repository examples remain separate because they are not claimed to have been extracted from the supplied PDF.