Comments (5)
Sounds good Phillip.
There is no specific schedule for producing release binaries. I just do it when it feels like things are fairly stable. I will produce a new pre-release with binaries in the next couple days.
-Wayne
from romwbw.
I think the questions that were brought up in this discussion have all been answered or addressed, so I am going to mark it closed. Please do not hesitate to ask additional questions.
from romwbw.
Wayne,
trying to unwrap your quite complicated system, but I think I've gathered some facts that I'd like to test for correctness, and some questions about things that I don't fully understand.
Probably too complicated! :-)
After booting into the dbgmon (M at boot), it is running from
0xC000
?
And, its formal size is0x1000
so finishing at0xCFFF
?
Correct.
It looks like it is finished by
0xC960
or thereabouts, with the rest slack space?
Correct.
Is the CP/M CCP/BDOS/BIOS pre-loaded from
0xD000
?
No. After HBIOS initializes it's stub at 0xFE00-0xFFFF, it runs the romldr module. At that point, neither CP/M nor dbgmon are loaded. The romldr will load either CP/M or dbgmon (or any of the other options) depending on your selection. Many years ago when dbgmon was first created, it was intended that it could be loaded at the same time as CP/M which is indeed why it loads at 0xC000 to avoid overlapping with CP/M CCP/BDOS/CBIOS. However, there is no longer such a scenario.
Is the ROM switched out when the dbgmon is running, and therefore the code from
0x000
to0x8000
is a RAM copy of HBIOS?
Short answer: yes. Long answer: During HBIOS initialization (prior to dbgmon or anything else running), the HBIOS code is copied from a fixed image in ROM into a dedicated page of RAM. HBIOS cannot run directly from ROM because it has embedded variables. At the end of HBIOS initialization, the bottom 32K bank is switched to the dedicated application bank (TPA in CP/M terminology). So, at the point that dbgmon gets control, it has from 0x0100 to 0xBFFF as working RAM. The HBIOS code is only switched into the bottom 32K by the high memory proxy when an HBIOS API call is made.
Or, is it something else, like a number of applications NASCOM BASIC, TASTYBASIC, EASTER EGG (Mandelbrot), or CAMEL FORTH?
dbgmon works exactly the same as these applications. As far as HBIOS is concerned, dbgmon is just another application/OS.
Is it certain that the code from
0x0100
to0xBFFF
not used from the dbgmon?
Correct. dbgmon uses only 0xC000-0xCFFF. Although, it does rely on the HBIOS proxy at 0xFE00-0xFFFF.
On application exit assuming dbgmon is still existing, is the best thing to do to jump to
MON_LOC+3
whereJP UART_ENTRY
is found?
Hmmm... actually, it would be more appropriate for dbgmon to set up a restart vector at 0x0000 so that any application running under dbgmon could use JP 0 or RST 0 to restart. I will implement that very shortly.
If dbgmon is overwritten, is it simply best to set to bank 0 and
RST 0
for exit?
Or, is there something nicer?
If dbgmon is overwritten, that would be the only possible way to exit.
IF RAM is already switched in, and the Page0 is correctly loaded, things are pretty straightforward. For the "app" startup model for z88dk, I am planning to use
0x0100
as the origin, and through to0xBFFF
for the combined binary/data sections. If the monitor is finished by0xD000
I could leave a hole in the allocation and continue through to0xFDFF
when the HBIOS shim starts, but I don't see a need to get fancy right now.
The above is exactly correct. I am contemplating relocating dbgmon to 0xF000-oxFDFF which would provide even more application space. Not sure yet.
Or, I could just have the data/bss sections start at
0xD000
through to the shim.
You could do that, but better if I just relocate dbgmon and then you would have the entire 0x0100-0xEFFF memory space.
When triggered by the dbgmon to run at
0x0100
the "app" would decompress its data sections, and reset the bss sections, and would run using the hbios function call at RST08 or 0xFFF0.
Yes.
Using additional banks would be on the "to do" list for later.
OK
IF ROM is still switched in and the dbg monitor is running while looking at ROM up to
0x8000
, then somehow I'd have to get the RAM switched in, before the Hexload program could function to load the lower addresses (but I don't think this is the case).
Above is not the situation, so I guess it doesn't apply.
Great questions. Let me know if you have any more.
Thanks,
Wayne
from romwbw.
Wayne,
thanks.
I've got the basic support in place now, through PR #1324. This works for the two serial ports. Now you've got #54 in place, I'll add timing shortly. Also, connecting to the ROMWBW disk drivers is a to do shortly.
I had some serial port overflow problems with the dbgmon hex loader, so I might look at how to speed it up, or make it more robust too. The CPM implementation doesn't seem to have the same issue, so it is not coming from HBIOS. Another thought to do.
How / when you produce release binaries for platforms?
Cheers, Phillip
from romwbw.
I'll have a bash at the RC2014 standard platform too, and add a subtype romwbw to that z88dk target once this work is done. I don't have a CF interface card, so might have to rely on a bit of guesswork with respect to the CF interface. But if it works for SCZ180 HBIOS drivers for SD cards, then there's no reason why it wouldn't for RC2014 on CF.
from romwbw.
Related Issues (20)
- RPi4: Build failure "zxcc: Cannot locate bios.bin" when path depth is less than 4 levels HOT 6
- Hi-Tech C compiler generates error "Can't execute $EXEC". Is it a bug or a feature? HOT 17
- SC126 Z180: CP/M 2.2 drive letters assigned to missing SD card HOT 2
- hd1k_combo.img is too small in size for large media, I: and J: drives are not initialised HOT 23
- The RTC maybe set to UTC instead of local time HOT 17
- v3.4.0-dev.9 regression: SC126: minicom shows garbage characters on connection HOT 26
- Text file corruption from FAT32 to CP/M, is it a bug or a feature ? HOT 15
- COPY.COM is in the CP/M 2.2 ROM but is missing from the CP/M 2.2 slice HOT 4
- I am working on Linux. Since Version 3.2.0 it is no longer working. First Problem is with zxcc. I am getting an error msg zxcc: Cannot locate bios.bin If I change to this path and do a make twice, it works. Second problem is it no longer generates die ROM-Images. It stops in HBIOS and asks for the he platform. I think there is a problem in the Build.sh which should call itself in a loop, but that doesn't work. HOT 5
- XMODEM issue with RC130 and versions after 3.0.1 HOT 2
- Typo in User Guide HOT 5
- Where to modify number of drives/slices for SD card HOT 3
- CLS returns capital H char on pigfx terminal HOT 8
- diskdefs and combo image HOT 4
- IM MODE 0,1 and 2 (and CTC) HOT 5
- DiskList.txt is missing from the Binary directory HOT 4
- How to modify the ROMDISK image HOT 3
- Doc Folder Minor Reorg (Trivial) HOT 7
- Microdrive detection timeout HOT 3
- eZ80 support HOT 14
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from romwbw.