mdh
Experienced Member
So I have a MinEz 1.2xm @MB + 0 (all that was available at the time), so how do I get TRSDOS running on it?
That's a very interesting little machine. I like how they use the high speed serial interconnect to the I/O coprocessor. 384Kbps seems pretty high for the bandwidth to the CPU, but I guess it has a native serial port to handle it. Curious about the protocol they use over it.The Agon Light 2 could be an interesting porting target
The eZ80F92 specification states that it's UARTs are capable of 1.25 Mbps and they also includes 16-byte FIFOs. With 8-bit serial that's 125 KB/sec which gives 160 T states per byte for plenty of processing. The Agon documentation also states that it uses flow control.384Kbps seems pretty high for the bandwidth to the CPU, but I guess it has a native serial port to handle it.
So I have a MinEz 1.2xm @MB + 0 (all that was available at the time), so how do I get TRSDOS running on it?
Hello Lowen, thank you for post.The Agon Light 2 could be an interesting porting target, since it also runs an eZ80F92. 50 Euros and available for pre-order from Olimex.
(I am a fan of WSM's cased products; I have a Min-Z Z180 system from Bill as well as a Min-eZ on the way. This board would be a true 'Model 5' with a real keyboard port and a VGA output.)
I agree completely and I would love to play around with eZ80 SBC's and related stuff. Zilog is a sad story in microcomputer history. Especially since it was pushed aside by Intel's crappy chip designs (btw, I am one of those that hate Intel's mneumonics prefering Zilog's. Oh and lower case also).Zilog dev tools are great when using C, well almost great. It is not geared toward a large project done in assembly. In fact its assembler does not accept labels that were used in TRSDOS.
Misosys products used labels that works on most all assemblers except Zilog.
Zilog ZDS do not produce good reports of labels, line numbers, where label was defined etc.
Sadly, all they want to discuss is C, or that's been my experience with their support line. Now that it changed hands again support is almost non-existent.
Sad what happened to a once great company.
On the Model II/16, their was a very well done version of CP/M called Aton CP/M. It used some bank switching to give a TPA of about 52k. I loved it over TRSDOS althou I still used TRSDOS a lot. Once Tandy (and MS finally released Xenix for the 16, I dumped TRSDOS completely even thou Xenix was still a bit buggy.As I said, I don't know enough about TRSDOS. I'm not familiar with it on a low level at all. On, say, a CP/M system, most of the CP/M software used the BIOS to do things like print to the screen, etc.
I didn't know how many TRS programs used the same facility vs leveraging the fact that they "knew" they had a memory mapped display terminal.
Similarly, how did programs that were used on a 64x16 original Model 1/3 series adapt to an 80x24 screen, again, assuming that they were using the video memory directly rather than whatever BIOS structure TRSDOS presents.
I assume that BASIC leveraged the BIOS to read the keyboard and write the screen, and that the BIOS had a LOCATE primitive for cursor positioning, but how many BASIC games, for example, PEEK/POKEd the screen memory directly.
I mean, maybe your system has the video memory and all that working already. This sounds like, at a glance, TRSDOS working on a non-TRS-80 Machine, or are you just trying to plug in a different CPU in to a TRS-80 system?
Hello Lowen, thank you for post.
Agon looks like a nice board but I want to point out $50 euro might not be that much better than Circle M. That was 50 euros. Circle M prices are in $. Sales to USA may have a heafty VAT tax.
But it is a nice board and one of the few eZ80 boards. Lots lots Z80/Z180 but few eZ80. But it is growing fast.
Regarding 'true model 5'. Model 5 is a pipe dream. It can be what you want it to be. Who knows what a next release would have looked like.
Also note, bank memory is really needed to run advanced TRS-80 apps. It will not be possible for M5T & M5M to ever have this capability.
However without bank memory allows us to have basically a system running on one chip.
fxuprmem = GPIO_OUTPUT_PINx #Fixed Upper Memory, named after the Model 4 control signal Can be 0 or 1
if address[15] == fxuprmem :
address[16:23] = [0,0,0,0,0,0,0,0] #or whatever MBASE you would like;
#driven by eight bits of a GPIO port, allowing the shared 32K to be in any MBASE page.
else :
# Note that it is completely sufficient to do nothing here, but
# it will waste half of your RAM
address = address[0:14]+address[16:23]+[0] #Shifting A16-A23 down one, pad 0
Models starting with M5E will support bank memory.
Sorry I have been having some health problems and its taking me longer to respond.
Also note, bank memory is really needed to run advanced TRS-80 apps. It will not be possible for M5T & M5M to ever have this capability.
Yes I did notice in source 4p was called model 5.Bill (WSM) does good work. I have a Min-Z from a couple of years ago and I just received a Min-eZ last week. Nice build quality.
The Agon system, however, has a VGA output as well as local keyboard, and is more of a standalone system, where the Min-eZ is a tethered system that requires a USB-capable system as a terminal. Nothing wrong with that, of course, it's just not standalone.
Actually, there is a pretty good guess out there now what a rumored Model 5 might have been, on Matthew Reed's trs-80.org, but I'm pretty sure you're already familiar with that page. But, back in reality, the model # of 5 is already taken in TRSDOS 6, by the 4P.
Yes. The eZ80's 64K bank size (using MBASE as if it were an MMU) isn't very compatible. I have an untested idea how to do it with minimal hardware and using only MBASE to do the bank selection, but, as I said, it's untested. I have four or five eZ80F91 AcclaimPlus dev modules on which to try it out, eventually. Health issues in the family and the death of my MIL have drastically curtailed hobby activities.
But the essence of my idea is to define the memory addresses like this:
Python:fxuprmem = GPIO_OUTPUT_PINx #Fixed Upper Memory, named after the Model 4 control signal Can be 0 or 1 if address[15] == fxuprmem : address[16:23] = [0,0,0,0,0,0,0,0] #or whatever MBASE you would like; #driven by eight bits of a GPIO port, allowing the shared 32K to be in any MBASE page. else : # Note that it is completely sufficient to do nothing here, but # it will waste half of your RAM address = address[0:14]+address[16:23]+[0] #Shifting A16-A23 down one, pad 0
Drive fxuprmem with a GPIO output, feeding one side of an XOR, and A15 on the other side. Use an eight-bit multiplexer, with the A-side grounded to all zeros (or tied to eight GPIO outputs), and the B-side being the addresses (the eighth bit, A23, can be just tied to ground, since it would always be zero). Connect the XOR output to the selector input of the mux (pay attention to the selector's logic level and adjust the definition of fxuprmem accordingly). Downshift the output addresses by one from the input addresses, making A15 get the value of A16, A16 getting the value of A17, etc. As I say, untested, but should work. You then set the MBASE to the bank number. This effectively 'shadows' half of the address space seen in any particular 64K page to either the upper or lower 32K of the page where MBASE equals 00H.
Cool.
I know how that is; just now getting back up to speed on projects after the trainwrecks called 2020, 2021, and 2022. My sympathies; I hope things go well with you.
Lowen: I understand what you're thinking of doing with the multiplexing but one thing you'll need to be very conscious of is the speed/timing of a 50 MHz eZ80. Basic timing only leaves about 11 ns for external address decoding plus the actual memory access. Typical multiplexor / memory combinations would force the addition of a wait state which could REALLY slow down this pipelined processor.
One thing to remember is the relative speed of the eZ80 vs Z80. A 32K LDIR takes just under 2ms on a 50 MHz eZ80 which is very roughly about 2000 instructions on a 4 MHz Z80. Certainly not an ideal technique to be copying the common or bank area but definitely workable, especially if there isn't a lot of bank switching, and it doesn't take any external logic. The only question would be whether the applications are well behaved and always call a system API to do the bank switching.
I have been meaning to post this for some time and now is as good as time as any.
I have said I am running TRSDOS 6.3 and I dont think that is correct.
Unless someone corrects me, last release of TRSDOS is 6.2.
Later Logical Systems sold LSDOS 6.3 and that was last release.
I think the course you're taking using the Min-eZ and kin is a reasonable thing to do. The audience is too small to justify the expense of anything larger.Again, it is going to take a series of products to be everything to everybody and there will still be people who want something that it dont have but I dont have a budget to build M5-Supercomputer!
Good idea but bank switching must take place at interrupt speed and then some (already in interrupt and then do additional switching).
I think you're misunderstanding where I would envision the copying to take place. If an application is well behaved, it calls an API to switch banks and thus the copy only takes place within the customized portion of operating system code and not within application code. A new release of dos will always require a rework and/or integration of peripheral specific OS code but it would not require any change to application code.f you do this your code may not be compatiable with future releases of dos and in fact may not work with older loads.
Looking forward to it! You have my email.Lowen: I think zero wait bank switching may be achievable with either 2 external SRAMs and/or the very careful use of fast logic, whether LVC, FET or possibly something like a Lattice ispMACH 4000V CPLD with 2.5ns Tpd. I'm tied up for a few days but will reply privately after I've had a chance to think some more about it.
No I follow your idea but let us consider why I abandoned the idea.I think you're misunderstanding where I would envision the copying to take place. If an application is well behaved, it calls an API to switch banks and thus the copy only takes place within the customized portion of operating system code and not within application code. A new release of dos will always require a rework and/or integration of peripheral specific OS code but it would not require any change to application code.
Yes, I understand we have 16 mb but our task at hand is to make existing TRS-80 software run.Interrupt code on the eZ80 is entered in ADL mode and thus has full access to all 16 MB of memory without any need for copying banked data. While a user application might add interrupt routines for timers or UARTs, I wouldn't foresee them switching banks while waiting for an interrupt. Moreover, this user code would already need to be customized for use with eZ80 peripherals.