I am preparing a binary load for download. Those wishing to be a part of field testing please PM me.
This binary file will contain TRS-OS and also TRSDOS OS. TRS-OS provides BIOS and services to load and execute TRSDOS.
I have shaken tree of many commands on this platform, and they work fine, or as far as I have tested.
Examples include, AUTO, BASIC, FREE, DEVICE, DIR, FREE, DUMP, SYSGEN, etc. Things like TAPE100 and COM/DVR load but there is no hardware to talk with.
Drives are lightning-fast RAM drives. This test version will contain two 360k drives already in load file. Thus, it is similar to have a model 4D with two 360k drives.
Using diskdisk utility from Misosys you can create 5", 40/80 cyl, single or double sided drives on a real TRS-80. This file can then be directly loaded into RAM memory starting at address for that RAM drive. In reverse diskdisk volumes in RAM can be saved as a file and directly loaded back into a TRS-80.
Two very important Misosys utilities that every TRSDOS installation should have is diskdisk and overdrive.
Overdrive is very important to have on your installation and load at every boot. This will save a great amount of wear and tear on your legacy real hardware drives. MTBF is directly proportional to use. Overdrive will cut your disk accesses and vibration of heads seeking between directory and overlays dramatically.
These diskdisk's residing in RAM are referred to as volumes. Volumes reside in slices (partitions) of RAM or other non volatile storage.
Video memory. For now, I simply reserved 1920 bytes of high memory and let video driver do what it has always done. So far of all I tested, I have found no Radio Shack program, Misosys, BASIC etc that attempts to write directly to video RAM. They all use API to speak with video thus are redirected out serial port.
There are a few exceptions such as utilities or programs that more directly manipulate hardware. Roy Soltoff software seems to all use API unless he needs to bypass for a technical reason. Software generated via compilers all use API.
One program that does not work correctly is HELP. There are some issues I am working on, it needs some TLH (tender lovin help).
There is no need to use things like MEMDISK since I provide new RAM drives. I designed my drivers to as closely as possible. mimic floppy drives in RAM. I use $FD as driver name to keep things as compatible as possible with legacy versions.
In future I can free up a lot more driver memory and lowcore but for now I wanted to keep on exact memory boundaries as original 6.3 dos.
One thing I could not do now is provide 60 hz RTC interrupts. Yes we have a built in RTC for date and time but in order to create interrupts from PRT I would need to shift some things in lowcore. For this first release and to keep things as exact as possible with original 6.3, I have chosen for now to leave real time interrupts off. Small trade to keep memory map intact.
Since we have a date/time RTC, DOS will still know date/time. There will be a few things in DOS that will not work without 60 hz RTC. Couple examples are commands to place time in upper right corner of screen, type ahead buffer and I have a couple other things I need to double check.
TRSDOS 6 was released with full blown multitasking built in OS, this needed 60hz interrupts. Thus, any apps that made use of this multitasking will not function for now. PROWAM may use real-time interrupts I don't remember.
Once I move to a new version then I will feel free to change things in lowcore. I will then start supporting eZ80 interrupt structure. For this version it is more about compatibility.
A BIOS setup is provided with allows you to maintain RTC date/time.
I am using eZ80f91 Acclaim development board from Zilog. However, since eZ80 is pretty much a SOC, most any hardware using eZ80 that you can fill first 1 MB with this binary load file then reset should work.
It is one reason I have always been jealous of CP/M community. They been running it on most anything that has a Z80. Modular design allows OS to be reconfigured for different hardware.
I have known for over 30 years that most all software for TRS-80 uses API for video because over 30 years ago we used one set of TRS-80s over a phone line remotely running a small businesses. All of Radio Shack business programs used API (inventory, profile 4, payroll, general ledger etc).
Poorly written software or games probably won't work. You can examine memory starting at F800h and see if it did write anything to video RAM.
Future versions will support a separate bank for video.
Again I cannot stress enough to read Roy Soltoff, creator of TRSDOS 6 words, do not bypass API.
Want to crash a system and write buggy software? Bypass API! Want an example of a bug you will spend years chasing.....sometimes it crashes and other times it dont.....here is an example.
API always ensures stack integrity and switches bank 0 in. What happens one day you call a routine directly and it needs a driver that is now in high memory but you have bank 0 switched out. DOS will now jump to some driver in bank 0 but bank 2 is resident. Your program just crashed and that type bug is hard to find. Same thing with stack in wrong place. There are other details but this is not place for all that.
Also I am working on making BREAK key on remote terminal work correctly. As a fix for now if you double tap escape key on terminal it will force DOS to abort currently running app. This is not a real break key but it does solve for now getting in a loop you cannot get out of.
I will be fixing break key.
There are many details more than I can type here.
This first experimental release is for study and research. Point of this study is to further improve a version that mimics a machine TRSDOS can run on. Again, TRS-OS provides services to support TRSDOS running on different hardware.
I may also make Z180 version but more I work with eZ80 I can see it is superior in many ways. Big giant difference is 24 bit linear memory address space. Banks are banks are banks. A system really needs both, large linear address space and additional bank space.
Bank space has a huge advantage in that it is near instantiations switching in and out. One out instruction and new bank is available.
This allows for interrupts to always have bank 0 resident. Remember about using API? When you make a call directly then hardware receives an interrupt, depending on which call you made directly in OS and PC is now executing in lowcore, you are in deep do do.
Once I get a version that will as closely as possible run original TRS-80 software then we will release this as a good as its going to get version (or at least as good as it will get from me).
Myself I am using my versions to control hardware in home automation.
It has been a long road since I first typed ? 1+1 on a TRS-80 at my local Radio Shack in 1978.