Index

Introduction

ORANGE - Universal programmer for Serial EEPROMs and microprocessors. The programmer is designed for reading, testing and programming many types of programmable devices.

Features

  • Reads, tests and programs SEEPROMs.
  • Unlike other known systems, the programmer uses special macro language HPL to describe the read and write interfaces. Therefore the User can check and enhance the data interfaces, as well as add any new SEEPROMs.
  • Reads and writes files in bin and hex formats. Reads the files in e2p format.
  • I/O buffer editing in hex and ASCII presentation.
  • Only the selected part of I/O buffer can be written to EEPROM being programmed.
  • Clipboard support in programming.


System Requirements

PC system requirements

ORANGE programmer can be used on a PC with the following minimum configuration:

  • IBM PC/AT or compatible;
  • Intel 486 CPU or higher;
  • VGA (SVGA) compatible video adapter;
  • Available LPT port (EPP mode support for Omega);
  • Mouse (recommended);
  • MS Windows 95/98/NT/2000;
  • 32 Mb RAM (64 Mb RAM for W2000);
  • At least 1Mb free space available on hard disk.


Install

Programmer installation and run

  1. Turn PC off.
  2. Connect the programmer to LPT port of your PC using the supplied cable.
  3. Connect the power adapter to the power jack of the programmer, and then plug in the power adapter to the wall electrical outlet.
  4. Turn on PC.
  5. Copy the software to your HDD from CD or from the archive downloaded from our website.
  6. Run Orange.exe file.
  7. Set the port number in software options if needed (LPT1 is set by default).
  8. Orange-Omega requires the additional setting of EPP mode in BIOS peripherals setting.
  9. Programmer is ready to work.


Menu

Working with menu

To use menu hold Alt button and move the marker to the needed item using cursor control arrow buttons or just select it with mouse.

  • File
    - New - new file.
    - Open file - read file in I/O buffer.
    - Save - save file.
    - Save as - save file with different name.
    - Descriptions - review and edit descriptions.
    - Recent - Show the last 4 names of files to load.
    - Exit - End of work.
  • Buffer - I/O buffer operations:
    - Copy - copy the selection from the buffer to clipboard.
    - Paste - paste the selection from clipboard.
    - Search - search the hex string in I/O buffer. You can use '?' wild character to replace any byte or half-byte.
    - Replace - replace, the string can have the same wild character as in Search.
    - Select Block - selecting block using specified addresses.
    - Fill Buffer - using a constant or string to fill the buffer.
    - Xor Buffer - exclusive OR for a constant and buffer.
    - Swap bytes - swapping adjacent bytes.
    - Swap nibbles - swapping half bytes in a byte.
    - Swap bits - swapping bits in a byte.
    - Checksum - 3 algorithms to calculate a checksum.
    - Registers - edit user registers (if specified).
  • Device
    - Read - read EEPROM
    - Write - write EEPROM
    - Modify - write the marked bytes only.
    - Compare - compare the buffer and EEPROM (flagging the differences).
    - Difference - compare the buffer and EEPROM (building a table).
  • Options
    General - general setting.
    - Force write - writing complete buffer (otherwise the specified bytes only).
    - Verify during write - test reading during the write (for every word).
    - Verify after write - test reading after the write (not done in Modify mode).
    - Block mode enable - allow block read/write.
    - Confirmation - Confirm the actions.
    - Button Bar - additional buttons bar (for user sections of HPL).
    - Auto save - automatic save of the options.

    Hardware - select the Programmer type and LPT port number. Testing the installed Programmer.

    Editor - settings for the hex editor.
    - Mark clear - remove selection after the action.
    - 16 bit editor - 16-bit editor mode.
    - ANSI-OEM conversion - character conversion for the editor ASCII field.
    - Show gridlines - show grid.
    - Read only - read only buffer.
    - Default buffer value - hex number to fill the buffer by default.

    Files - file settings.
    - Check file size - check file size during load.
    - Mark load data - mark load data in editor.
    - Descriptions - support description file.
    - Swap 16-bit files - swap high and low bytes in binary files for 16-bit ICs.
    Caution! Files created with this option will be incompatible with the Orange standard files.
    - Backup files - number of backup files stored in BACKUP folder during EEPROM reading. 0 - no backups.
    Device - settings for the current device.
    Colors - color settings.
    Language - user interface language (Russian, English). Language is switched after software reload.
    Calculator - built-in calculator call.
    Compare mode - Compare mode in the Editor.
    Debug - Debug mode.
  • Type - Select Device type
  • Help
    Help - program help.
    Chip info - additional info for device (INFOFILE).
    Chip pinout - device pinout.
    System info - system info.
    About Orange - Software version.
Most frequently used functions may be called using the following hotkeys:
F1 | Help.
Shift-F1 | Device pinout.
F5 | Read.
Shift-F5 | Read marked block.
F6 | Write.
Shift-F6 | Write marked block.
F7 | Compare device and buffer.
Shift-F7 | Compare as table.
Ctrl-O | Open file.
Ctrl-S | Save file.
Ctrl+N | New file (clear buffer).
Ctrl-P | Power control mode.


Editor

Editor will modify the hex and ASCII content of the buffer.
The upper window column shows the byte addresses in the line. The right column shows the editor addresses. The current byte address is the sum of the line and column addresses. You can see it in the additional info line as well. Left mouse button click opens the window to jump to the specified address.

Main window shows two areas, left for hex values and right – for the corresponding ASCII codes. A block can be selected by holding left mouse button and moving the cursor. Context menu is open by the right mouse button click.

8 or 16-bit mode is set automatically following the selected EEPROM type. These modes show different hex and ASCII content!

Editor hotkeys
Tab | HEX/ASCII switch.
Ins | Byte select (set/reset) (or left mouse button double click)
Gray - | Remove select.
Gray + | Select (highlight) the whole buffer.
Gray * | Invert selection.
Ctrl-C | Copy block.
Ctrl-M | Jump next selection
Ctrl-V | Paste block.
PageUp | Page Up.
PageDown | Page Down.
Ctrl PgUp | Buffer beginning
Ctrl Home | Buffer start
Ctrl PgDn | Buffer end.
Ctrl End | Buffer end.
Home | Line start
End | Line end.
BackSpace | Go to the previous byte (character).

Status line

Status line is at the screen bottom. It shows the device type, settings panel and special button states.


Type

Setting the device type

You can set device type using menu command Type or "Type select" button on the toolbar.

Selection window has two columns: Group and Device. All devices are shown in groups following the manufacturer or functions. Changing group automatically updates the device list in the right window. Mouse and cursor buttons control are supported.
Fast jump to the name is done by typing the name first letter on keyboard. Selection is confirmed by mouse left button double click or OK button.

In ?Search? mode enter the numbers and/or characters of the device name ? the cursor will be set on the first found device with the similar name.

Types and parameters are set in Orange.cfg file.
Type and parameters for the current device are shown in the lower information window.


cfg

Configuration file

Configuration file Orange.cfg includes:

GROUP - group name:
(*) GROUP=MicroWire
All devices described up to the following division are from the current group.

CHIP - Device description:
(*) CHIP=93C56,128x16,93c66.hpl
where: 93С56 - device name.
128x16 - memory capacity and width. If the width is 8-bit, it can be omitted. Capacity can be also specified in Kilobytes.
93c66.hpl - name of HPL file.
In case the device supports block read/write mode, the block size is shown in parenthesis following the capacity:
(*) CHIP=24C64,8K(16/8),24c512.hpl
Where 16 - read block size,
8 - write block size.
If the sizes are the same, only one number can be specified.

AREA - memory range description: (*) AREA=DATA,128,0,0x4200,b
Where DATA - area name,
128 - capacity,
0 - address in the device.
0x4200 - address in the buffer,
b - memory area conversion (for PIC controllers)

VCC - power supply in millivolts: (*) VCC=5000

All HPL files are stored in HPL\ directory. The file is loaded after selecting the corresponding type in menu. The same module may be used for many device types of different capacity.
Windows-based program can work with many configuration files. They may have any names and be stored in the working directory. The working configuration file is selected in menu device type.


Calculator

Built-in calculator executes arithmetic operations with 32-bit data and supports direct formula presentation, values in hex, decimal and binary. It may be called in two ways:
1 - Standard: Menu>Options>Calculator.
2 - Context Menu: Right mouse button in Editor>Edit. The calculated result is inserted in the current edit address (in case there is no errors).

Number types:
0xNN,0NNH - hex
NN - decimal
NNb - binary
[NN] - Byte (word) from the buffer at address NN.

Arithmetic and logic operations:
+ - add
- - subtract
* - multiply
/ - divide
% - remainder
& - AND
| - OR
^ - XOR

Zero divide and remainder are prohibited. Operation priority is controlled by parenthesis.

Examples:
12+20/2 = 22
0x16&01111b = 6
[10]+[0Bh] = sum of the buffer cells 10 and 11


HPL

HPL language description rev 2.3

06.20.2004

HPL language (Hardware Programming Language) is developed to describe the low level data interfaces with different devices.

(*) marks the examples in the document.
(W) marks the operators and commands supported by Windows version only.

';' is the comment tag - the remainder of the line is not compiled.

All spaces are removed except in the strings.

Keywords should be in upper case.

  • Numbers can be binary, decimal or in hex format:
    (*) 1234 - decimal constant
    (*) 010101B - binary
    (*) 0x1234 or 01234H - hexadecimal.
  • Strings are the character sequences enclosed in double quotes (*) "Test"
    Spaces in strings are not removed. If double quote is needed inside string ? use two single quotes: ' '.
  • Address. Keyword ADR includes the current value of the 32-bit register used for data I/O. The address register can use the settings (in user sections only) and increments (in blocked I/O sections).
  • Data. Keyword DATA is used to access the buffer at the current address. Data can be retrieved by words (8 or 16 bits following the selected memory) or by bits.
  • Registers. 16 (32 in Windows version) 32-bit registers R0...R9, RA...RF can be used for math and logic operations, to store constants and data. Registers R0...R9 are universal; registers RA...RF are special. They are used to pass parameters:
    RA - parameters
    RB - I/O block size
    RC - address of the current area
    RD - area number for the multiple area devices (micro controllers).
    RE - global opcode (1-READ,2-VERIFY,3-WRITE,4-USER)
    RF - total memory size.

    Parameters are set automatically at the section start. If the value of special register is not used, the register can be used in section as a universal one. Register declare format is shown below    .
    Special registers can be accessed using the names as well: $SIZE, $BLOCKSIZE, $VERIFY, $CDELAY, $WDELAY, $AREA, $VERSION (W).

Interface description can include many sections. Three of them are required: initial, [READ] ? read word and [WRITE] ? write word.

Optional sections can be used as well:

[SETUP] - initial settings, called once at the module load
[INIT] - initialization, called once before all operations.
[WRITEINIT] - write initialization, called once before EEPROM write.
[WRITEEND] - write completion, called once after programming all EEPROM words.
[READBLOCK] - reading block
[WRITEBLOCK] - writing block
[END] - operation completion, called once for any operation.

Additional user sections can be declared in menu. Their names are enclosed in brackets []. Names inside double quotes can include spaces:
(*)["Test 1"]
Section named [---] can be used as a separator in menu. It can not be called (W).

Local sections (functions) are supported. Function name starts with '_' :

(*) [_START]

Function should be described before usage. Function is called by its name:

(*) _START.

Parameters can be passed using registers. Function call from inside another function is supported. Recursive calls are not recommended.

Sections READ and WRITE are called for Read and Write operations for every word.

Section calls in read mode:

[INIT]
FOR (ADR=0,ADR<SIZE;ADR++{
[READ]
}
[END]

Section calls in write mode:

[INIT]
[WRITEINIT]
FOR (ADR=0,ADR<SIZE;ADR++{
[WRITE]
IF (test read)
[READ]
}
[WRITEEND]
[END]

User section call:
[INIT]
[USERSECTION]
[END]

Modification of ADR inside section does not change its global value.

Initial section describes:

  • In and Out signals to connect to EEPROM (pins):
    (*) PINO=SCL,0 - Output, SCL ? signal name, 0 ? bit number for driver
    (*) PINI=SDA,1 - Input, SDA ? signal name, 1 - bit number for driver

    Input and Output signals can have the same names. Name length should not exceed 8 characters. Reserved keywords can not be used as names: "PINO", "PINI", "BUSO", "BUSI", "CDELAY", "SOCKET", "CONST", "REG", "GET", "LOOP", "ADR", "DATA", "MARK", "POWER". # before name describes inverted signal:

    (*) PINO=#DTA,0

    Device output pin can be assigned to a signal:

    (*) PINO=SDA,1,5

    This can be used to create the graphic presentation for devices connected using adapter.
  • Time delay after every pin set (in milliseconds):

    (*) CDELAY=10

    Used to control I/O speed. Real delays can be a little bit longer.

  • Socket number to connect EEPROM (Orange-1 scheme)

    (*) SOCKET=1

    If SOCKET parameter is not specified, it is taken as 0. You can create your own new Socket, but for the conditional device graphic presentation to be shown in Chip Info window, output pin table should be known in driver or described in the module.
    Socket numbers are arbitrary, as in Orange1 scheme:
    1 I2C
    2 MicroWire
    3 SDA2506
    4 SPI
    5 NVM3060
    6 S2100R
    7 AT17XXX
    In Orange4/5/SE programmers the output pin numbers for the specified socket are automatically translated by the driver.

  • Module additional information is shown in the lower window. One line only.

    (*) INFO="New module "

  • Additional help file (called from menu). Recommended file format - chm. (W).

    (*) INFOFILE="megahelp.chm"

  • Total number of EEPROM outputs (8 by default)
    (*) ALLPINS=14

  • Declaration of the Registers, accessible for edit using menu (Buffer->Registers). Register names should not be repeated. If the registers are local in section, their declaration is optional.

    (*) R0=Protect - where "Protect" ? register name

    Register name can be followed by comma and the register mode (display): H - hex, D - Dec, B - Bin, (W) L - List (W) C - CheckBox.
    If the mode is specified in lower case, the register is not shown in edit window.

    (*) R1=CODE,h

    Number of displayed digits can be specified for H,D,B,C modes:
    (*) R2=FLAGS,B8
    (*) R3=Box,C4

    List of strings can be specified for L mode.
    Register value is equal to the sequence number of selected string, starting with zero.
    (*) R0=Mode,L,On,Off

  • POWER - power control mode:
    1 - automatic on/off
    0 - controlled from module.

All other sections have the same format. One line can have many instructions separated by commas.

Instructions are briefly described below:

  • Pin set by constant, data bit, address or register:
    (*) SDA=1
    (*) SDA=DATA[2]
    (*) SCL=ADR[3]
    (*) PIN=R2[3]
  • Pin state (input line) or register bit R0-R7 can be checked:
    (*) DAT?1
    (*) R2[4]?0
    or the whole register:
    (*) R4?0x1234

If the compare operation is followed by an instruction block in braces {}, it is executed if the compare result is equal for bit (register) and constant, otherwise the instruction after braces is executed. If such a block is missing and the compare is failed, the execution is stopped and the display includes the message "Error: Chip not respond!" and HPL file error line number.

(*) R2[4]?0 {P1=0}, P2=1
If bit 4 of R2 register is equal to 0, P1=0 instruction is executed followed by P2=1, if the bit is equal to 1 ? execution jumps to P2=1

If the number to be compared is preceded by ?!?, the condition is inversed. (the block is executed in case of not equal).

(*) R2?!1234H {P1=0}
If R2 is not equal 1234H, P1=0 instruction is executed, if R2 = 1234H, next instruction is executed.

  • Setting constant value. It should be in the range 0...65535.
    (*) CONST=159
  • Operations with registers.
    1. Assignment (copy):
      Register-Register (*) R2=R5
      Register-Data (*) R2=DATA
      Data-Register (*) DATA=R3
      Data width depends on the device type (8 or 16 bits).
    2. Arithmetic and logic operations
      (Constant or another register can be used):
      assign "=" (*) R0=356H
      add "+" (*) R0=+123 ; R0=R0+123
      subtract "-" (*) R0=-R1 ; R0=R0-R1
      multiply "*" (*) R0=*R1 ; R0=R0*R1
      divide "/" (*) R0=/5 ; R0=R0/5
      remainder "%" (*) R0=%10 ; R0=R0%10
      round shift ">" (*) R0=>>1 ; R0 right shift 1 bit
      Logical AND - AND "&" (*) R0=*R2 ; R0=R0 and R2
      Logical OR - OR "|" (*) R0=|R2 ; R0=R0 or R2
      XOR - XOR "^" (*) R0=^R2 ; R0=R0 xor R2

Division and remainder operations can not use constant 0 or register containing 0!

3) Bit operations with registers (*) R0[R1]=1 - R0 bit which is equal to R1 bit, is set to 1.

  • LOOP - Loops. Loop variable can be: address, I/O data or constant. A universal loop can be described without variable specified. In this case access is controlled by the counter (index) of the loop I. Universal loops can be nested. The inner loop can directly access its own counter only. The boundaries for the universal loops can be set using registers. It is recommended to use the universal loops for compatibility with future versions!

Constant should be assigned before the loop start using CONST instruction. Loop boundaries should be inside the range:
0...32767 ? for universal loops
0...32767 - for CONST loops
0...1023 - for DATA loops
0...31 - for ADR loops
Index out of boundaries (for real DATA, ADR or CONST values) condition is not verified for universal loops.

Loop body is included inside the braces "{","}".

(*) LOOP=(15,0) {DI=R0[I],...}
DI output line is assigned the value of 15..0 bits of R0 register.

(*) LOOP=(7,0) {DI=ADR[I],...} (*) LOOP=ADR(7,0) {DI=I,...} - DI output line is assigned the value of 7..0 bits of address the current value (old version).

(*) LOOP=0,15) {DATA[I]=DO,..} (*) LOOP=DATA(0,15) {I=DO,..} ? reading 0..15 bits of the word from input line DO (old version).

(*) R1=10H
LOOP=(5,0) {D=R1[I],..}
(*) CONST=10H
LOOP=CONST(5,0) {D=I,..} ? output line D is assigned the value of 5..0 bits from (10H) constant (old version).

(*) LOOP=(R1,R2) {R3[I]=DATA[I]}
Copy the bits from R1 to R2 of address word to the corresponding bits of R3 register.

(*) LOOP=(0,7){ P1=0,LOOP=(6,1){P1=0,P1=1} }
Nested loops.

  • BREAK - jump out from the current loop.
    (*) LOOP=(7,0) {PI?0{BREAK}}
  • Time delay (in microseconds). Delay value can be in the range 1microsecond...65sec.
    (*) P=200

  • PRINT Message display. Screen shows the window with the message; the string should be included in double quotes. The string can include the standard modifiers supported by C language for printf(). (In DOS version all numbers require an additional parameter l (long int)).

%X - hex value
%u - decimal value

To use % (percent) in the string, it should be repeated twice %%. Compiler does not check the validity and the number of the passed parameters!

(*) PRINT=("Hello, World")
(*) PRINT=("Code=%04lX",R1) ? Display the value of R1 register in hex mode - 4 digits minimum.

Additional modifiers can be used to define the window type:
E - Error - error message
(*) PRINT=E("Hello, Mr. Bug!")

S - Status - show in the status window
(*) PRINT=S("Progress %03lu",R0)

L - Log - insert into the log window (W)
(*) PRINT=L("Operation %02lu",R0)

A - Ask - asking user confirmation
Value is returned in RA register (Ok=1,Cancel=0)
PRINT=A("Are you ready ?")

  • GET -Get input values. The screen shows the window asking for data. The string in parenthesis sets the widow title. Many different values can be entered in the specified registers at the same time. Register names and data format are defined in the INIT section.
    (*) GET=("Enter value",R7,R8)

  • MARK - Set and get the marks (selection) of the current word. Address takes the value of ADR.
    (*) MARK=R1
    (*) R2=MARK

  • EXIT - End current section.

  • VCC - Power supply voltage control (on, off, set):
    (*) VCC=1 ? turn on
    (*) VCC=0 ? turn off
    (*) VCC=3000 ? set the voltage to 3,0 V (value in mV)

  • IDISABLE/IENABLE Disable/Unable interrupts. Used for the time critical operations.

More detailed information on the language implementation can be found in *.hpl files included with the programmer.


FileType

File types

BIN - binary data file

ROM - binary data file

EEP - binary data file

HEX - Intel HEX

E2P - PonyProg format file

DIZ - description file

HPL - algorithm description in HPL language HPL - algorithm description in HPL language

HPX - encoded HPL file


descriptions

Description file

Descriptions are the text files named as work files with file name extension *.diz. Description file is saved and loaded at the same time as the main file. "Description file" tag in the program options should be set in order to work with descriptions.


ISP Adapter

ISP adapter for in-circuit read and write EEPROMs with Orange3, Orange4, OrangeSE programmers.
Adapter óñòàíàâëèâàåòñÿ placed to extension programmer's connector.
For work in ISP mode select in menu "Options" - "Device" "ISP adapter On".

Connect EEPROM:
I2C: Z0:SCL, Z1:SDA
MW: Z1:DO, Z2:CLK, Z3:DI Z4:CS
SPI: Z1:SO, Z2:SCK, Z3:SI Z4:CS

ISP adapter connector

1 - GND | 2 - Z0 | 3 - Z1 | 4 - Z2 | 5 - Z3 | 6 - Z4 | 7 - Z5 | 8 - VCC
9 - GND | 10 - Z6 | 11 - Z7 | 12 | 13 | 14 | 15 | 16


HardWare

Orange programmer sockets

SOCKET1 - I2C

VCC

P2 P0 P1
P3 P4 P5 GND

SOCKET2 - SDA

- GND - P0
GND P2 VCC P1

SOCKET3 - MW

VCC | P4 | P3 | GND
P2 | P0 | P1 | P5

SOCKET4 - MWR

P3 | GND | P5 | P1
P4 | VCC | P2 | P0

Programmer external connector

1 - GND | 2 - P0 | 3 - P1 | 4 - P2 | 5 - P3 | 6 - P4 | 7 - P5 | 8 - VCC
9 - GND | 10 - P6 | 11 - P7 | 12 - P8 | 13 - P9 | 14 - P10 | 15 - P11 | 16 - P12

Omega SE programmer sockets

Programmer has one 16-pin socket. All devices with 8 pin connector are to be installed in the left part of the socket. The right part of the socket can be used to install SOIC8DIP converter for Microwire Rotated (MWR) devices.


FAQ

Frequently Asked Questions
for Orange programmer

Version 1.9 (05.10.2004)

Q: What is “Force write” option and how to use it?
A: When “Force write” option is set, the first read is bypassed and the whole buffer is written. Only the blocks where the content is different from the buffer are overwritten. Sometime it gives considerable time savings during the write.

Q: What is the difference between "Verify during write" and "Verify after write"?
A: The first makes the test read after every word, the second – after all memory is written. "Verify after write" is more reliable, but "Verify during write" will reveal sooner the errors during write. There is no need to set both options at the same time.

Q: Why Orange swaps high and low bytes while writing the file for 93с46 and other 16-bit EEPROM?
A: As opposed to some other programmers, Orange uses Intel-like format (low byte at low address). It is more justified in this case and is confirmed by the fact that the devices having both 8 and 16 bit modes are read the same way. If you are not satisfied, there are 3 ways to correct the behavior:
1) Set swap bytes in the file options. It is not recommended to use such mode for the compatibility reasons.
2) Use “Swap bytes” command, it works in the buffer.
3) Modify the corresponding HPL.

Q: My module XX with EEPROM YY manufactured by ZZ does not work, what is to be done?
A: 1) Make sure the programmer is working properly.
2) Try to verify the device on another programmer.
3) Compare the module I/O algorithm with the manufacturer recommendations. The same EEPROM types from different manufacturers can be quite different.

Q: How can I make my own HPL module and add it to menu?
A: Make sure first it does not already exist :)

  1. Find out EEPROM pinout – if it is the same as some existing device, take it as a prototype, and otherwise start from scratch. Do not forget to make the backup copy first before edit any module. Next choose the new module name. As a rule there are many EEPROM of different capacity with compatible set of commands. It is recommended to use the name of the EEPROM with the largest capacity. For example the group 24C04 (512x8), 24C08 (1024x8), 24C16 (2048x8) will get 24C16.HPL as the best name. All modules are stored in \HPL directory.
  2. Add new module to menu. Insert the new description line into Orange.cfg, for example: CHIP=93C46,64x16,93C46.hpl. EEPROM name, capacity, module name.
  3. Describe INIT section. If output pinout is not standard, set the parameter SOCKET=0 and let the author know about it – he will include the output table in the next version of the driver and will assign the number. Describe the programmer outputs and the corresponding device input pins. Set CDELAY parameter, it will control the maximum clock frequency. It is not recommended to make too many experiments to minimize the parameter – the real time delay depends on CPU speed and LPT port performance. The manufacturer recommended value is the best choice.
  4. Create [INIT] and [END] sections if needed, describe the initial settings as well as the actions after power on and before power off events.
  5. Describe [READ] section. It includes usually command generate loop, one or more loops to generate the address and a loop to read the data.
  6. [WRITE] section is to be done after the READ is implemented and debugged.

Q: What is the general purpose of user sections and what am I supposed to do with them?
A: To perform “non standard” operations. Remove, read/write of additional registers as an example.

Q: What is "Pin Tester"?
A: It is the mode to manually set/test the pins. It is useful to setup the programmer. It can also be used to verify different devices.

Q: Why Orange2 modules can not work with Orange3?
A: Programmer schematics are a little bit different from Orange2. In the old version Microwire and SPI interfaces used the common data bus, DI and DO where connected through a resistor. Orange3 uses an additional pin for data input. Compatibility is achieved by a transparent redirection of the queries in the driver. Correct set of SOCKET parameter in the module is required.

Q: Lock bits are not cleared for AT90S2313 device.
A: 1. If the serial programming mode is disabled, it could be done using the parallel programmer only.
2. Try to clear at lower power supply voltage (4.0...4.5V), this is a bug acknowledged by Atmel.

Q: Read and Write for 93c46 (..93c86) devices do not work in SOIC8 case.
A: These devices are manufactured in two pinout versions MW и MW-R. You can find out the device type from the included documentation or check the power supply pin connection in the unit.

Q: How to get Orange split one file in two different files with even and odd bytes?
A: Load file (Open File), select even bytes (Buffer - Select - Even), save the selected block (File - Save block), select and save odd bytes the same way.
Select and Load commands can also be used to merge two files in one.