Post by feedingdragon on Jul 26, 2019 14:32:57 GMT
2 questions, actually.
1) In researching, I found only a single place that mentions using the GEOS128 boot ROM in the external function slot (REU 1750.) It stated that the ROMs available will all work if a single byte is changed, but does not say which byte, or what it needs to be changed from/to. Further searches have failed to show me the answer, and I'd prefer not to try to figure it out myself (hate disassembling code to figure things like that out, sorry.) I will if I have to, but I'm hoping someone already has the answer.
2) Since I'm installing this in a 128, has anyone ever considered altering the C64 GEOS boot ROM to copy itself to 64 mode RAM, then switch to 64 mode? You have 16k of programming space to accomplish this, and it seems like it should be fairly easy to do. May even allow the stock configure utility to work (as the GEOS code is now in RAM instead of ROM, so switching the bank from ROM to RAM should no longer hurt anything. Actually planning to work on this myself, though it will involve learning a lot more about the 128 than I know now. Only ever really did any programming on my 64 back in the day. When I got a 128, the only programming I did was for 64 mode.
Post by feedingdragon on Aug 18, 2019 13:18:05 GMT
Well got a working prototype of a C64 GEOS ROM that will Switch a C128 to 64 mode, then start itself up. It has the advantage of detecting the drive type in use (1541, 1571, or 1581) and installing the appropriate part of the GEOS floppy driver, and even asking which drive to boot from (if it doesn't find the DeskTop in drive 8 that is.) Can change the default drive from 8 by using a hex editor to change the value at x8eff from x08 to x09 or x0a. I couldn't get GEOS to load up on any other drive numbers.
Still working on it, mainly because my programming is rather crude and clunky But also because setting drive 10 (x0a) and it refuses to work 100%. It will boot up with a 1581 drive there (which is what I used for all my testing: 8-1541, 9-1571, 10-1581.) But you can never add the other drives. You can add them, but they won't show up. Putting 1581 into any other slot (8 or 9,) and they still don't show up after boot, but you can manually add them without any issue. Booting to 1541 or 1571 in either slot (8 or 9,) and it will detect the other drives and add them automatically. Unless, I'm assuming, you have settings disabling them in favor of RAM or what-not. Been to long since I worked with GEOS, and when I did, I din't have a REU, just 3 1541 drives. Never tried booting other than drive 8 back then either. I really only used GEOS for some productivity software, back in the day, as well.
I used the freely downloadable version 2.1 from the web to build this, and spent a lot of time making it look pretty Still waiting on some parts to finish modding my 128, but I'll check it on real HW when I get that finished. Been using Vice for testing for now. If anyone has the equipment and want to test it on real HW, I look forward to any results you get. For now, if I don't figure out what is up with drive 10, I'm going to remove it from the options. Also hoping to figure out what's up with the 1581 device (it won't auto-detect the other drives.) Probably going to involve disassembling the driver code and working out what that does. I hate tracing code like that I'm not "exceptionally" worried about it, as the problem persists even if I use the pure disks (created through the same download site,) to load up normally.
OK, may be a dead cause. Minor issues I had hoped to fix, or even remove planned options to make a more pure transfer, seem to be unfixable. Cannot seem to write to disks reliably in GEOS, but the problem remains even when running a pure form from the disk. Problem goes away if I switch from VICE128 in 64 mode to VICE64. So, am wondering if that's a VICE thing or something my real 128 will face. I know that VICE128 has problems with either burst mode, or turning off burst mode (will have to look that up,) which is why I've had problems running some things in VICE in the past (that ended up working fine on my real HW.)
Anyway. Anyone with a physical system (and the means to put the ROM on an EPROM,) willing to test what I've put up and let me know if the problem persists with real HW or just VICE? It would be appreciated. I'll test it myself once my 128 is back up & running again. But would sort of like to get to working on it again if I can/should.
Post by feedingdragon on Aug 20, 2019 23:40:50 GMT
Turns out the problem exists on real HW whether I run from floppy or use my ROM. Cannot write to disks, and lose disk drives on a regular basis. So, GEOS64 won't run on a 128 in 64 mode it seems Oh well. Guess I'm stuck with just GEOS128. Onward to trying to figure out why the GEOS128 ROM cannot be run from External Function ROM. Not that it makes a difference any more. I'm back down to only 2 things I have that actually work, and I would like to install. Since I'm using 128k EEPROMs, I can put those on the internal Function ROM and just worry about the External one when/if I find 2 more I'd like to use.
Post by feedingdragon on Sept 30, 2019 1:13:26 GMT
Well, found the byte that needs to be changed. Offset 0x0046, 0x17 = internal & 0x2b = external. However, the GEOS 128 ROM is showing the same issue (both in VICE and on my 128DCR,) that GEOS 64 had. That is, it refuses to write to disks. Load the disk normally, and it works just fine. Use the ROM and it won't write to disks. Does anyone else have this issue?
Using downloaded files from CBM Files I decided to build my own ROM file. The problem I faced was that the GEOBoot128 file was 37.3 KB and a function ROM only provides 32 KB. So, I worked out a way to bank switch a 27C512 chip (the same method could actually be used to access 4 banks easily, but a larger chip would require building an adapter as well.) This gave me access to 64 KB Using the extra space I included drivers for the 1541, 1571, & 1581 drives. Wrote code that would search drives 8 & 9 for the Desk Top file, detect the type of drive, and patch in all the proper code changes. I also wrote it to work in either the internal or external socket. I've tested it, and it seems to work just fine. I'm still waiting to hear about permission to distribute it But I can provide a means of constructing your own ROM if anyone is interested. Is a bit of work, and requires VICE & DOS (could probably do it with Linux or MAC OS as well, but I don't know how.)
I'll provide instructions if anyone wants, or just the full ROM file if I ever get permission.
I used for a while the C128 ROM version in the internal socket. A member here actually was kind enough to give to me. The main issue with the internal socket is that it provides read only capability. Meaning if you change you set up you have to use an external version of GEOS to re-run the "config" file. A generic ROM will not have your personal set up and in my case I needed to run the "config" file every time. The booting was faster but because of the set up it actually defeated the purpose.
I do not know if the socket in the 1750 REU is read only, or would allow savings of the "config" settings.
Both are read only. In all honesty, it only cuts the load time in half (both mine, and the ROM already available.) It still loads the Desk Top & configuration from the disk. It only loads the main GEOS Kernal from ROM. So, the ROM you had "should" have loaded the config from the Desk Top disk you were using. Change disks, change config. That's the way mine works as well. He "may" have incorporated some of the Desk Top data into his ROM as well, but I don't, honestly, see how. He's already chopped over 5K (probably close to 5.5K) from the GEOS Kernal data, just to get it to fit into a single 32K ROM.
Just ran some speed trials in Vice (can't do it with real HW as I don't have JiffyDOS or a 1581.) Got some surprising results.
With a stock 1541, I got about what I expected. Around 140 seconds loading from disk and 40 seconds with the ROM. However, the 1571 changed that to 40 seconds without the ROM and around 30 seconds with. The 1581 was the real kicker with 30 seconds and 25 seconds. That's in emulation, though. Will run some trials on my real HW later (company just arrived,) with stock results for the 1541 & 1571.