CPM-65 and Elekterminal emulator

CPM-65, a CP/M-80 like operating system for 6502 based microcomputer

Dietrich Lausberg build a Junior long ago and expanded it to quite a system. He added hardware Elektor components, floppy and hard disk drives and wrote a CP/M inspired operating system, called CP/M-65. He still uses and maintains the system!

post

CPM-65 and Elekterminal emulator

CPM-65, a CP/M-80 analogue operating system for 6502 based microcomputer

Dietrich Lausberg build a Junior long ago and expanded it to quite a system. He added hardware Elektor components, floppy and hard disk drives and wrote a CP/M inspired operating system, called CP/M-65. He still uses and maintains the system!

All software is published on his github page Dietrich-L

System Requirements

  • 6502 processor
  • at least 12 kByte RAM
  • 6532 I/O chip for the system timer (could be replaced by a 6522 or other)
  • minimal 1 Floppy drive
  • Serial I/O

The system is a heavily modified and expanded Elektor Junior Computer. For system components and memory map see below.

System Structure
CPM-65 consists of 3 layers:

  • BIOS Basic I/O system – currently 3 kB, could be reduced to 2kB by removing SCSI and I2C drivers. Drives can be A-H non consecutive.
  • BDOS Basic disc operating system – this is the CPM-65 kernal. Size 2 kB
  • CCP Console command program – a simple console which only allows to invoke CPM-65 programs. No resident commands. Size 1 kB

File and Disc Format
Filenames are CP/M-style d:filename.ext with d
Programs must have .COM as extension and are loaded to $0200 and started there.

The directory structure is CP/M-compatible and can be read with appropriate tools like CPMTOOLS

The Disc format is typically 40 tracks/ 8 sectors/ 256 byte/sector. It is defined in the BIOS. The BDOS operates on sector numbers. Maximum sector number is $800 blocks with $20 sectors = 65536 sectors á 256 bytes = 16 MBytes

Software List of CPM-65

Name		Version
ALLOC		2.8
ASM	        2.5
BASIC		1.4
BDOS		2.2
BIOS		3.0
BOOT		1.7
BOOTPROM	3.0
BROWSE		1.0
CCP	        1.5
COPY            1.4
D	        2.0
DATETIME	1.1
DEBUG		1.5
DRUCKER		1.0
DUTIL		1.5
EPROMMER	1.2
ERASE		1.5
FORMAT		2.4
FORTH		1.6a
HEXMON		1.1
I2C-UTIL	1.2
RENAME		1.1
RFILE		1.1
SCSIMGR		1.1
STEP		1.0a
SUPERTAP	1.4
SYS 		1.5
SYSGEN		1.0
TYPE		1.6
XMODEM		1.2

Programming

Available software (all written by Dietrich Lausberg)

  • Basic interpreter
  • Forth interpreter
  • Assembler for 6502

All software is supplied as assembler files to be assembled with the CPM-65 assembler.

Hardware

Dietrich Lausberg’s system now has:

  • Base Junior
  • Interface card
  • 64k Universal Memorycard
  • 8k RAM/EPROM card
  • Universal Disk Controller (Elektor Computing 6) for HD SCSI disk (SD card) and floppy disk
  • EPROMmer
  • Elekterminal

Modifications made to Elektor cards

  • The Junior basecard was mapped to 1K RAM $E000-$E3FF, RIOT at $F600-$F7FF, EPROM was converted to a 2716 and is at $F800-$FFFF
  • The Interface card is mapped 1K RAM at $E400-$E7FF, 2K RAM (6116 replacing a 2716) at $E800-$EFFF, the VIA 6522 at $F800-$F9FF.
    The tape interface is removed.
  • The 64k RAM card from Elektor 83/3-60 (Universelle Speicherkarte) with 48 k RAM (6 x 6264) is mapped to $0000 – $BFFF.
    The card has a modification, which allows the Elektor EPROMMER to take over $B000-$BFFF when present on the bus
  • The 8K RAM-EPROM card was modified to 4 x 6116 at $C000-$DFFF, 1K RAM $F000-$F3FF

All modifications in the adressing were done with the existing glue logic. I know, its a bit convoluted, but it has evolved over time – actually the last change is from 2021. The system works very stable. So the mapping does not violate the 6502 timing requrements.

The target always was to have as much consecutive RAM from zero page to HIMEM as possible. This is a bit CP/M style and makes it easy for the software to use as much RAM as it can grab until the CCP is met (cwhich is currently at $D800). CPM-65 has up to 53 kB transient memory. The largest program is BASIC, which easily assembles in the RAM to a 10 kB program with 26K to spare. Basic then has 45247 Bytes free.

Drives

  • A: and B:  2 x BASF 6108 40 Tracks double density
  • C:  Gotek with Flashfloppy V3.32 from Keir Fraser emulating another 40 tracks DD drive
  • E: and F: SCSI drive SCSI2SD V5.1 by Michael McMaster configured to emulate 2 x 16 MB harddiscs

Serial interface
Serial 1200 – 9600 Baud TTY to ELEKTERMINAL (1200 Baud) or Terminal emulator (600 Baud). As emulator TeraTerm is ued especially for file transfer via Xmodem or a a self-written ELEKTERMINAL emulator. The emulator is necessary, because some of the software, most notably the FORTH screen editor needs the very specific ELEKTERMINAL control codes.

TTY9600 Elekterminal Emulator

This program emulates the ELEKTERMINAL published by the magazine ELEKTOR in November/December 1978.

All software is published on his github page Dietrich-L

The program is written in Free Pascal and compiles in the LAZARUS PASCAL environment. The TTY5.EXE is verified to work under Windows 10 64 bit. No installation is needed, just invoke TTY5

Commands

   alt-B - Baudrate                      alt-I - info
   alt-C - COM-Port
   alt-H - help
   alt-D - debug
   alt-X - exit

Fixed parameters:

	word length = 8       
	stop bits = 1
	parity bit = none
	flow = no     

These parameters can be changed in the source code only.

ELEKTERMINAL commands
The ELEKTERMINAL uses the SF.F 96364 CRT Controller and some glue logic. The terminal displays 16 lines with 64 characters and interprets some ASCII command codes

Code 	Function
$08	Cursor <--
$09	Cursor -->
$0A	Cursor down
$0B	Cursor up
$0C	Home cursor + clear screen
$0D	Carriage Return
$1A	Clear current line
$1C	Home Cursor
$1D	Cursor to begin of line

Elektor books Junior and Computing

Added to the Elektor book pages:
– Junior Book 1 Francais
– Elektor Computing German 1-6

More Elektor Junior

I think I am for now finished with the Junior pages:

post

Junior Computer Replica by laurent-fr

This is a replica PCB made with KiCAD.

This board is not a 100% accurate replica, because the added directly on the PCB a few updates published later by Elektor :

  • a fix for memory decoding needed for the expansion board
  • the main decoupling capacitor C2 was on wrong side of S25 (activate display) which could reset the computer
  • a simple reset circuit with a resistor and a capacitor
  • Also replaced the 2708 EPROM by a 2716, which avoid the need of a hard to find EPROM & EPROM programmer, and has the big benefit of reducing the required power supplies from 3 (+5,-5,+12) to only +5V.

More details, also yet untested Interface card and other cards at his github page.

post

EPROMmer EPS82010

A programmer for 2716 and 2732 EPROMS with the Elektor bus, PCB EPS82010(A).

2716/2732 programmer
EPROMmer using the Junior Computer, including listing
EPROMmer software binary, start adress 0200

Many users build this programmer, often with extending the EPROM ZIF socket and switches to the frontpanel of the card, so they are accessible.
The photos show PCB EPS82010A, that revision had the Junior adaptations as outlined in the 1983 article.

Elektor Junior pages updated

After several years so much new and correct information has been coming in!

While I was studying the Comal interpreter, I want to port it to the KIM-1, I realised the Elektor pages required some updating and reorganising.
I could not find easy what I needed: circuits and source listings. So I extracted the circuits from the articles and checked the various listings with the ROMs I had in my archive.
Also the sources that appeared the last years were checked, adapted and the binaries compared with the hex dumps. Some surprises, many faults and not with the correct names.
The ESS numbers are now attached to the ROMs.

Now you can have all the essential Elektor Junior information from base to full system with checked ROMs, with sources, step by step.

The complete archive of articles and books is also updated, especially the English articles are as complete as possible.

Have a look at the Elektor Junior pages!

With thanks to the many persons and fora that helped me to collect the information.

post

Elektor Universal Terminal

Published in 1983.

A VT52 terminal build up with the VDU card, known from the Junior articles, and a new CPU card, later the base of the Octopus/EC65 computers.

VDU card
ESS522 character generator ROM
CPU card
CPU card and Universal Terminal
ESS525 ROM
(to be burned at location $F9DF to let the 6502 vectors appear at upper memory)
Paperware 3, listing of ESS525 ROM in Micro ADE format
Universal terminal source in MICRO ADE format
Universal terminal sources and hex files

post

Elekterminal

Elektor published in 1978 the Elekterminal design: a video display unit and an ASCII keyboard for computer systems with serial interface.

Over the years the design evolved and many articles were published. Among other systems, it was also integrated with the Junior computer.
The Juinor book 3 contains a detailed description how to combine Elekterminal and Junior via the bit banged serial TTY interface.

The video display was later replaced with a videocard, the serial ASCI keyboard stayed as option.

Articles and books in English about the Elekterminal

Elekterminal articles 1978-1980
Junior book 3
the Elekterminal with a printer
lowercase and special characters on the elekterminal
Elekterminal bell
Elekterminal character generator with lowercase, 2716 EPROM image

post

KB9 Basic

Junior KB9 Basic

Philippe Roehr started with the KB9 binary from the KIM-1 pages.
Philippe then applied the process outlined in the Elektor articles to adjust Basic to the Junior character I/O routines and also improved the speed by adjusting the now unnecessary code that took care of the ROR bug in early 6502’s.

Philippe transferred the binary to the Junior with Ed’s utility KIMTape, producing a KIM-1 audio wave file. The Junior accepts this format, a bit slow but only needed once. After seeing all was well, Philippe wrote the now optimized Junior KB9 Basic to audio wave file, and made a hex dump on the terminal. I picked up the dump, a captured text file form a a terminal emulator, and wrote a conversion program to produce a binary.

All the files here: archive with audio wave file, dump on terminal, binary and conversion software.