post

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> otherwise it overwrites itself.
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?

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!

post

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.

post

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

post

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.

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!

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-1008 Visable Memory Replica by Eduardo Casino

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

post

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;amp;gt;StripblanksMoser.exe
V1.0 Strip blanks from captured ASSM/TED Moser source file
V1.0 Hans Otten, 2024
Syntax: StripBlanksMoser &amp;amp;lt;sourcefile with blanks&amp;amp;gt; &amp;amp;lt;output source file to upload 
to ASSM/TED&amp;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;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;amp;lt;sourcefile without numbers&amp;amp;gt; &amp;amp;lt;output source file with numbers&amp;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;amp;gt;RAEtoTXT.exe
V1.0 Convert a  ASSM/TED Moser RAE memory dump to text file
V1.0 Hans Otten, 2024
RAEtoTXT &amp;amp;lt;sourcefile memorydump&amp;amp;gt; &amp;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;amp;gt;TXTtoRAE.exe
V1.0 Convert a  text file to ASSM/TED Moser RAE memory dump
V1.0 Hans Otten, 2024
TXTtoRAE &amp;amp;lt;textfile &amp;amp;gt; &amp;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;amp;gt;10test
&amp;amp;gt;20 lege regel
&amp;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)

Add the Apple 1 monitor to the KIM ROM!

The Apple 1 and the KIM-1 are some of the earliest 6502 systems made.
Both are desirable, Apple 1’s sell for lots of $$$ and KIM-1s are getting more expensive.

Luckily we can build a KIM-1 clone that is either cheap and compatible, like the PAL-1, or a bit more authentic as the various KIM-1 boards.
Anyway, a clone has the KIM ROMs, and in E(E)PROM, to make it a KIM-1 clone. Altering is not done, you loose that unique spartan user interface!

The Apple 1 has also a monitor program, often called Wozmon to honor the genius of Steve Wozniak.

And you can combine both user interfaces on a not expanded KIM-1 clone!
I also included the Wozmon as a Setting in the KIM-1 Simulator.

Read more here!

post

Wozmon in the KIM-1 clone

The Apple 1 monitor (Wozmon) to be included in the empty space in the KIM-1 tape ROM

The Apple 1 and the KIM-1 are some of the earliest 6502 systems made.
Both are desirable, Apple 1’s sell for lots of $$$ and KIM-1s are getting more expensive.

Luckily we can build a KIM-1 clone that is either cheap and compatible, like the PAL-1, or a bit more authentic as the various KIM-1 boards.
Anyway, a clone has the KIM ROMs, in an E(E)PROM, to make it a KIM-1 clone. Altering is not done, you loose that unique spartan user interface!

The Apple 1 has also a monitor program, often called Wozmon to honor the genius of Steve Wozniak.
And you can combine both user interfaces on a not expanded KIM-1 clone!
Ronny Ribeiro, a user of a PAL-1, saw that the KIM tape ROM has quite some unused space. In a real KIM-1 that is wasted, you cannot program the ROM.
In a clone you can. He saw that that free space is large enough to hold the Wozmon, adapted a bit for the KIM-1 TTY I/O.
He offers a ROM image for a clone, with the Wozmon built in at 1AA0. And added a command to go back to the KIM-1 monitor.
He also replaced the ‘KIM’ prompt in hi system with ‘PAL.

Two versions here, original KIM ROMs in 2K image (00 filler bytes!) with Wozmon in tape ROM empty space (and no change to text in the KIM ROMs)

– wozmon kim rom zp24.bin with zeropage used from $24 as original Wozmon
– wozmon kim rom zpe5.bin with zeropage used from $E5 just below start of KIM-1 monitor zeropage

Start Wozmom at $1AA0, used buffer at $0300

Based upon the ideas and work of Ronny Ribeiro.
Source included. Standard 6502 assembler, I used TASM32

The KIM-1 Simulator is used to test this. And this Wozmon is now available in Settings!

Here I offer you that ROM. I reconstructed the source and added the result to the KIM-1 ROM image. WIthout the KIM prompt change!
In the archive you find source etc of the Wozmon for KIM, the binary ROM image to load in the KIM clone rom, the original Wozmon source and a small userguide by San Bergmans.

Another update to the Simulators

KIM-1 and TIM Simulator have seen a small update.
Improvements on console handling and little annoyances. Focal added as programming language, for KIM-1 and TIM!
The Apple 1 Monitor, wozmon is now available as a Setting to be added the not used space in the 6530-003 tape ROM.

KIM-1 Simulator 1.4.0
TIM Simulator 0.6beta
Convert Hex Formats 2.8 (bundled also with simulators)