Book added to the 6502 KIM-1 AIM 65 books pages:
![]() |
Microprocessor programming and applications for scientists and engineers (Richard R. Smardzewski |
About small SBC systems
Book added to the 6502 KIM-1 AIM 65 books pages:
![]() |
Microprocessor programming and applications for scientists and engineers (Richard R. Smardzewski |
Royce Taft has a MACH-9 MMS Inc 6809 CPU Plug-in for AIM 65 and reverse engineered it.
He sent me his design to be published here.


Downloads
![]() |
Here the archive with circuit diagram, ROMs and design files for the 82S100 PROM and PAL10L8 |
![]() |
The Kicad Design files for the MACH-9 PCB |




A65-004-03 Power Supply
Input 110/115/215/230 V AC n47-63 Hz
Output 1 : 5V DC 3.0A
Output 2 : 24 V DC .5A, 1.5A Peak
AIM 65 to RM 65 hardware interface
Royce Taft has a MACH-9 MMS Inc 6809 CPU Plug-in for AIM 65 and reverse engineered it.
He sent me his design to be published here.




Michael Doornbos (of https://imapenguin.com/) posted two “10 PRINT” articles for our beloved small 6502 SBC’s.
The KIM-1 version displays on the seven segment LED displays. The AIM 65 prints it on the thermal printer.
KIM-1 version of 10 PRINT in BASIC and assember
10 PRINT CHR$(47+INT(RND(0)*2)*45);:GOTO 10
; BY MICHAEL DOORNBOS MIKE@IMAPENGUIN.COM; 2025
; SOFT START AT $0200
; THIS PROGRAM GENERATES A RANDOM PATTERN OF SLASHES AND BACKSLASHES
; AND DISPLAYS IT ON THE KIM-1'S 7-SEGMENT DISPLAY.
; THE PATTERN SCROLLS TO THE LEFT, CREATING A CONTINUOUS EFFECT.
; A LOT OF THIS CODE IS BORROWED FROM:
; https://netzherpes.de/blog/index.php?entry=KIM-1-scrolltext
; kim_msg.asm
; testing lin2c64 6510 assembler
; using J. Butterfield's scan display from Wumpus
; 01/03/2013 ces
; CONSTANTS FOR 7-SEGMENT DISPLAY CHARACTERS
BACKSLASH .EQU $64 ; BACKSLASH CHARACTER
SLASH .EQU $52 ; FORWARD SLASH CHARACTER
SPC .EQU $80 ; SPACE CHARACTER
; KIM-1 HARDWARE ADDRESSES
SAD .EQU $1740 ; DATA PORT FOR PINS 1-4
SADD .EQU $1741 ; DATA DIRECTION REGISTER A
SBD .EQU $1742 ; DATA PORT FOR PINS 5-6
SBDD .EQU $1743 ; DATA DIRECTION REGISTER B
TIMER2 .EQU $1747 ; OPTIONAL 2ND 6532 TIMER
LOUT .EQU $7F ; SET PINS AS OUTPUT TO LEFT 4 LEDS
ROUT .EQU $1E ; SET PINS AS OUTPUT TO RIGHT 2 LEDS
; ZERO PAGE VARIABLES
SEED .EQU $00D0 ; RANDOM SEED LOCATION
TMR .EQU $00DB ; TIMER COUNTER
PTR .EQU $00DC ; POINTER
XFRHI .EQU $00DD ; USED FOR CHARACTER BUFFER HIGH BYTE
XFRLO .EQU $00DE ; USED FOR CHARACTER BUFFER LOW BYTE
TMP1 .EQU $00DF ; TEMPORARY STORAGE
CBUFF .EQU $00E8 ; CHARACTER BUFFER (6 BYTES)
MSGBUF .EQU $0180 ; BUFFER FOR GENERATED PATTERNS (30 BYTES)
.ORG $0200 ; START OF PROGRAM CODE
MAIN
; CLEAR THE MESSAGE BUFFER FIRST TO PREVENT GLITCHES
LDX #$00
CLRLOOP LDA #SPC ; USE SPACE CHARACTER TO INITIALIZE
STA MSGBUF,X
INX
CPX #$30 ; CLEAR THE ENTIRE BUFFER AREA
BNE CLRLOOP
LDA #$00 ; ADD NULL TERMINATOR AT THE END
STA MSGBUF+23
; INITIALIZE THE TIMER
LDA #$FF ; LOAD MAXIMUM VALUE
STA TIMER2 ; START TIMER
; USE TIMER VALUE AS SEED
LDA TIMER2 ; READ CURRENT TIMER VALUE
STA SEED ; USE AS RANDOM SEED
BNE SEEDOK ; IF NOT ZERO, IT'S FINE
INC SEED ; OTHERWISE INCREMENT TO MAKE NON-ZERO
SEEDOK JSR GENPAT ; GENERATE INITIAL PATTERN
INFINIT LDY #>MSGBUF ; LOAD BUFFER LOCATION
LDA #<MSGBUF
JSR SCAN ; DISPLAY THE PATTERN
; GENERATE NEW RANDOM SLASH AT END OF BUFFER
JSR RANDOM ; GET RANDOM BIT
BCC GENBACK ; BRANCH IF CARRY CLEAR (50% CHANCE)
LDA #SLASH ; FORWARD SLASH
JMP STORE
GENBACK LDA #BACKSLASH ; BACKSLASH
STORE STA MSGBUF+22 ; ADD NEW CHARACTER TO END OF BUFFER
; SHIFT BUFFER LEFT ONE POSITION (SCROLL EFFECT)
LDX #$00 ; START AT FIRST POSITION
SHIFT LDA MSGBUF+1,X ; GET NEXT CHARACTER
STA MSGBUF,X ; STORE IN CURRENT POSITION
INX ; MOVE TO NEXT POSITION
CPX #$22 ; CHECK IF WE'RE AT END OF BUFFER
BNE SHIFT ; CONTINUE IF NOT AT END
; ENSURE NULL TERMINATOR IS ALWAYS PRESENT
LDA #$00
STA MSGBUF+23
JMP INFINIT ; LOOP FOREVER
; GENERATE INITIAL PATTERN BUFFER WITH RANDOM SLASHES
GENPAT LDX #$00 ; START AT FIRST POSITION
GPLOOP JSR RANDOM ; GET RANDOM BIT
BCC GBACK ; BRANCH IF CARRY CLEAR
LDA #SLASH ; FORWARD SLASH
JMP GSTORE
GBACK LDA #BACKSLASH ; BACKSLASH
GSTORE STA MSGBUF,X ; STORE IN BUFFER
INX ; NEXT POSITION
CPX #$17 ; CHECK IF BUFFER IS FULL
BNE GPLOOP ; CONTINUE IF NOT FULL
LDA #$00 ; ADD NULL TERMINATOR
STA MSGBUF+23 ; AT END OF BUFFER
RTS ; RETURN
; RANDOM NUMBER GENERATOR (8-BIT LFSR)
RANDOM LDA SEED ; LOAD CURRENT SEED
ASL ; SHIFT LEFT (C GETS HIGH BIT)
BCC NOEOR ; SKIP EOR IF BIT 7 WAS 0
EOR #$B4 ; APPLY FEEDBACK POLYNOMIAL
NOEOR STA SEED ; STORE UPDATED SEED
RTS ; RETURN WITH CARRY = RANDOM BIT
; SCANNING ROUTINE FROM ORIGINAL CODE
SCAN STY XFRLO ; Y AND A GET LOADED BEFORE JSR TO SCAN
STA XFRHI
LDA #$07 ; INIT SCAN FORWARD
STA TMP1
LDY #$05 ; INIT Y
CONT LDX #$05 ; INIT X
CHAR LDA (XFRHI),Y ; GET CHARACTER
CMP #$00 ; LAST CHARACTER?
BNE MORE ; IF NOT, CONTINUE
RTS
MORE STA CBUFF,X ; STORE CHAR
DEY ; SET UP NEXT CHAR
DEX ; SET UP NEXT STORE LOC
BPL CHAR ; LOOP IF NOT 6TH CHAR
CLD ; BINARY MODE
CLC ; PREPARE TO ADD (CLEAR CARRY FLAG)
TYA ; GET CHAR POINTER
ADC TMP1 ; UPDATE FOR 6 NEW CHARACTERS
STA PTR ; SAVE NEW POINTER
JSR DSPDLY ; DELAY DISPLAY
LDY PTR ; RESTORE POINTER
JMP CONT ; CONTINUE WITH REST OF MESSAGE
DSPDLY LDX #$0A ; SET THE DELAY RATE HERE
STX TMR ; PUT IN DECR. LOCATION
TIME LDA #$52 ; LOAD TIMER
STA TIMER2 ; START TIMER
LITE JSR DISP ; GOSUB DISPLAY RTN
BIT TIMER2 ; TIMER DONE?
BPL LITE ; IF NOT, LOOP
DEC TMR ; DECREMENT TIMER COUNTER
BNE TIME ; NOT FINISHED
RTS ; NOW GET 6 NEW CHARACTERS
DISP LDA #LOUT ; CHANGE LEFT LED SEGMENTS
STA SADD ; TO OUTPUTS
LDY #$00 ; INIT RECALL INDEX
LDX #$09 ; INIT DIGIT NUMBER
SIX LDA CBUFF,Y ; GET CHARACTER
STY $00FC ; SAVE Y FOR MONITOR DISP ROUTINE
JSR $1F4E ; MONITOR ROUTINE - DISP CHAR, DELAY 500 CYCLES
INY ; SET UP FOR NEXT CHAR
CPY #$06 ; 6 CHAR DISPLAYED?
BCC SIX ; NO
RTS
AIM 65 version in BASIC
10 PRINTCHR$(47+(INT(RND(1)*2)*45));:GOTO 10
that print random ‘/’ or ‘\’
For the AIM 65 it was not only Rockwell that produced hardware like video,serial and FDC cards, others also amde hardware for the AIM 65.
I have a page devoted to AIM 65 hardware with new photos, updated and cleaned up documents:
– Comelta S.A. Spain RAM and ROM cards
– Cubit
– Rhines and CRT2 Video
– MTU Micro Technology Unlimited expansions for the AIM 65

And some modern expansions:
SM Baker remakes of video and FDC and bus cards.

Scott Baker Rockwell AIM-65 Projects
A number of interesting AIM 65 projects found on SM Baker’s github page (thanks Scott for the latest updates)
Backplanes
Designs for 2 and 3 slot backplanes. Gerbers included.

AIM-65 display adapter board
This is a display board based on the RM65 display board.
Supports up to 512KB of onboard ROM, which will be addressed into the 24KB address space starting at 0x9000. The 0xA000 range is left
empty for onboard peripherals. The four-position dipswitch controls which 32KB segment of the 512KB ROM is mapped.


Multi-banked ROM file for display board
ROM image tools
tape-rs232-c1541
Application board for tape, RS232, and Commodore 1541 AH5050.
FDC based upon RM65 FDC
The Rockwell pages on AIM 65 have had some updates.
There is a new page on AIM 65 hardware produced by others, like video cards, dataloggers and more.

Comelta S.A. Electronica de Tecnicas Aplicades , S.A.
Products for the AIM 65 made by this Spanish company, Barcelona.
Scans made by Jaume López, see his Comelta Resources website
![]() |
AB Computer AIM brochure |
![]() |
AIM EXORciser EMB-6 Expansion Board |
![]() |
CTR2 Video interface VideoRAM baord for various microcomputers such as AIM 65. Made by Graf Elektronik Systeme GMBH Kempten Complete description with PCB and Circuit diagram. |
![]() |
Video-1 Rines Video-1 Rines schematics Video-1 Rines schematics 6847 based video inetrface for AIM 65, complete with circuit diagrams |
![]() |
Notes on the Video-1 |
![]() |
Aeolian Kinetics PD24 Logger |

Aeolian Kinetics PD24 Logger

Aeolian Kinetics PD24 Logger

Aeolian Kinetics PD24 Logger

Aeolian Kinetics PD24 Logger
Multi-ROM adapters by Steve J.GRay
The PET/CBM MultiROM adapter is usable on the AIM 65 also. It gives a 4x DIP switch selectable choice of 16 ROMs. Handy in the B000 socket, where language ROMs are placed.
A 27512 EPROM holds the ROMs.
Once in a while I hear a myth on the internet about Rockwell manufactured the KIM-1. That myth needs to be debunked.
Rockwell did sell KIM-1s as an OEM product around 1977. They bought the KIM-1 PCB, made in a Commodore factory and put a sticker on the right corner, covering the Commodore MOS logo and text, as you can see in the image below.

The documentation such as KIM-1 User Manual and the Circuit Poster were given a new front and back, the contents of the User Manual were 99% coming verbatim from MOS Technology/Commodore. The Programming and Hardware Manual were later (and better) versions of the MOS Technology documents, no trace of the 6501!
I can proof this, in 1978 I bought a KIM-1 from a Dutch distributor Famatra and still have it. It was a Rockwell package. Here you see photos of my Rockwell KIM-1 package labeled as Rockwell but it really is a Commodore MOS Technology product rebranded. It did not take long before Rockwell started to sell the AIM 65 as replacement and I never saw advertisements not a Databook with a Rockwell KIM-1 in it.
The Rockwell KIM-1 User Manual is scanned by me and available on the KIM-1 and MOS Technology manuals page, as are (later versions of) the Rockwell Hardware and Programming manual. I might scan these Rev 0 versions one day also.
See the page of me and my KIM-1 for my first KIM-1 and its history.

You can see the text Commodore and MOS logo shining trough underneath the Rockwell sticker. And the number SC1276 gives away it was manufactured in the Santa Clara Commdore factory.
>


Click here for a large version.