Driver:INTELLEC 4
INTELLEC® 4/MOD 40
The INTELLEC 4/40 is an Intel MCS-40 (4004/4040) development system with interactive debugging features. MAME provides built-in artwork showing the state of front panel LEDs and switches. All switches are clickable. Due to the large number of switches and potential clashes with keys used for typing monitor commands into the terminal, most switches don't have keys assigned by default. However, a few switches do have default keyboard mappings.
Front Panel Controls
The front panel controls can be used for a number of debugging tasks, including stopping the CPU and stepping one instruction at a time, checking whether conditional branches are taken, and editing program storage RAM.
LEDs
- STATUS LEDs:
- SEARCH COMPLETE indicates that the selected address has been accessed the desired number of times and the display is frozen
- RUN indicates that the CPU is running (i.e. not currently acknowledging stop/halt condition)
- POINTER VALID indicates that a SRC instruction has been detected since the last time search mode was entered and the LAST RAM/ROM POINTER LEDs are valid
- MODE LEDs: indicates the currently selected program storage - MONitor ROM, console RAM card, or PROM card
- ADDRESS LEDs: show the opcode address accessed by the CPU, or the selected address in CMA mode
- INSTRUCTION LEDs: show the opcode accessed by the CPU, or data at the selected address in CMA mode
- EXECUTION LEDs: show the data on the bus during the X2 and X3 instruction phases (X2 is the value read/written for I/O instructions)
- ACTIVE BANK LEDs: show the state of the CM-RAM chip select signals during the A3 instruction phase
- LAST RAM/ROM POINTER LEDs: shows the address output by the most recent SRC instruction
Switches
- ADDRESS/DATA switches: used for entering search addresses, or RAM addresses/data in CMA mode
- All toggle switches, most significant bit on the left
- All switches used for addresses, rightmost eight switches used for data (7-0)
- MODE CONTROL switches: used to switch program storage and reset the system
- All momentary switches, mapped to keypad 1, 2 and 3 by default
- PASS COUNTER switches: used to set the number of times the selected address should be passed over before freezing the display in search mode
- All toggle switches, most significant bit on the left
- SEARCH ADDRESS CONTROL switches: used to select an address for search mode or CMA mode, and to control search mode features
- RUN and NEXT INST are toggle switches
- DECR, INCR and LOAD are momentary switches, mapped to keypad minus, plus and enter, respectively
- STOP and SINGLE STEP switches: used to stop the CPU and step the program one instruction at a time
- STOP is a toggle switch, mapped to keyboard left arrow by default
- SINGLE STEP is a momentary switch, mapped to keyboard right arrow by default
- CMA switches: used to examine/modify the content of console RAM
- CMA ENABLE/DISABLE is a toggle switch
- CMA WRITE is a momentary switch, mapped to keypad slash by default
- RESET CONTROL switches: used to reset the system, and choose whether 4002 RAM memory/status is cleared on reset
- RESET is a momentary switch, and MODE is a momentary switch
Reset Control
The RESET MODE toggle switch controls whether 4002 RAM chips are cleared (filled with zero) when the CPU (4040) and memory controller (4289) are reset. When set to CPU, only the CPU and memory controller are reset; when set to SYSTEM, the CPU and memory controller are reset, and 4002 RAM memory/status is filled with zero. This affects the front panel RESET and MODE CONTROL switches, and also the user reset line from universal cards.
When pressed, the momentary RESET switch resets the CPU and memory controller, and also cleared 4002 RAM memory/status if the RESET MODE switch is set to SYSTEM. This switch generates a pulse when pressed, holding it on will not hold the system in RESET state. This switch will not generate a reset pulse if you're holding any of the MODE CONTROL switches on, or a universal card is asserting the user reset line.
Note that the RESET switch, the MODE CONTROL switches and the user reset line from universal cards don't affect the contents of the console RAM card. Programs/data stored in the console RAM card are preserved when the CPU is reset or 4002 RAM is cleared.
Program Storage Mode Selection
The INTELLEC 4/40 has three 4KiB program storage spaces: onboard monitor PROM, 4KiB console RAM card, and PROM space. The onboard monitor PROM uses 1KiB of its 4KiB space. It's possible to install universal cards that place code in the other 3KiB, but it's practically useless because the monitor provides no way to read or jump to such code. There's nothing in the PROM space by default, but universal cards can map code here.
Pressing any of the three MODE CONTROL switches, MON, RAM or PROM, selects the respective program storage space and resets the CPU (4040) and memory controller (4289). If the RESET CONTROL MODE switch is set to SYSTEM, the 4002 RAM chips will also be cleared (filled with zero). Execution will start from address zero in the selected storage space. The front panel search/capture state is also reset, and universal cards may respond to the CPU reset signal.
The MODE CONTROL switches are all momentary, and are mapped to keypad 1 (MON), keypad 2 (RAM) and keypad 3 (PROM) by default. Pressing two MODE CONTROL switches at once will result in no program storage being mapped (the CPU will execute from unmapped reads). The switches generate a reset pulse when pressed, holding them won't hold the system in reset state. The MODE CONTROL switches won't reset the system if you're holding the RESET switch on or a universal card is asserting the user reset line.
Front Panel Debugging
Stop/Run/Single Step/Halt
Turning the STOP switch on stops the CPU, and turning it off allows the CPU to run. While the STOP switch is on, pressing the SINGLE STEP switch allows the CPU to run for a single instruction and then stops it again, allowing you to step the program one instruction at a time. By default, the STOP button is mapped to the keyboard left arrow, and the SINGLE STEP switch is mapped to the keyboard right arrow. The STOP toggles, and the SINGLE STEP switch is momentary.
If the running program stops the CPU with a HLT instruction, you can resume it from the front panel by turning the STOP switch on and then off again. Universal cards can also stop the CPU, there is no way to override this from the front panel. The RUN LED will be turned off for stop/halt conditions caused by the STOP switch, universal cards requesting stop, or the HLT instruction.
If the front panel display is not frozen and CMA mode is not selected (SEARCH COMPLETE LED off and CMA switch set to DISABLE), the ADDRESS LEDs will show the address of the next instruction to be executed, and the INSTRUCTION LEDs will show the opcode (M1 = OPR, M2 = OPA). Note that this is the next instruction that will be executed after the the CPU resumes, not the last instruction executed before the CPU stopped.
Search Mode
Search mode allows you to capture certain information when the CPU executes a selected address. This can be used to show a value read from or written to memory or I/O, show whether a conditional branch is taken, or simply to determine whether a certain address is being executed or not.
To use search mode:
- Ensure the RUN toggle switch is off (down) and the CMA toggle switch is set to DISABLE.
- Enter the capture address in binary using the twelve ADDRESS/DATA toggle switches, most significant bit on the left (up = 1, down = 0).
- Enter the number of times to pass over the address before capturing and freezing the display in binary using the PASSES switches, most significant bit on the left (up = 1, down = 0). For example, if you enter 6 using the passes switches (3 off, 2 on, 1 on, 0 off), the front panel indicators will be frozen when the 7th time the selected address is executed.
- Turn the NEXT INST toggle switch off (down) to capture the instruction cycle when the selected address is executed, or on (up) to capture the instruction cycle immediately after the selected address is executed.
- Press the momentary LOAD switch (mapped to keypad enter by default) to load the selected address and start the search.
- While the search is in progress:
- SEARCH COMPLETE LED will be off
- ADDRESS, INSTRUCTION, ACTIVE BANK and EXECUTION LEDs will update on each instruction cycle
- LAST RAM/ROM POINTER LEDs will update each time a SRC instruction is executed
- POINTER VALID will initially be off, and will be lit the first time a SRC instruction is executed after the search is started
- When the search completes:
- SEARCH COMPLETE LED will be on
- ADDRESS LEDs will show the ROM address accessed when state was captured
- INSTRUCTION, ACTIVE BANK, EXECUTION, LAST RAM/ROM POINTER and POINTER VALID will show the state when this address was executed
Search mode is disabled when the RUN switch is on or the CMA switch is set to ENABLE. The search will be restarted any time you change the selected address using the DECR, INCR or LOAD switches, or any time the CPU is reset using the MODE CONTROL or RESET switches, or when a universal card asserts the user reset line.
Example: showing value read/written
Search mode can show the value read from/written to RAM or I/O by an I/O group instruction (OPR = 0xE, or RPM instruction).
- Enter the address of an I/O instruction using the ADDRESS/DATA switches.
- For example in the monitor PROM, the RDR instruction that reads the high nybble when examining console RAM is at address 0x183
- Enter the number of times to pass over the instruction using the PASSES switches, or turn them all off to capture the first time the instruction is executed.
- Turn the NEXT INSTRUCTION switch off.
- Press the LOAD switch to load the address and start the search.
- Do whatever it is that causes the CPU to execute the selected instruction the required number of times.
- For example the monitor program will read program memory when you use the D and S commands
- The search will complete, showing the following information:
- SEARCH COMPLETE LED on
- ADDRESS LEDs showing the selected address
- INSTRUCTION LEDs showing the OPR/OPA codes for the I/O instruction
- EXECUTION X2 LEDs showing the 4-bit value read/written
Example: showing location/value of indirect fetch
Search mode can show the ROM location accessed by a FIN (fetch indirect) instruction, and the value read.
- Enter the address of a FIN instruction using the ADDRESS/DATA switches.
- Enter the number of times to pass over the instruction using the PASSES switches, or turn them all off to capture the first time the instruction is executed.
- Turn the NEXT INSTRUCTION switch on.
- Press the LOAD switch to load the address and start the search.
- Do whatever it is that causes the CPU to execute the selected instruction the required number of times.
- The search will complete, showing the following information:
- SEARCH COMPLETE LED on
- ADDRESS LEDs showing the ROM address the FIN instruction loaded data from (contents of R0R1 pair when FIN was executed)
- INSTRUCTION LEDs showing the byte value loaded by the FIN instruction
Example: showing whether a conditional branch is taken
Search mode can show whether a conditional branch is taken or falls through by showing the address/opcode of the instruction executed immediately after the condition branch (JCN or ISZ) instruction.
- Enter the address of the second byte of a conditional branch (JCN or ISZ) instruction using the ADDRESS/DATA switches.
- For example in the monitor PROM's routine for printing a nybble as a hexadecimal digit, there is a JCN that is taken if the value is less than 0xA at location 0x0CF; to capture the result of this branch, enter the address 0x0D0 (address of the second byte of the instruction)
- Enter the number of times to pass over the instruction using the PASSES switches, or turn them all off to capture the first time the instruction is executed.
- Turn the NEXT INSTRUCTION switch on.
- Press the LOAD switch to load the address and start the search.
- Do whatever it is that causes the CPU to execute the selected instruction the required number of times.
- For example the monitor program prints hexadecimal data when you use the D and S commands
- The search will complete, showing the following information:
- SEARCH COMPLETE LED on
- ADDRESS LEDs showing the location of the next instruction executed
- With the monitor PROM example given, this will be 0x0D1 if the value is 0xA or greater (fell through), or 0x0D3 if the value is 0x9 or less (branched)
- INSTRUCTION LEDs showing the OPR/OPA codes of the next instruction executed
- With the monitor PROM example given, this will be 6/2 if the value is 0xA or greater (fell through), or B/3 if the value is 0x9 or less (branched)
Console Memory Access (CMA) Mode
Console Memory Access (CMA) mode allows you to examine/edit the 4KiB of program storage on the console RAM card using the front panel switches. To use CMA mode, flip the CMA switch to ENABLE (this is a toggle switch). In CMA mode, the ADDRESS LEDs always show the currently selected address, and the INSTRUCTION LEDs show the current data at the selected address in RAM.
To set the selected address, enter it in binary on the twelve ADDRESS/DATA switches (most significant bit on the left, up = 1, down = 0), and press the LOAD switch (mapped to keypad enter by default). You can also decrement or increment the selected address by one with the DECR and INCR switches (mapped to keypad minus and keypad plus by default, respectively). The ADDRESS/DATA switches are all toggles, while the DECR, INCR and LOAD switches are momentary.
To change a value in RAM, first ensure CMA mode is enabled and the desired address has been selected. Enter the desired value on ADDRESS/DATA switches 7-0 (the eight rightmost ADDRESS/DATA switches, up = 1, down = 0), and press the CMA WRITE switch (momentary, mapped to keypad slash by default). The INSTRUCTION LEDs will update to reflect the new value.