Atlantis wrote:
floobydust wrote:
If you grab my version referenced above, there’s no prompt to worry about. Just set your base and top addresses and you’re done. Also, latest version has an improved RAM test plus Load and Save vectors with some useful code... just implement Xmodem for transfer and you’re done.
I have to admit that I am a little bit confused... This version is a little bit different from standard 2.22, which I used in my project.
1) There is no min_mon.asm file, so where to look for low level I/O subroutines? I thought they were transferred to the main basic.asm file, but there are no ACIAout and ACIAin subroutines. Were they renamed?
2) I see it doesn't assemble with acme asembler...
Maybe you could simply point me to the fragments of code responsible for skipping memory size prompt and Xmodem load/save functions? This way I could include them into my own project...
So, here's some detail:
1- I use the WDC Assembler/Linker package, so the source has been reformatted and much cleaned up. Note that the WDC Tools are free.
2- It's now a single source file, there is NO minimal monitor code, it relies on your SBC having a BIOS for your hardware that provides at least two basic functions:
a- Get a character
b- Send a character
3- All of the vectors are soft-loaded into Page 4 ($0400) as is the input buffer. In the source file, these vectors are declared starting at line 7523. The BIOS routines (from my SBC) are shown starting at line 7548, i.e., $FF36 is get a keystroke, $FF3C is send a character to the console.
4- Memory test, show and go starts at line 527. It's fairly simple, loads/tests for $55, $AA and $00 starting at Ram_base to Ram_top.
5- Xmodem code pieces still rely on my C02 Monitor for the core Xmodem-CRC transfer. The code in the basic source file handles specifics for EhBasic, then call the monitor routines. The Xmodem code in the basic source starts at line 7514.
6- Cold and Warm start are handled by the Monitor... which simply prompts the used for Cold or Warm, then Jumps to the Basic code. Cold start is at $B000, which is start of the code assembly. Warm start is $0000, which requires that basic was Cold started earlier, else you just jump to whatever is loaded at $0000.
My updated code has all of Klaus' fixes and numerous enhancements along with a consolidated page zero usage, plus it requires less page zero use as the Chrget/Chrgot equivalent code (LAB_IGBY) is maintained in ROM and only the 2-byte pointer is maintained in page zero.
If you can provide some details for your SBC hardware, perhaps I can provide you a simple BIOS that will work. My current C02 Pocket SBC uses an older Philips/NXP SCC2691 UART and one of my older SBCs uses a common 6551 ACIA. I have full-duplex interrupt-driven and buffered BIOS code to run either chip as a console.
I'll be posting an updated BIOS/Monitor for my current C02 Pocket SBC shortly. The BIOS (and hardware page) take less than 1KB and the Monitor just a tad less than 5KB and is quite rich in function. It also requires the WDC Tools package to assemble and link.
Hope this helps....