Recreation of a 1983 MC6809 single board computer
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
TestClavier.lstnon-HEX-keys directly mapped to display segments (and hex values).- 1.38 kB - 04/04/2021 at 12:36 |
|
|
Display6809uP.lstProgram to display '6809 µP'.lst - 617.00 bytes - 04/04/2021 at 11:51 |
|
|
uK09QuickReferenceGuide.txtVery much in progress as comprehension of the French text grows.text/plain - 1.88 kB - 04/03/2021 at 15:01 |
|
|
microKit09MK2IOv11.pdfAdobe Portable Document Format - 240.08 kB - 03/29/2021 at 18:50 |
|
|
microKit09MK2CPUv11.pdfAdobe Portable Document Format - 141.46 kB - 03/29/2021 at 18:50 |
|
|
Finally I fixed the Trace function in ASSIST09. It appeared the only MC6840 I had was faulty. Replaced this with a HD63B40 and trace works as expected. Here a selective screendump (comment after the ;):
>D 0000 001F ; Dump memory locations of the HelloWorld program 0 1 2 3 4 5 6 7 8 9 A B C D E F 0000 30 8D 00 06 3F 03 3F 06 3F 08 48 65 6C 6C 6F 20 0...?.?.?.Hello 0010 57 6F 72 6C 64 04 FF 00 FF D7 FF E2 BF 00 FF 00 World........... > >G 0000 ; Run the program. Hello World >R ; Change the Program Counter to the start of the program PC-000A A-2E B-94 X-000A Y-18B2 U-A400 S-181C CC-F4 DP-18 PC-0000 ; Typing '.' at the cursor generates this output >.OP-308D PC-0004 A-2E B-94 X-000A Y-18B2 U-A400 S-181C CC-F0 DP-18 >.OP-3F03 PC-FFE8 A-2E B-94 X-000A Y-18B2 U-A400 S-1810 CC-F0 DP-18 >.OP-6E9D PC-F895 A-2E B-94 X-000A Y-18B2 U-A400 S-1810 CC-F0 DP-18 >. Hello WorldOP-0C90 PC-FA3B A-01 B-F0 X-0016 Y-18B2 U-A400 S-1810 CC-F4 DP-18 >.OP-3B04 PC-0006 A-2E B-94 X-000A Y-18B2 U-A400 S-181C CC-F0 DP-18 >.OP-3F06 PC-FFE8 A-2E B-94 X-000A Y-18B2 U-A400 S-1810 CC-F0 DP-18 >.OP-6E9D PC-F895 A-2E B-94 X-000A Y-18B2 U-A400 S-1810 CC-F0 DP-18 >. OP-0C90 PC-FA3B A-01 B-F0 X-FA3D Y-18B2 U-A400 S-1810 CC-F4 DP-18 >.OP-3B04 PC-0008 A-2E B-94 X-000A Y-18B2 U-A400 S-181C CC-F0 DP-18 > ; Cool thing is that the trace works with both RAM and ROM based code.
Below the listing of the HelloWorld program
; Source: https://www.youtube.com/watch?v=C_q_RNpLNHo&t=1522s ;************************************************************************* ; HelloWorld.asm ; ; A simple 'Hello World' characher output test. ; for ASSIST09 based system. ; Call with ASSIST09 'G' Go Subroutine command to Entry address. ; ; Author: Greg ; Date: 15/02/2002 ; Modified for SWI $08, fjkraan, 20250827 ;************************************************************************* 0000 Entry EQU $0000 0003 PDATA EQU $03 0006 PCRLF EQU $06 0004 EOT EQU $04 0008 MONITR EQU $08 ; ORG Entry ; LDX #Message is how we would normally load the index register pointer. ; ie. Simply loading X with an absolute address. ; But LEAX is the MC6809 Load Effective Address approach which generates ; preferable and more flexible "position independent code". ; ie. Load X with the Program Counter Relative address of the Message. 0000 308D0006 LEAX Message,PCR ; Call the PDATE service routine. 0004 3F SWI 0005 03 FCB PDATA ; Call the PCRLF service routine. 0006 3F SWI 0007 06 FCB PCRLF ; Return to Monitor. 0008 3F SWI 0009 08 FCB MONITR 000A 48656C6C6F2057 Message FCC "Hello World" 0011 6F726C64 0015 04 FCB EOT END SYMBOL TABLE ENTRY 00 0000 EOT 00 0004 MESSAGE 02 000A MONITR 00 0008 PCRLF 00 0006 PDATA 00 0003 6 SYMBOLS 0 error(s), 0 warning(s)
Here an image of the MicroKit09 with the ACIA/PTM extension for usage with the Assist09 monitor.
The I/O board and the MC6821 is not used in this setup.
Just tried to set a breakpoint to test the PTM, and it worked!
>D 1000
>D 1000 0 1 2 3 4 5 6 7 8 9 A B C D E F 1000 12 12 12 12 12 BE 10 67 A9 FF FF EF 00 DA 10 24 .......g.......$ >B 1002 1002 >G 1000 PC-1002 A-00 B-00 X-20FE Y-F002 U-18C2 S-1851 CC-D4 DP-00 >
The Assist09 monitor is described in the Motorola MC6809-MC6809E 8-Bit Microprocessor Programming Manual (M6809PM/AD, 1981), Appendix B.
Finally I managed to find time to configure the Motorola monitor Assist09 to the MicroKit09. It is a very small monitor that uses an ACIA (6850) and optionally a PTM (6840) to work.
Short introduction into Assist09.
All commands and hex values should be uppercase. Commands and arguments
are separated by one or more spaces.
A complete description and assembly listing of Assist09 is in the
Motorola MC6809-MC6809E 8-Bit Microprocessor Programming Manual, Appendix B
Command Name Description Command Entry
Breakpoint Set,clear,display, or delete breakpoints B
Call Call program as subroutine C
Display Display memory block in hex and ASCII D
Encode Return indexed postbyte value E
Go Start or resume program execution G
Load Load memory from tape L
Memory Examine or alter memory M
Memory change or examine last referenced /
Memory change or examine hex/
Null Set new character and new line padding N
Offset Compute branch offsets O
Punch Punch memory on tape P
Registers Display or alter registers R
Stlevel Alter stack trace level value S
Trace Trace number of instructions T
Trace one instruction -
Verify Verify tape to memory load V
Window Set a window value W

The MicroKit09 mk2 v1.1 CPU board has a serious shortage with address lines, so isn't really production ready. It is fixable however, with some wires (note this is a corrected version).
- All repairs can be done on the solder side
- Cut both traces to U2-2
- Add wire between U4-1 and U7-19 (this fixes A10)
- Add wire between J3-3 and U2-2 (this fixes A12)
- Add wire between J4-3 and J3-2 (this fixes A11)
This solution has the disadvantage that the jumper J3 cannot be used anymore to select a 2k byte RAM.
The MicroKit09 mk2 v1.1 I/O board is ok and is tested with the low profile switches and keys. An image is added to the project gallery.
The monitor (1.8 and 1.9) has the annoying habit of not showing locations which have no memory. This can be fixed by nopping out two instructions in the EXMEMO call, just past the PREXIN label:
CMPA ,S+ ; MEMOIRE ABSENTE OU MEMOIRE MORTE? LBNE RPOINT ; OUI, ALLUMER PROMPT ET SCRUTER
Needs more testing however. (The latest version at the Github repo has a more elaborate fix, which uses the decimal points as indication there is no memory at this location.)
It it not sure I will create, test and publish newer versions of the boards.
Additionally, the EPROM can be replaced with an 8kx8 2764 or equivalent by inserting a 28-pin socket on top of the 24-socket. Note the U7 numbering is based on 28 pins. Here the extra wiring is:
- Add wire between J3-3 and U7-2
- Add wire between U7-26 and U7-27
- Add wire between U7-26 and U7-28
Create an account to leave a comment. Already have an account? Log In.
Become a member to follow this project and never miss any updates
By using our website and services, you expressly agree to the placement of our performance, functionality, and advertising cookies. Learn More
Erik Piehl
Tom
agp.cooper