• ASSIST09 Trace function working

    fjkraan09/03/2025 at 14:08 0 comments

    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)

  • MicroKit09 with ACIA/PTM extension for Assist09 usage

    fjkraan08/02/2025 at 10:24 0 comments

    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.

  • Assist09 for the MicroKit09 (with ACIA/PTM extension)

    fjkraan08/01/2025 at 09:50 0 comments

    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
    Screendump of a Assist09 session

    The monitor code range is F800-FFFF, RAM is expected at 1800, ACIA at A400 and the PTM at A800.

  • Processor check at startup

    fjkraan07/29/2025 at 17:30 0 comments

    Minor update of the monitor, including a processor check at startup. Instead of the underwhelming '-' prompt, now it checks and displays the actual processor type. Any key will resume the startup process.

  • Update for mk2 v1.1 boards

    fjkraan01/08/2022 at 13:38 0 comments

    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