DOS/65 by Richard Leary [message #9444] |
Wed, 01 December 2021 19:34  |
floobydust
Messages: 9 Registered: September 2020 Location: Boynton Beach, FL
|
Junior Member |
|
|
As there was an interest recently regarding Richard's DOS/65 code, I've decided to make a post here to let everyone know what's out there.
First, I'm not the expert on this code, Richard is. I, like many, found a reference to it many years ago on a Z80 site. I eventually found Richard on LinkedIn and sent him an invite. He accepted and we eventually hooked up via email. Earlier this year, he sent me a lot of files which are his current working code base.
There is Version 2.xx code, which is what most folks would consider a more complete distribution, i.e., many of the utlities, compiler, assembler, sysgen, etc. This version of code is for a bootable version of DOS/65. This implies you will need a 6502 system with bootable media. There is also Version 3.xx code, which is a much smaller set of programs, but is designed to be held in ROM. Version 3.xx is a more current bit of code... Richard is (or was) working with two 6502 systems. First is Daryl Rictors SBC2.5 and the second is Western Design Centers W65C02SXB. With both systems, he is using a SD Card adapter that interfaces to a 6522 port along with a couple logic chips. Richard also has a S-100 based system that he continues to use.
As of late, I've not received any email replies from Richard since earlier this year. I've sent him a few emails, but he has not responded. I have no idea why, but I've sent him email just last week and still no reply. I'm just hoping he's doing okay. I believe he is in his upper 70's and perhaps some health issues have come into play.
So... Version 3.xx is what I've been working with. In Richards code, there is one main source file that contains CCM and PEM. This source code uses 6502 instructions/addressing modes only (no CMOS stuff). There is also a SIM module and a Monitor module of source code. The SIM calls routines in the Monitor code, which interfaces to the base hardware. Some of his SIM and Monitor code is using some CMOS instructions and for his ROM version for the WDC board, he is also using WDC Tools to assemble and link DOS/65 to an Intel HEX file. Part of the Monitor code initializes a top area of RAM during an initial start of DOS/65 (it's not a boot per se) by copying a section of ROM to upper RAM, then starting DOS/65 from ROM.
What I've managed to do is to integrate his current Version 3.xx code to work with my C02 Pocket SBC with my RTC/CF-Card adapter. My small 2-board system has it's own BIOS and Monitor code and I've written a single SIM module that was based on Richard's initial SIM code, but integrates a core set of routines that call my BIOS and a few Monitor calls. It also shares some common Page Zero variables. I also streamlined the RAM initialization and saved a lot of ROM space. All of my code makes use of the CMOS instructions and addressing modes. I finally modified the CCM and PEM code modules and was able to trim them down by using CMOS instructions and addressing modes. The end result, my total ROM space is 6.5KB for DOS/65 and it uses 4KB of upper RAM for the DOS/65 variables and pointers along with the MAPs required to support 7 drives, all of which are 8MB in size.
I'm happy to share the code I have and my CMOS Version 3.03 is on my GitHub page, along with the C02 Pocket SBC and RTC/CF-Card adapter. During my last email exchanges with Richard, he said he was fine with me sharing the code. I do know that at one point, he was hoping to have his DOS/65 code available on the 6502.org forum download area, but for some reason (unknown to me), that never happened. As of now, the additional utilities from the Version 2.xx have not been moved over to the Version 3.xx code base. That can be a fair amount of work and I've not had a chance to look into it at any level. The utility bits that I did some minor rework on include SUB, SD (Super Directory), UCOPY and XMODEM. Note however that XMODEM is an odd bit of code that has been modified quite a bit by more than one person. On my last update of Serial (terminal app on OSX) it stopped working. I think Serial broke their side of Xmodem using simple byte checksum... my Xmodem upload/download (in my Monitor) uses CRC-16 and still works fine.
I'm hoping to get around to working towards getting more of the Version 2.xx utilities and such moved over, but I don't have any timeframe for doing this. In any case, I'm probably going to add the Version 2.xx code to my GitHub account, but would prefer to get a reply from Richard first. I'll wait a bit longer and see if I get a reply from him. In the meantime, I'm happy to answer anything I can and to share what I have.
Regards, KM
https://github.com/floobydust
|
|
|
|
|
Re: DOS/65 by Richard Leary [message #10153 is a reply to message #10148] |
Fri, 21 October 2022 19:14   |
plasmo
Messages: 916 Registered: March 2017 Location: New Mexico, USA
|
Senior Member |
|
|
Thanks for the link.
I recognize your name as author of sedit, screen editor for DOS/65. I found a copy of sedit.asm following your link, is that the latest? I have it running in DOS/65 on my hardware (CRC65), but I notice it makes lots of access to CF disk even for relatively small file. Perhaps my CF read routine in my SIM is not efficient, but the editor that came with DOS/65 (edit205.asm) seems to write the file to CF disk quickly. Do you have an instruction for using it? Thanks,
Bill
Edit: Please ignore my comment regarding the slowness of writing data to disk. It turns out I have a conflict with zero page utilization, so once I've moved sedit's zero page assignments away from SIM's zero page usage, the sedit program works much better.
[Updated on: Fri, 21 October 2022 22:04] Report message to a moderator
|
|
|
Re: DOS/65 by Richard Leary [message #10162 is a reply to message #10153] |
Wed, 09 November 2022 17:47   |
danwerner
Messages: 50 Registered: October 2015
|
Member |
|
|
This is something I hacked together for the port I did for the original DOS/65 port for the Retrobrew 6x0x SBC here: https://retrobrewcomputers.org/doku.php?id=boards:sbc:6x0x-a tx-6u:start
I also included it in the DOS/65 port for the 6502 processor for Nhyodyne. I did not spend much time on it and is not nearly the quality of Richard's work on DOS/65. There is no real docs for it and only supports ANSI-ish (VT-xxx) terminals and was never really optimized.
As far as the disk access, if I recall it uses pretty simple DOS/65 file IO, nothing fancy. The source is included in the Nhyodyne and is reasonably well documented.
Dan Werner
[Updated on: Wed, 09 November 2022 17:49] Report message to a moderator
|
|
|
|
|
|
|
|
|
Re: DOS/65 by Richard Leary [message #10255 is a reply to message #9444] |
Mon, 20 February 2023 15:00  |
floobydust
Messages: 9 Registered: September 2020 Location: Boynton Beach, FL
|
Junior Member |
|
|
Hi Bill,
I have your port running on my CRC65 as well. I've run it with both a compact flash card and am currently running it on the original IBM 340MB Microdrive. I did try using an older Hitachi 20GB Travelstar DK14FA-20, but it wouldn't boot.... probably due to the time for the drive to come ready after a reset signal.
Early on with V3, I found a drive related bug in PEM... if you do a DIR to a drive that doesn't exist, PEM will loop endlessly on an INVALID DRIVE error. I fixed that in PEM by defaulting to the A drive and sent the fix to Richard long ago... but it never got into the official source.
Some recent stuff I found includes an occasional crash when existing from some applications. COPY203 can do that as can others. I added a short routine to the warm boot code to zero out the free area in page zero that applications can use. This seems to fix these odd crash issues. Granted, I've not made any changes to the port you did for the CRC65, but I've found the same on my C02 Pocket as the CRC65... so nothing more than a FYI.
I'm hoping to finish up Version 3.20 soon... now at Beta 2 level. All modules use CMOS instructions and addressing modes. All disk accesses are now done with records only (no track sector translation in PEM or SIM). The code is both smaller and a bit faster as well. Hoping to have it completed soon...
Regards, KM
https://github.com/floobydust
|
|
|