Q-Chess 1.0 is a chess program for the KIM-1, from around 1980. The programs requiresa a memory expansion of 8K at $2000.
The chess board is displayed at a TVT-6 (Don Lancaster) video display alongside the KIM LED Display and Keypad.
In 1981 Fer Weber, a member of the Dutch KIM User Club published an adaptation to use the program with a (video)terminal attached to the KIM TTY interface in the Dutch magazine the KIM Kenner Issue 17.
Binaries on tape and the documentation of Q-Chess were acquired in 1981 from Fer.
In March 2025 Hans Otten translated the source of the adaptations from Dutch to English in TASM format.
This makes Q-Chess playable again!
Category Archives: pal-1

KGN COMAL
COMAL is an interpreted structured language. A version for the KIM-1, Junior and DIS65 is available, distributed by the KIM Gebruikers Club Nederland as KGN COMAL in the 80ties.
KIM-1 version March 2025 by Hans Otten.
KGN COMAL V1 for the KIM-1 and clones, Elektor Junior and DOS65.
A product distributed and adapted to the Junior by the KIM Gebruikers Club The Netherlands in 1985-1987.
KGN COMAL V1.0 is for the enhanced Elektor Junior.
KGN COMAL V2.1 is for the DOS65 system.
In 2015 I saved KGN COMAL 1.0 and 2.1 binaries from Junior tapes and DOS65 disks.
With DOS65 came a very compact COMAL user manual.
In the Club Magazine KIM Kenner a Amazing Maze program is found.
Based upon these binaries and documents KGN COMAL is adapted to the KIM-1.
In this archive:
– KGN COMAL V2.1 DOS65
– binary as DOS65 program
– binary stripped, DOS65 preamble removed, binary only
– KGN COMAL
– Junior binary (load at 2000, start at 3000)
– comal junior dis.txt A partial disassembled and commented source of KGN COMAL Junior
– KGN COMAL KIM-1
– papertape of KGN COMAL KIM-1 (loads at 2000, start at 3000)
– binary of KGN COMAL KIM-1 (loads at 2000, start at 3000)
– User manual
– KGN COMAL User Manual
New, written in March 2025. Based upon the Dutch COMAL manual and observation made with the COMAL interpreter.
Word and PDF versions
– scans of the original material
![]() | KGN COMAL User Manual | ![]() | KGN COMAL partial disassembly |
See also:
PAL-2
Part 4 Sorbus runs Wozmon, Apple 1 Basic, MCP
Sorbus computer part 3: the hardware
Sorbus computer (part 2)

PAL-2
4 february 2025 2025 I have built the PAl-2 kit, now designing and building a I/O card.
This information is based upon the available documentation: User manual, Schematic, BOM.
The PAL-2 is for sale by Liu Ganning at Tindie
On this page:
- What is a PAL-2?
- My PAL-2 kit #1
- Schematic
- User manual
- RAM decoding
- Internal and external ROM
- DIP Switches
- Application and Expansion connectors
- Power Supply
- Expansion
- Cassette Audio interface
- Physical Dimensions
Just followed the interactive BOM, passive components first, ICs last.
Nothing special to note, compare yours with the photo on the PAL-2 Tindie site.
Orientation of IC sockets and IC’s, check twice!
Check your soldering joints, not too much sodler, but covered with the right color solder.
And the three slider switches,: the SST keyboard one has a higher slider that the other two!
Please be careful with the Dupont power cables, double check the polarity! If in error: magic smoke!
I do not like the Dupont wires for power, serial, TTY switch. Too easy to make a mistake in the power connection.
I am now designing and building a simple I/O card for the Application connector, experimenters print, point to point wires, male pin connector to PAL-2, on board female connector for USB to Serial, power switch, TTY/Keypad switch.
That may grow later to SD or 1541 or Corsham SD card interfaces.
Video of PAl-2 #4, by Nils, running!
What is a PAL-2?
The PAL-2 is a kit for an SBC in the now large family of KIM-1 clones. Ranging from the Micro-KIM to the PCB exact replica by Eduardo Casino, all share the KIM-1 ROMs, LED display and TTY interface and the 6532 RIOT instead of the 6530 RRIOT.
What makes the PAL-2 unique:
- It is a real and complete KIM-1 clone.
- Available as a DIY kit with high quality components.
- The layout is close to the KIM-1.
- The good looking keypad is very close to the KIM-1
- Application and Expansion connector with all relevant KIM-1 signals.
- Lots of RAM in many configurable options.
- Both RRIOTS 6532 on board.
- TTY interface on TTL level, USB to TTL adapter included in the kit, quality serial!
- Power can come from the USB to TTL adapter or from external 5V supply (same as for the KIM-1)
The PAL-2 differs from a KIM-1
- No Audio cassette interface for file I/O circuit, but see below for a solution
- Application and Expansion connector as 22×2 pinheader instead of PCB edge connectors
- The signals on the Application connector are not all identical: no audio, TTY instead of 20 mA loop, decoding lines added
- Not the same size PCB
The PAL-2 differs from the PAL-1:
The many quality improvements and enhancements make the base PAL-2 kit more expensive then a base PAL-1 kit.
If you expand the PAL-1 to the level of a PAL-2 you need to spend money on a motherboard, a RAM 32K, a second RRIOT kit, an RS232 cable and gender changer and a 9V power supply.
- Improved keypad, with labels and look of the KIM-1
- No need for a Motherboard
- No external RAM module required
- No external RRIOT required
- E000-FFFF can be used freely from ROM expansion
- The vectors (Reset, NMI, IRQ) can be placed in external ROM.
- Looks a lot more like a KIM-1
- Complete Application and Expansion connector
- TTY on TTL level instead of (not standard) RS232
![]() |
PAL-2 User Manual |
RAM decoding
The PAL-2 has a very flexible RAM memory layout, as shown in the next parts of the schematics:
Internal ROM and external ROM
The PAL-2 has a 2K ROM with the KIM-1 monitor. Since there is no audio in and out circuitry, the ROM from 1800-1BFF could be used for other programs, like the KIM Clone by Corsham Technology (Which also did not have the audio circuitry). The 28C16 is easy to program.
One of the first expansions that is to be expected is an external 8K ROM. The decoding for this ROM, e.g. an 28C64 is already present on the connectors and in the decoding circuit.
The decoding signals are 8K7_SELECT (CE on 28C64) and 8K7_ROM (OE on 28C64). Just the 28C64 IC has to be connected to address and data lines.
DIP Switches
The PAL-2 has a full 64K address decoder onboard, while the KIM-1 has only a 5K onboard address decoder for expansion. These two DIP switches on the PAL-2 are designed both to expand the KIM-1’s RAM and to maintain compatibility with its basic configuration.
On the PAL-2, the 4-bit DIP switch enables the onboard K1 to K4 RAM spaces, with each bit controlling 1K of memory. The K1 to K4 naming follows the definitions in the KIM-1 user manual, covering the address range from $0400 to $13FF. If all four DIP switches are set to ON, the entire 5K RAM space becomes available to the system.
The 8-bit DIP switch controls the “big segment decoder,” with each bit corresponding to an 8K memory block. These blocks range from 8K0 to 8K7, with 8K0 ($0000 to $1FFF) being the KIM-1’s default occupied address space. Since the PAL-2 is a KIM-1 replica, if you want to use it as a KIM-1 system, 8K0 must be set to OFF to allow the onboard KIM-1 logic to function. However, if you’re building a completely new system on the PAL-2, you can set 8K0 to ON to bypass the KIM-1’s onboard logic for the lowest 8K of memory.
The 8K1 block starts at $2000, controlling an 8K space beyond this address, and so on. If a bit is set to ON, the KIM-1 system will be able to access the corresponding address space, which will function as RAM. If a bit is set to OFF, the KIM-1 system will still work, but with reduced available address space. When performing expansion or add-on modifications on the PAL-2, you may need to disable certain address spaces to prevent the onboard logic from accessing the RAM chip.
The 8K7 block, representing the highest 8K memory segment, offers additional flexibility on the PAL-2. If 8K7 is set to ON, you can choose how to use this space—either as RAM or ROM—by adjusting the 8K7 SEL switch. For example, if you write a program (such as a tiny OS for the KIM-1) and burn it onto a ROM chip—similar to the well-known Jim’s ROM (but smaller)—you can connect the ROM to the PAL-2 (with some additional hardware, which is still under development). To boot from your ROM chip, use the VECTOR SEL switch to select ROM, allowing the system to retrieve the top three vectors from the ROM chip instead of the onboard KIM-1 ROM.
Application and Expansion connectors
Differences on the Application connector with the KIM-1:
- AUDIO IN -> 8k7_SELECT
- AUDIO OUT LO -> 8K7-ROM
- TTY in and out now at TTL level for USB to TTL converter
- TTY PTR and KYBD, +1wV, AUDIO OUT LO not connected
This means, even if the edge to pin connector issue is solved, the standard KIM-1 I/O boards will not work for TTY and audio.
The expansion connector is identical to the KIM-1.
Power supply
Power has to be applied in the standard KIM-1 manner to the application connector Pin 1 = GND, pin A = 5V.
Note that reversing these pins will mean the dead of the PAL-2!
As a first suggestion for a PAL-2 extension I see a board connected to Application and Extension connectors with:
- Power switch
- 28C64 (or bigger, switchable in 8K chunks) EEPROM
- Connector for the USB to TTL
- External power connector, switchable between this and USB to TTL connector
- TTY/LED keyboard switch
- connector for the Application I/O ports PA0-PB7
- Power switch
- Pin connector for PAL-1 Cassette Interface audio board
- Further expansion with 6522/6850/6551
Optional:
The excellent expansions by Bob Applegate for the Corsham clone will be a good inspiration, like 6522/6850 I/O board, breadboard board, motherboard.
The KIM-1 has hardware and software in the 6530-003 ROM to save and dump files on audio tape.
Not used by most KIM clone users, so it is not present on the Corsham KIM Clone and the PAL-2.
But it is possible to have the audio in/out with one patch wire between pin 11 of U12D and the application connector!

KIM-1 Audio and TTY circuit

PAL-2 Audio and TTY circuit
On the KIM-1 circuit you can see the audio I/O is seen by the CPU at pin PB7 of the 6530-003. It is either an input or an output under control of the audio routines in the ROM.
The U26 (also present on the PAL-2 as U12d) is an open collector NAND feding PB7. On one input of U26 is PB5 from the 6530/32 (inverted by U16 (KIM-1_ or U10D (PAL-2), on the other is the output of the audio circuit generating TTL pulses from the audio sound input. This way PB7can be used both as input and output.
The PAL-2 and the KIM-1 has on the extension connector the signal PLL(_TEST), which is connected to U126/U12D. This is on the KIM-1 the output of the audio circuit.
So we have audio in (at TTL level) on the PAL-2 covered!
Audio out is available at PB7 at TTL level. With a patch wire between PB7 (or pin 11 of the U12D) to the application connector.
With the PAL-1 Cassette interface we can have the PAL-2 read and write KIM-1 audio cassette files this way. PLL_TEST to TAPE and a wire from PB7 to PB7 is all you need to connect to the Cassette Interface (and GND and +5V ofcourse).
Leaving R9 out of the Cassette Interface may be a good idea, there is already a pullup in the PAL-2 of 1K.
The connector on the PAL-2 is a 2.54 mm pitch 2×22 female pin header connector.
The dimensions of the PAL-2 PCB are 168 mm x 218 mm.
Next two images show the connector, first shows the distance between the two connectors, while the second shows the distance from the PCB edge to the connector’s outer side.
See also:
KGN COMAL
6530 hardware emulator in FPGA in 40 pin DIP
Part 4 Sorbus runs Wozmon, Apple 1 Basic, MCP
Sorbus computer part 3: the hardware

Instant Assembler for the KIM-1
A program by Alan Cashin.
The following text and other files are by (the ‘I’) Alan Cashin.
Here an archive with all sources and binaries and images
I am currently looking through old material that has been in storage for many years. I came across a listing of my ‘instant assembler’ written for the basic KIM-1 with 1kB (plus a bit) memory. It was written in about 1979 to help enter assembler programs, saving the task of converting mnemonics to hex code. The tape with it on is long gone, so I coded it for the acme assembler then ran it in your excellent simulator and it works.
The acme assembler was retrieved from https://web.archive.org/web/20150520143433/https://www.esw-heim.tu-clausthal.de/~marco/smorbrod/acme/ – there is a later version (I believe) in GitHub.
Because there was not much memory, it is small, around 350 bytes (actually smaller as it has an unused block in the middle, which could be the stack if loaded into page 1 or the data bytes if loaded into page 0). It is in 2 parts, a code page around 240 bytes and a set of lookup tables around 100 bytes. It also uses a number of ROM subroutines and it uses the monitor data area as its data area.
It has one failing – no error checking. There was a version that didn’t place the instructions into memory, but passed them to a disassembler. If the original input and the disassembled instruction didn’t match, then it was an error. I don’t have the listing for it.
I’ve included a screen shot run in the emulator. The first entry usually is *<4 hex address>
An instruction is entered as mnemonic (e.g. STA). If it is an immediate (TXS PHP etc) the byte is immediately put in memory. If there are different address modes, the cursor moves to accept the operand, entered as
For conditional branches enter the absolute 4 hex address, it is converted to an offset address
The other possible inputs are:
/ ... return to KIM < ... cancel this line (after making a typing error for instance) #<2 hex> ... a data byte
There may be original documentation but I haven’t found it. I also don’t remember how I got the listings as they were created over 40 years ago. As I recall, I wrote the assembler with the code in page 0 and the tables loaded into the 6530 RAM ($1780 – $17E6). This made sense as people didn’t ordinarily put code in page 0. I found part of a printout with the code in page 0, probably done when the assembler was first entered. There’s also a more complete disassembly that includes the tables, written to load at $2000. I don’t know how that happened as the original KIM-1 purchase didn’t have extra memory. But that is the listing I used to create the source. I didn’t own the KIM-1, it was owned by a group. I bought an Ohio Superboard a year later so did most programming with it.
The assembler is now just a curiosity, there are much easier ways of creating 6502 programs. But in those days the first programs (including the instant assembler) were created in several steps:
1. Write the program as if it were for a proper assembler, with labels for data and program locations.
2. Go through the written version allocating addresses to everything (not hard if one counts in hex and knows the length of the instructions)
3. Substitute real addresses for all the labels
4. Work out relative offsets for all the branch instructions (not so easy)
5. Translate all the op codes to hex (tedious)
6. Enter the hex
7. dump the memory to tape
The instant assembler took the information prepared in stage 3 and allowed it to be entered, so saving steps 4,5,6
The assembler uses tables to convert the mnemonic to a binary op code.
1. Each character of the mnemonic is used to access the character table (25 bytes as Z is not used). Each byte in the table has three components, 2 bits, 3 bits, 3 bits – |cc|aaa|bbb| for the mnemonic abc – these are used to create an index into a second table – the index is aaa000+bbb+cc which yields a unique number between 0 and 61 for each mnemonic. This took a lot of juggling to make work.
2. The number is used as an index to look up the base op code. Implied instructions can only be one byte (TAX, PHA, etc) so the assembler does not expect an operand and goes directly to output the op code
3. For instructions that have an operand, a second index is required. The operand can only have a limited set of characters – , # ( ) X Y or hex. These are given values:
, -> 0 (can be left out)
# or a hex digit -> 1
( -> 2
) or X -> 3
Y -> 4
By adding up the value for each part of the operand, a unique index is created. hh=2; #hh=3; hhhh=4; hh,X=5; hh,Y=6; hhhh,X=7; hhhh,Y=8; (hhhh)=9; (hh,X)=10; (hh),Y=11
Some instructions can have an operand or not (eg ROL). If there is no operand, the index is 0.
There are exceptions so there is more manipulation to get the final index. The index is used to look up a modifier to the base op code to get the final op code.
4. The bytes placed into memory for most instructions are (2+hex digits input)/2. Relative branches are modified. If a data byte is input (using #hh) it is treated like an implied op code.
Also, I have tested the idea of writing the assembler in its own format – the assembler can assemble itself (overwriting itself as it runs). This is using the facility for console input from a file.
I’ve now gone through the source (for the acme cross assembler) and put in a lot more documentation. The cross assembler source could be set up to locate the binary anywhere. For no particular reason it is set up to load at 0x0200.
A simple “Hello World” that can be input to the console after 0200 G – assembles then runs it at 0100
*0100 JSR1E2F LDX#0C LDA0110,X JSR1EA0 DEXBNE0102 JMP1C16 #21#64#6C#72#6F#57#20#6F#6C#6C#65#48/0100 G
The source of the Instant assembler (included in the archive above):
*= $0200 ; set program counter !to "org0200.o", plain ; set output file and format ; define some KIM-1 ROM addresses open = $1fcc crlf = $1e2f prtpnt = $1e1e outsp = $1e9e getch = $1e5a getbyt = $1f9d prtbyt = $1e3b incpt = $1f63 pack = $1fac gokim = $1c16 jmp x200b ; convenience, start address same as load point x2003 jsr x20de ; gets a character and calls pack x2006 beq x2003 ; A=0 it was a hex character, try for another jsr open ; not a hex character, set current location to INL,INH x200b ldx #$ff ; set the stack empty txs jsr crlf ; CR LF print the current location and 3 spaces jsr prtpnt ldx #$03 jsr x20e6 stx $f5 ; x=0 on return, initial instruction length ldx #$03 stx $f6 x201f jsr x20d6 ; get a character cmp #'/' bne x2029 jmp gokim ; if /, return to monitor x2029 cmp #'*' beq x2006 ; if *, get a new location cmp #'#' bne x2037 ; if #, a data byte jsr getbyt jmp x20a5 ; assume it's an instruction - get 3 letters x2037 tay lda x2100-$41,y ; lookup pattern for character and x215f-1,x ; apply mask for 1st,2nd or 3rd character of mnemonic sta $f6,x ; save dex bne x201f asl ; a - got 3 characters, create index into instructions rol ; a rol ; a adc $f8 adc $f9 tax lda x2119,x ; get the basic instruction code sta $f7 ldx #$02 and #$05 ; work out what type lsr ; a sta $f4 ; instruction modifier lookup sta $f5 bne *+4 bcs x209f ; an immediate - go to output pha jsr x20e6 x2061 jsr x20de bne *+4 inc $f5 ; final instruction length ldx #$07 x206a cmp x2157,x ; possible operand components (X, Y, brackets etc) bne x2077 txa lsr ; a adc $f4 ; add to modifier lookup sta $f4 bne x2061 ; if a legal component was found, get more x2077 dex bpl x206a ; didn't match, try the next one pla bne x2087 ; convert absolute to relative address for branches lda $f8 sec sbc #$02 sec sbc $fa sta $f8 ; some instructions are not consistent - special processing x2087 ldx $f4 lda $f7 cmp #$34 bne *+4 ldx #$0d and #$08 beq x20a0 cpx #$0a beq x209f cpx #$05 bne x20a0 dex dex x209f dex ; modify base code according to address mode x20a0 eor x20c8-1,x eor $f7 x20a5 sta $f7 lda $f6 eor #$0f tax lsr $f5 jsr x20e6 x20b1 jsr outsp lda $f7,x jsr prtbyt ldy #$00 sta ($fa),y jsr incpt inx cpx $f5 bmi x20b1 x20c5 jmp x200b ; ; op code adjustment table x20c8 !8 $01, $04, $0c, $00, $0c, $08, $10, $10 !8 $18, $1c, $28, $04, $14, $00 x20d6 jsr getch cmp #'<' beq x20c5 rts x20de inc $f6 jsr x20d6 jmp pack x20e6 inc $f6 jsr outsp dex bne x20e6 rts ; !fill 17 ; character lookup table - x2100 !byte $32, $4b, $60, $97, $77, $00, $00, $00 !byte $1e, $00, $40, $1c, $00, $3a, $11, $d6 !byte $c0, $7e, $ad, $c3, $00, $c3, $00, $80 !byte $c1 ; ; base instruction patterns x2119 !byte $8b, $99, $9b, $44, $ab, $a9, $34, $bb !byte $30, $90, $b0, $d0, $50, $70, $10, $01 !byte $49, $24, $f0, $09, $69, $00, $05, $29 !byte $c6, $cb, $89, $e6, $e9, $c9, $46, $a5 !byte $00, $ae, $ac, $c5, $59, $19, $d9, $b9 !byte $ec, $cc, $00, $85, $e5, $86, $84, $79 !byte $39, $f9, $45, $00, $25, $06, $00, $00 !byte $65, $26, $66, $41, $eb, $61 ; lookup operand characters x2157 !byte ',', '#', 0, '(', $ff, ')', 'X', 'Y' ; masks used on data retrieved from character lookup x215f !byte $c0, $07, $38
I’ve included a scan of 1 page, the handwritten notes were made a long time ago. I think I was trying to figure the total bytes used including the monitor routines. Is it the smallest 6502 assembler written?
See also:
KGN COMAL
PAL-2
Part 4 Sorbus runs Wozmon, Apple 1 Basic, MCP
Sorbus computer part 3: the hardware
RetroSpy Technologies produces a range of retro (Vintage) hardware products that are of interest for the KIM-1/SYM-1/AIM 65 owner. Also the PAL-1 user may benefit from the products!
Retrospy is inspired by the Corsham Technologies products and since Bob Applegate is no more among us, produces similar/inspired products.
I bought several products from RetroSpy.
KIM-1 RAM/ROM Board
MOS 6530 Replacement for the KIM-1 SBC
PAL-1 Motherboard Expansion Kit
Bus extender
Other interesting KIM-1/AIM 65/SYM- related boards on the Retrospy shop:
AIM 65 I/O board
SYM-1 I/O board
SYM-1 SymDos I/O board
SYM-1/AIM-65 RAM/ROM board
KIM-1 I/O board
2532 to 2764 EPROM adapter
SD Card Storage System (like the Corsham one)
I should have bought he KIM I/O card also, for the 1541 connector, next time!
See also:
Focal-65 V3D for TIM and KIM-1
John Bell Engineering catalogs
New KIM-1 info and more
KIM-1 Simulator simple demo

KIM-1 RAM/ROM Board
I bought this assembled and ready to run board from Retrospy Technologies.
SMD technology, so small and of high quality.
Description from the Retrospy store:
The KIM-1 RAM/ROM board is a custom board than expands the memory of the KIM-1 single board computer.
Features
- Can provide 8k blocks of RAM or ROM between 0x2000 & 0xFFFF
- Fills in the KIM’s missing RAM between 0x0400 and 0x13FF
- 2 pages of DIP switch selectable ROM, upgradeable to 4 or 8 with a 39SF020 or 39SF040
- Includes a pre-programmed 39SF010 containing 2 pages of common KIM-1 configurations (Xkim for SD Card, Eduardo Casino’s Xkim with support for IEC/1541 drives)
- Backwards compatible with Corsham Technologies’ KIM-1 I/O Board
- Includes full color manual and 2×5 pin IDC cable.
Inspiration taken from a design by Bob Applegate of Corsham Technologies, LLC.
This board can be added to any KIM-1 system, but the easiest way to add it is with the Retrospy or Corsham I/O Board. This board comes with a ribbon cable that plugs right into the I/O Board with no mess. By default the DIP switches are set so your KIM will have 5K of RAM from $0000 to $13FF and from $2000 to $DFFF. The extended monitor is from $E000 to $FFFF.
For PAL-1 users with the PAL-1 Motherboard Expansion Kit
– the RAM RAM between 0x0400 and 0x13FF is already on the PAL-1 board, leave that open.
– The usual PAL-1 configuration has ROM at A000-B000, the PAL-1 ROMs are made for that location
– Without the KIM-1 I/O card, just put a Dupont male-female wire between Pin 10 of the “To KIM” connector to Decode Enable of a motherboard connector or K of a KIM-1 Connector expander.
See also:
KGN COMAL
PAL-2
Part 4 Sorbus runs Wozmon, Apple 1 Basic, MCP
Sorbus computer part 3: the hardware

PAL-1 Motherboard Expansion Kit

The PAL-1 connected to the PAL-1 Motherboard Expansion kit

Revison B with larger edge fingers
I bought this kit from Retrospy Technologies and built it to enhance my PAL-1.
Worthwhile to add not only a motherboard but also get KIM-1 Expansion and Application connectors!
Easy to build, high quality PCB, lots of points to solder with the six PAl-1 Motherboards connectors.
Description from the Retrospy store:
With this motherboard, you can connect up to 6 expansion boards to your PAL-1 at the same time. The motherboard also provides the Application and Expansion connectors found on the original KIM-1, enabling the use of original KIM-1 expansion boards.
NOTE: To do anything worthwhile with the Application connector you will need the PAL-1 2nd RIOT Expansion Kit.
Not all signals are routed to the Application and Expansion connectors because the PAL-1 doesn’t provide them, so there is no guarantee every expansion board will work. However, Corsham Technologies’ and RetroSpy Technologies KIM-1 I/O and KIM-1 RAM/ROM boards have been tested and are compatible.
Available signals on the Application connector:
+5V
GND
PA0-7 (with installed PAL-1 2nd RIOT Expansion Kit)
PB0-7 (with installed PAL-1 2nd RIOT Expansion Kit)
DECODE ENAB
Missing are KB Row 0-3, KB Col A-G, TTY KYBD + RTRN, TTY PTR + RTNR, AUDIO Out (lo, hi), AUDIO IN, +12V, K0-K5, K7
Available signals on the Expansion connector:
+5V
GND
A0-A15
D0-D7
SYNC
RDY
IRQ
NMI
RST
SST OUT
PHI2
R/W
/R/W
/PHI2
RAM/R/W
Missing signals are: K6, SST, RO (pin 38 of the 6502), Phi1 (pin 3 of the 6502), PLL Test. On Reb B Phi1 is also available.
The signals /R/W, /Phi2 and RAM R/W are regenerated with two logic IC’s, the (reverse engineered) circuit is show below. The circuit could be a bit simpler, 3/4 of the 74LS00 would suffice.
Add KIM-1 RAM/ROM boards
Any KIM-1 RAM/ROM board can be connected to the Expansion connector. The Retrospy KIM-1 RAM/ROM is an excellent one.
For the PAL-1 only the Decode Enable line has to be added. For exammple with one wire Dupont male-female cable, from a motherboard connector. Any RAM in the region 0-1FFF is already available on the PAL-1 itself and should not be enabled on a RAM expansion. And therefore no need for signals K1-K4, the chip select lines for that region.
This version of the expansion kit has some minor points to improve (2.2 will be a next version the designer told me):
– add Phi1, not used often but is available on the PAL-1 connector
– enlarge the PCB edge pads with some mm’s, KIM-1 boards detach now to easy
– the two logic IC’s can easily be replaced with one 74LS00, only one NAND port and two inverters are required

KIM-1 Expansion connector

KIM-1 Application connector


The circuit on the PAL-1 Motherboard Expansion
See also:
KGN COMAL
PAL-2
Part 4 Sorbus runs Wozmon, Apple 1 Basic, MCP
Sorbus computer part 3: the hardware

RetroSpy Technologies
RetroSpy Technologies produces a range of retro (Vintage) hardware products that are of interest for the KIM-1/SYM-1/AIM 65 owner. Also the PAL-1 user may benefit from the products!
Retrospy is inspired by the Corsham Technologies products and since Bob Applegate is no more among us, produces similar/inspired products.
I bought several products from RetroSpy.
- PAL-1 Motherboard Expansion Kit
- KIM-1 RAM/ROM Board
- MOS 6530 Replacement for the KIM-1 SBC
- Bus extender
Other interesting KIM-1/AIM 65/SYM- related boards on the Retrospy shop:
AIM 65 I/O board
SYM-1 I/O board
SYM-1 SymDos I/O board
SYM-1/AIM-65 RAM/ROM board
KIM-1 I/O board
2532 to 2764 EPROM adapter
SD Card Storage System (like the Corsham one)
I should have bought he KIM I/O card also, for the 1541 connector, next time!
See also:
KGN COMAL
6530 hardware emulator in FPGA in 40 pin DIP
PAL-2
Part 4 Sorbus runs Wozmon, Apple 1 Basic, MCP
KIM-1 projects by Eduardo Casino
Since early 2023 Eduardo Casino develops KIM-1 hard- and software. His goal is to replicate as much as possible the original hardware, and make it work. His journey started with an exact KIM-1 Replica.
On this page I present his designs (state of July 2024, the journey has not ended yet, so keep looking at all open hard- and software on github.
My first encounter with Eduardo Casino was this topic on the German forum64.de forum in early 2023
If you do not read German: Eduardo, from Madrid, Spain!, announces his project to replicate a KIM-1 Rev D with the exact layout and look and feel as the original, using hires photos, Inkscape and Kicad.
This is not the first KIM-1 replica, as you can see here. What makes this replica special is that it is an exact PCB
replica. With curved lines! Other replicas may have the same dimensions and look and feel but use the straight modern PCB lines design.
He set a high standard and het continues to amaze us with hardware designs and software around the KIM-1. read all about on the follwing pages:
MTU replicas and additions
K-1013 Floppy Disk Controller replica
KIM-1 Motherboard for MTU Cards
KIM-1 RAM/ROM Expansion Board for the MTU Backplane
KIM-1 Programmable Memory Board for the MTU Backplane
CP/M-65
Version for the K-1013
KIM-1/PAL-1 version
KIM-1 Software
K-1008
XKIM
1541 OS
See also:
KGN COMAL
6530 hardware emulator in FPGA in 40 pin DIP
PAL-2
Part 4 Sorbus runs Wozmon, Apple 1 Basic, MCP

MAE ASSM/TED CW Moser
MAE (Macro Assembler Text Editor) or ASSM/TED is a program sold by Eastern House Software for the KIM-1, Apple, PET, C64 and more 6502 based machines.
RAE was the name by Synertek for MAE, as ROMs for the SYM-1 which could be installed to add the Resident Assembler/Editor (RAE). Synertek contracted Eastern House Software to port their Macro Assembler/Editor (MAE) into an 8 KB ROM. AS you can see in the reconstructed source, the adaptations were not much more than adding the SYM-1 I/O such as character I/O and tape handling, the essence of MAE stayed as RAE. It was not that popular in the SYM-1 world, even Synertek used internally another assembler, with more MOS Technology compatible syntax.
The author of MAE and RAE, was Carl Moser. MAE was sold in various forms not only for the KIM-1 and SYM-1 but also for other 6502-based computers including Commodore, Atari, KIM, and Apple and in the Netherlands the Elektor Junior. Other forms of MAE included a cross assembler for 6800 and 8085.
Carl Moser and JR Hall were founders of Eastern House Software, the company that created several products for Atari 8-bit users, including Monkey Wrench and Monkey Wrench II, and the KISS word processor.
On topic on this site are the preserved KIM-1, SYM-1 and Elektor Junior versions. I have binaries, manuals and (reconstructed) sources for these versions for download.
Note that the manuals for the SYM-1 RAE are well written, and a good addition for the manuals of MAE.
On this page:
Catalogs and flyers Eastern House Software
![]() | Eastern House Software Catalog | ||
![]() | Eastern House Software Dealer Brochure | ||
![]() | EHS catalog 1985 | ||
![]() | EHS catalog | ||
![]() | EHS flyer | ||
![]() | EHS Gazette 1981-03 |
PC commandline tools to manipulate MAE/RAE files
To get text into and out of the ASSM/TED program on the 6502 computer to the PC world,one can use several methods.
Written in Freepascal. Sources included, can be compiled in Linux etc.
The first method is using a terminal emulator and upload a text file or catch the output of the ASSM/TED program.
That gives some problems, mostly related to missing line numbers, or too much blanks.
Strip Blanks
The output of ASS/TED to the screen contains many blanks. When you want to uplaod the captured output, those blanks have to go
D:\myfiles\MAE\PC tools&amp;gt;StripblanksMoser.exe V1.0 Strip blanks from captured ASSM/TED Moser source file V1.0 Hans Otten, 2024 Syntax: StripBlanksMoser &amp;lt;sourcefile with blanks&amp;gt; &amp;lt;output source file to upload to ASSM/TED&amp;gt; [Y] Y to overwrite outputfile without question asked
Add numbers
When you have a MAE/RAE source file without numbers, you can add those with this utility, increment of 10.
D:\myfiles\MAE\PC tools&amp;gt;AddNumbersMoser.exe V1.0 Add numbers 0001-9999 to source file to make a ASSM/TED Moser source file V1.0 Hans Otten, 2024 Add numbers 0001-9999 to ASSM/TED Moser source AddnumersMoser &amp;lt;sourcefile without numbers&amp;gt; &amp;lt;output source file with numbers&amp;gt; [Y] Y to overwrite outputfile without question asked
The other method is to dump or upload the text buffer as memory binary dumps.
Text is stored in memory as:
e.g.
the text
10 test
is stored as:
00 10 20 74 65 73 F3
RAE to TXT
Converts a binary MAE/RAE file to an ASCII text file without line numbers and normal line end
D:\myfiles\MAE\PC tools&amp;gt;RAEtoTXT.exe V1.0 Convert a ASSM/TED Moser RAE memory dump to text file V1.0 Hans Otten, 2024 RAEtoTXT &amp;lt;sourcefile memorydump&amp;gt; &amp;lt;output text file [Y] Y to overwrite outputfile without question asked
TXT to RAE
Converts a text file to binary RAE format, with line numbers.
D:\myfiles\MAE\PC tools&amp;gt;TXTtoRAE.exe V1.0 Convert a text file to ASSM/TED Moser RAE memory dump V1.0 Hans Otten, 2024 TXTtoRAE &amp;lt;textfile &amp;gt; &amp;lt;output memorydump file [Y] Y to overwrite outputfile without question asked
How to dump or upload the the MAE/RAE text buffer
Dump
Start ASS/TED and add some lines
C 1979 BY C. MOSER 4163-53FC 5400-5EFC 5F00 4163 5400 &amp;gt;10test &amp;gt;20 lege regel &amp;gt;set 4163-53FC 5400-5EFC 5F00 4176 5400
Current (4176 in example above is to be stored at D3 (low), D4 (high))
BR to the KIM monitor and save 4163 to 4176 to a file, remember the end address, add that to the filename!
Upload
– Start ASSM/TED and BR to monitor
– Load the text file, place the end address in D3 (low), D4 (high)
– Enter ASSM/TED via the warm start at 2003 (KIM-1) or B003 (SYM-1)