jefftranter / 6809 Goto Github PK
View Code? Open in Web Editor NEWFiles and programs related to the Motorola 6809 microprocessor.
Files and programs related to the Motorola 6809 microprocessor.
Just ported the combo of Assist09 and Basic to my early 80s Wintek Corp 6809 SBC. Works well. Trace and disassembly functions very helpful!
Found a typo/bug (missing single quote prefix of "1" )in your existing Assist09 code "combined.asm" within the "combined" directory (from GIT). Result is no "1" printed following "S" in a punch text output.
From: combined.asm
original: BSPSTR FCB 'S,1,EOT ; CR,LF,NULLS,S,1
corrected: BSPSTR FCB 'S,'1,EOT ; CR,LF,NULLS,S,1
In your blog examples you show:
P 1000 100F
S13100055414C49535449432E22203A2090001014
S9030000FC
(note missing "1" between S and byte count field
Should be: (0x13 bytes following "S1")
P 1000 100F
S113100055414C49535449432E22203A2090001014
S9030000FC
Kept wondering why my punched output wouldn't then load. Then while debugging tried punching < 0x10 bytes and got a "S0" line, then caught the typo.
Many thanks for putting the assist09/basic combination together!
Some of your assist09 code had the typo, some did not. Y
our s19 examples are correct (have the S1 prefix)
Hey Jeff,
I had a question and I don't know if it is actually an issue or not.
The RAM space for the disassembler, trace and assist09 are 0x6FD0 - 0x7051 I am wondering if leaving that additional 4k of space after the monitor was intentional? The open address space does not start till 0x8000, I am trying to look at the code and I am certain I am missing something. I am a novice when it comes to the 6089 assembly language, and know just enough to be dangerous!
obviously basic uses the space in 0x0000 - 0x0178 for variables but my main concern is I've used the system calls from asist09 to re-route string output in CMOC, and if I want as much of a contiguous block from the top of the basic stack, to the bottom of the monitor code, it'd be nice to move it up 4k
preserving the basic stack is important because at some point I'd like to try to re-direct the CMOC standard library to use the floating point routines from extended basic.
I think its easy enough to just change the org addresses in the code and recompile the rom but I wanted to get your thoughts first.
the huge advantage to this is we can save on space for output routines by re-using the one's in assist09, I am also considering trying to bring those into extended basic to get more efficiency out if it (less recursive code is less recursive lol) but that's a big job.
PS also I wanted to say I built a expansion computer based on yours and grants design's; adding some more address space and expansion connectors for option cards:
with a acia module in the A000 slot it faithfully runs your combo rom
https://hackaday.io/project/186398-hb6809-homebrew-computer
I can't say thank you enough for the inspiration this project has added to my life.
In the SBC/combined/README.md you have the following:
snip---
M (emory) NNNN - Display memory data at address NNNN
- Terminate memory function
/ - Display current byte with address
. - Display next byte with address
^ - Display previous byte with address
, - Skip byte
SPACE - Display next byte
Denoting a "." to display next byte with address.
However, the code in combined.asm memory routine looks for a line feed "LF, 0x0A" for this.
* LINE FEED - NEXT BYTE WITH ADDRESS
CMNOTB CMPA #LF ; ? LINE FEED FOR NEXT BYTE
BNE CMNOTL ; BRANCH NO
LDA #CR ; GIVE CARRIAGE RETURN
SWI ;TO CONSOLE
FCB OUTCH ; HANDLER
STX <ADDR ; STORE NEXT ADDRESS
BRA CMPADP ; BRANCH TO SHOW
Couple of suggested options:
1 - update documentation to specify "LF" to display next byte with address, no code change required.
Should note that many modern keyboards do not have a separate LF key generating 0x0a, only CR key for 0x0d
2 - update code to actually use a "." period - no change to documentation required
* PERIOD - NEXT BYTE WITH ADDRESS
CMNOTB CMPA #'. ; ? PERIOD FOR NEXT BYTE
BNE CMNOTL ; BRANCH NO
* LDA #CR ; GIVE CARRIAGE RETURN - replace with two NOPs
NOP
NOP
SWI ;TO CONSOLE
* FCB OUTCH ; HANDLER - replace OUTCH with PCRLF
FCB PCRLF ; change to PCRLF HANDLER for SWI lookup - same as in ^ previous byte code below
STX <ADDR ; STORE NEXT ADDRESS
BRA CMPADP ; BRANCH TO SHOW
3 - update code to use more convenient keys - I chose to use "[" and "]" for previous byte and next byte respectively as these are on both vintage and modern keyboards and easy to type/access (over going for the ^ in the original code for prev byte
* RIGHT SQ BRACKET ] - NEXT BYTE WITH ADDRESS
CMNOTB CMPA #'] ; ? RIGHT SQ BRACKET ] FOR NEXT BYTE
BNE CMNOTL ; BRANCH NO
* LDA #CR ; GIVE CARRIAGE RETURN - replace with two NOPs
NOP
NOP
SWI ;TO CONSOLE
* FCB OUTCH ; HANDLER - replace OUTCH with PCRLF
FCB PCRLF ; change to PCRLF HANDLER for SWI lookup - same as in ^ previous byte w/address code below
STX <ADDR ; STORE NEXT ADDRESS
BRA CMPADP ; BRANCH TO SHOW
* LEFT SQ BRACKET [ - PREVIOUS BYTE AND ADDRESS
CMNOTL CMPA #'[ ; ? LEFT SQ BRACKET [ FOR PREVIOUS BYTE
BNE CMNOTU ; BRANCH NOT
LEAX -2,X ; DOWN TO PREVIOUS BYTE
STX <ADDR ; STORE NEW POINTER
CMPADS SWI ; FORCE NEW LINE
FCB PCRLF ; FUNCTION
CMPADP BSR PRTADR ; GO PRINT ITS VALUE
BRA CMEM2 ; THEN PROMPT FOR INPUT
Thank you for this emazing work.
I use combined ROM and it's running well with ASSIST09 and BASIC 1982.
I try to understand the basic USR function to call ASM piece of program.
The Exemple 4 don't work.
Have you an idea to solve issue.
Maybe wrong address => dc 7b JMP GIVABF ; Return to BASIC
Best Regards
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.