ncherry
Experienced Member
Short:
How did you burn the ExBasROM (modified CoCo BASIC) into the SBC's 16K ROM? Not how you used an PROM burner, I have lots of experience with that but how did you fit the file (which is starting at $007C, not $DB00) into the 16K ROM (which starts at $C000)?
Long:
I've built a Grant Searle 6 chip Motorola 6809 (7 chip actually) SBC and I'm quite happy with the board. So in preparation to power up the board I've assembled the ExBasROM code. I've assembled the source with as9. I've tested the S19 file with a 6809 emulator, it works.
So far, so good.
So I have a nice 28C256, minipro (Linux) and TL866II+. I've erased the chip and it checks clean. So I'm getting ready to burn the S19 and I find this little gem:
First line shown is at address of $007C ($0A + $06 bytes). RAM starts at $0 (thru $7FFF). ROM at $C000, code starts at $D800 through $FFFF. That code in the listing (below) is
I can't find any code that copies the bytes out of the ROM to the RAM. Yup, self modifying. I can modify the code to copy it down but I'm checking to see if anyone has already done this. I'll test this on the sbc09 emulator.
How did you burn the ExBasROM (modified CoCo BASIC) into the SBC's 16K ROM? Not how you used an PROM burner, I have lots of experience with that but how did you fit the file (which is starting at $007C, not $DB00) into the 16K ROM (which starts at $C000)?
Long:
I've built a Grant Searle 6 chip Motorola 6809 (7 chip actually) SBC and I'm quite happy with the board. So in preparation to power up the board I've assembled the ExBasROM code. I've assembled the source with as9. I've tested the S19 file with a 6809 emulator, it works.
So far, so good.
So I have a nice 28C256, minipro (Linux) and TL866II+. I've erased the chip and it checks clean. So I'm getting ready to burn the S19 and I find this little gem:
Code:
S10A007C0C8426020C83B67C
S10600857EDCBF5B
First line shown is at address of $007C ($0A + $06 bytes). RAM starts at $0 (thru $7FFF). ROM at $C000, code starts at $D800 through $FFFF. That code in the listing (below) is
Code:
0107 007a EXECJP RMB 2 LB4AA
0108
0109 * THIS ROUTINE PICKS UP THE NEXT INPUT CHARACTER FROM
0110 * BASIC. THE ADDRESS OF THE NEXT BASIC BYTE TO BE
0111 * INTERPRETED IS STORED AT CHARAD.
0112 007c 0c 84 GETNCH INC <CHARAD+1 *PV INCREMENT LS BYTE OF INPUT POINTER
0113 007e 26 02 BNE GETCCH *PV BRANCH IF NOT ZERO (NO CARRY)
0114 0080 0c 83 INC <CHARAD *PV INCREMENT MS BYTE OF INPUT POINTER
0115 0082 b6 GETCCH FCB $B6 *PV OP CODE OF LDA EXTENDED
0116 0083 CHARAD RMB 2 *PV THESE 2 BYTES CONTAIN ADDRESS OF THE CURRENT
0117 * * CHARACTER WHICH THE BASIC INTERPRETER IS
0118 * * PROCESSING
0119 0085 7e dc bf JMP BROMHK JUMP BACK INTO THE BASIC ROM
0120
0121 0088 VAB RMB 1 = LOW ORDER FOUR BYTES OF THE PRODUCT
I can't find any code that copies the bytes out of the ROM to the RAM. Yup, self modifying. I can modify the code to copy it down but I'm checking to see if anyone has already done this. I'll test this on the sbc09 emulator.