Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SWTPC 6809 system

249 views
Skip to first unread message

John Garza

unread,
Feb 27, 2016, 11:09:24 AM2/27/16
to
Anyone familiar with the Southwest Technical Products 6809 based computers?

On mine, it appears the boot ROM is only geared towards booting from a
disk drive - which I don't have. I was wondering if there is a
different boot ROM - like the ones for the older SWTPC 6800 systems that
allowed you to load a program via a Motorola S-record file and run it.

If you know of one, please post it here for all to see.

Thanks,

-John

Geo

unread,
Feb 28, 2016, 2:24:07 PM2/28/16
to
On Sat, 27 Feb 2016 10:09:16 -0600, John Garza <jo...@127.0.0.1> wrote:

>Anyone familiar with the Southwest Technical Products 6809 based computers?
>
>On mine, it appears the boot ROM is only geared towards booting from a
>disk drive - which I don't have. I was wondering if there is a
>different boot ROM - like the ones for the older SWTPC 6800 systems that
>allowed you to load a program via a Motorola S-record file and run it.
>

Have a look around this site:-
http://www.swtpc.com/mholley/MP_09/SBUG_Index.htm

Failing that I would suggest that someone on the Flex user group
should be able to help - lots of old-timers hang out there:-
http://www.flexusergroup.com/flexusergroup/fufusub.htm
There is also an FTP site maintained with disk images etc.

Chris Elmquist

unread,
Feb 29, 2016, 9:39:21 AM2/29/16
to
On Sunday, February 28, 2016 at 1:24:07 PM UTC-6, Geo wrote:
> On Sat, 27 Feb 2016 10:09:16 -0600, John Garza <jo...@127.0.0.1> wrote:
>
> >Anyone familiar with the Southwest Technical Products 6809 based computers?
> >
> >On mine, it appears the boot ROM is only geared towards booting from a
> >disk drive - which I don't have. I was wondering if there is a
> >different boot ROM - like the ones for the older SWTPC 6800 systems that
> >allowed you to load a program via a Motorola S-record file and run it.
> >
>
> Have a look around this site:-
> http://www.swtpc.com/mholley/MP_09/SBUG_Index.htm


That's a good reference as SWTPC's "SBUG-E" monitor does contain both
'L' and 'P' commands to Load and Punch tapes via the console in S-record form just like Motorola's MIKBUG did for the 6800.

Michael has the user manual scanned here,

http://www.swtpc.com/mholley/MP_09/SBUG_UsersGuide.pdf

Chris

John Garza

unread,
Mar 1, 2016, 4:11:46 PM3/1/16
to
Yes, I have the SBUG-E on my S/09 system and I noticed the 'L' and 'P'
commands. But compared to the SWBUG 6800 Monuitor, it seems to be
missing the 'J' command (Jump to an address and start executing) and the
'G' (Go) command appears to work differently - no mention is made in the
SBUG-E docs about jumping to an address pointed to by a preset location
as in the SWBUG ROM.

So how do you get the machine to actually start running your program?

-John

Chris Elmquist

unread,
Mar 2, 2016, 8:37:54 AM3/2/16
to
I don't actually have an s-bug machine running right now but looking at the source, my best guess would be that you use CTRL-P to change the PC (program counter) and then "G" to return from breakpoint/SWI.

I agree that the lack of "J" to jump to an address is disappointing.

Chris

John Garza

unread,
Mar 13, 2016, 10:13:32 PM3/13/16
to
Well, tried that and no go.

Setting P - which I thought would immediately set the program counter
causing the machine to start executing at the specified address, does
not work that way. Once I set P, the monitor is still running and I can
view it and see my new address in it - but it is obviously running the
monitor, not my program. I also tried 'G' - hoping maybe it was an
interrupt issue - but that hangs the system.

In the off chance that 'G' really works and I have a bug in the few
bytes needed to say 'hello world' - I'm posting my test code for
inspection...

-J

*----------------------------------------------------------
* 6809 Hello World
*
* test program for SWTPC 6809 machine
*
*----------------------------------------------------------


*----------------------------------------------------------
* STANDARD SBUG-E EQUATES
*----------------------------------------------------------
MONITOR EQU $F800 *RETURNS CONTROL TO MONITOR
INCH EQU $F804 *CHAR INPUT
INCHE EQU $F806 *CHAR INPUT AND ECHO
OUTCH EQU $F80A *CHAR OUTPUT
PDATA EQU $F80C *OUTPUT STRING TERMINATED BY $04
PSTRNG EQU $F810 *LIKE PDATA WITH CRLF PREFIX
PCRLF EQU $F80E *OUTPUT CR,LF,NUL,NUL,NUL
*----------------------------------------------------------

org $0100

*--------------------------------------
* Sample routine to print a string
*--------------------------------------

sayhi ldx #text
jsr PSTRNG
jmp MONITOR

text fcc /Hello World!/
fcb $04

*---------------------------------
* end
*---------------------------------

Chris Elmquist

unread,
Mar 15, 2016, 3:41:07 PM3/15/16
to
At this point I am just guessing as I cannot try on a real SBUG machine. Maybe use the 'B' command to set a breakpoint at the entry to your code and then play with ^P and G (and other schemes) to try to get it to jump to the breakpoint?
Then you will know it is at least going to the beginning of your program.

It is very strange that there is no obvious method to just jump to a specific execution address but reading through the monitor source, I don't see it.

Even with their 'L' (load tape) implementation, they ignore any execution address that might be passed with an S9 record so it would not automatically execute a loaded tape either.

"G" is pretty simple code:

GO TFR U,S
RTI RTI

and ^P (set PC) basically stores the address you enter onto U stack + 10,

STX 10,U POKE IN NEW CONTENTS

When an RTI is executed, the machine state is popped from the stack and
U+10 contains the program counter to which it will return. You need to
make sure the E bit in the CCR is set so that it does a full state restore on RTI and ^C (Alter CC) does this by always setting it,

ORA #$80 SETS "E" FLAG IN PRINT LIST

So, I still think you can set the address you want to jump to with
^P, then do ^C and re-enter the same value for CC (which causes it to set the E bit), and then do "G".

Chris

Geo

unread,
Mar 16, 2016, 4:16:50 AM3/16/16
to
On Tue, 01 Mar 2016 15:11:42 -0600, John Garza <jo...@127.0.0.1> wrote:


>
>So how do you get the machine to actually start running your program?
>

From memory ( and a sneaky refresh cycle here):-
http://xilinx.pe.kr/_hdl/2/_ip/jekent/system09/index.html

Set the program counter to $1000 (<ctrl> P 1000) [or wherever your
program lives]
Execute the program with the "G" key.

John Garza

unread,
Mar 16, 2016, 9:32:33 AM3/16/16
to
I'm beginning to think I have hardware issues. Yikes!

Geo's comment on the G command makes sense as the logical way to execute
a program. In fact that's what I first assumed until I read the docs.
Perhaps it was a lack of clarity in the SWTPC documentation - they go on
and on about breakpoints and interrupts and never mention it's used to
replace the J command from the 6800 monitor. Seriously, one sentence is
all that's needed.

Regardless, my 'hello world' program failed (hanged). I tried the url
for the 6809 FPGA site Geo mentioned, downloaded the flex and xbasic S19
files. Xbasic hung like my 'hello world' program. Flex asked me for a
date, but after I entered the date, it hung too. Never saw the '+++'.

Maybe I have a bad memory card. Or maybe there are fixed memory
addresses I don't have (Motorola I/O) - I believe I only have a 32K RAM
card installed in low memory. Maybe Flex and Xbasic are looking for
non-existent hardware and simply die when it's not found. When I get
some time I'll put the box on the bench and post the results here.

Thanks everyone for the comments! You've been really helpful. It will
take a bit more time, but I feel I'm close.



-John

Dennis Boone

unread,
Mar 16, 2016, 11:00:46 AM3/16/16
to
> *----------------------------------------------------------
> * STANDARD SBUG-E EQUATES
> *----------------------------------------------------------
> MONITOR EQU $F800 *RETURNS CONTROL TO MONITOR
> INCH EQU $F804 *CHAR INPUT
> INCHE EQU $F806 *CHAR INPUT AND ECHO
> OUTCH EQU $F80A *CHAR OUTPUT
> PDATA EQU $F80C *OUTPUT STRING TERMINATED BY $04
> PSTRNG EQU $F810 *LIKE PDATA WITH CRLF PREFIX
> PCRLF EQU $F80E *OUTPUT CR,LF,NUL,NUL,NUL
> *----------------------------------------------------------

Any chance the monitor you have doesn't place these things in the
standard locations?

De

John Crane

unread,
Feb 6, 2020, 7:25:39 PM2/6/20
to

I know it's been a while, but I wanted to post my notes on getting my
6809 to run BASIC after the troubles in 2016...for the sake of closure.

John Garza Nov 2018
Steps to bring up BASIC on my SWTPC S/09 system without drives
(modified from original text far below)

1) Set term program (TeratermPro) to 9600 baud 8N1
2) On reset see ">" prompt
3) Put SBUG in load S1 Load mode by pressing the "L" key
4) Send the F9.s19 file with TeratermPro in text download mode.
5) Set the PC to $CD00 (<ctrl> P CD00)
6) Execute Flex by pressing the "G" key
7) Enter the date and you WILL NOT get a +++ prompt - it will HANG
8) Press RESET switch
9) Put SBUG in load S1 Load mode by pressing the "L" key
10) Send the XBASIC.s19 file with TeratermPro in text download mode.
11) Set the PC to $0000 (<ctrl> P 0000)
12) Execute XBASIC by pressing the "G" key
13) Type in a basic program.


0 new messages