This directory contains the sources for the former Medincom software. Before I describe the contents of each self-extracting archive, I have to say a few words about how this software is written. All of this software is written in either assembly language or MS BASIC Professional Development System v7.10. It had been written before I learned C. The way the code is written is unbelievably dirty and unmaintainable. First of all, MS BASIC is absolutely unsuitable for such projects, no matter how "professional" does Mr. Gates call it. When I was writing this code, I was fighting with it and making horrible kludges to work around its crippleness. These kludges form as assembly-language library called ASMEXT. It consists of assembly-language routines to be called by BASIC modules. MS BASIC can be used in two ways. The BASIC sources (.BAS files) can be either compiled with an utility called BC into more or less normal object modules and then linked into a stand-alone executable or run within a special integrated environment called QBX. I was using both ways, and the design of my libraries reflects this. When using the former way, you can link with non-BASIC object modules and libraries in the normal expected way. In particular, there can be more than one add-on library and the modules can be divided between them in an arbitrary way. Furthermore, calls between the BASIC and non-BASIC code can be made in both directions, although the program execution must start with BASIC code. When using the latter way, the story is different. QBX deals with BASIC code only. All non-BASIC code has to be put in a so-called "quick library" (QLB), which is really a hacked form of DOS executable (produced by running Microsoft Linker with a special option). Since it's really a core image and not an object library, it has to be bounded. No code in a quick library can call anything outside of it. This means that the non-BASIC code in a quick library can't call the BASIC code loaded into QBX directly. Oh, and you can't have multiple quick libraries. Originally my BASIC code used two things: the INTERRUPTX routine that comes with BASIC and my ASMEXT. Having the need to both build stand-alone EXEs and work in QBX and the one-QLB-only constraint in mind, I was using two parallel files: ASMEXT.LIB and ASMEXT.QLB. The two performed the same functions but were intended for different environments. Since I always needed INTERRUPTX which comes in QBX.{LIB,QLB}, I was incorporating QBX.LIB into ASMEXT.LIB. The QLB was kept in sync with the LIB automatically: a QLB is made by running LINK with the list of OBJs and LIBs you want to include in it and a special option, so it was enough to run it on ASMEXT.LIB. And so the original ASMEXT had been put together, and I started making BASIC programs that use it. The idea of ASMEXT was to include all assembly- language code that I would ever need in any BASIC program. This was in part stipulated by the single-QLB rule of QBX. Of course today this looks silly. Over the time I have written a lot of specialized routines used only by certain programs, and yet they have all been included in ASMEXT, contributing to making it the unmaintainable mess it is now. MTC Medincom's primary product was FDA, and it is the program that drove most of ASMEXT's development. Up to version 5.5 FDA's lowest-level hardware access routines were written in BASIC. Of course direct hardware access is the lest thing BASIC is designed for, and these versions of FDA were constantly plagued by mysterious hardware-level problems. Version 5.6 introduced SWIN, a mechanism for controlling the floppy disk hardware properly, and its lowest-level routines (called the SWIN driver) were written in assembly. At the time I was doing this re-organization I had suddenly forgotten about the single-QLB rule and made SWINDRV a library separate from ASMEXT. I was immediately returned to reality as soon as I tried to run QBX, but it was already too late: I had already done a lot of work on SWIN (using the stand-alone EXE method, understandably). And so a major re-organization had taken place: two libraries were used to build stand-alone EXEs (ASMEXT and SWINDRV), and both were included in one QLB called QBXUSER.QLB. I also stopped incorporating QBX.LIB into ASMEXT.LIB, raising the library count to 3 (of course it was still included in QBXUSER.QLB). This is how it is today. Understandably the libraries (especially ASMEXT) were changing all the time. Usually these changes keep the library compatible with the previous versions, since they usually just add new routines. (The last point means that even if there were no changes that break compatibility, rebuilding any of the programs with the current libraries won't produce the exact same executable as you'll find in my distributions, although (hopefully) the program will function identically.) Sometimes, however, changes were introduced that do break compatibility. In this case you won't be able to take the sources for some old program, modify them, and rebuild the program, since you won't have the libraries that go with them. Unfortunately, this is probably the case for quite a few programs. Also unfortunately, I haven't kept any old versions of the libraries. (Actually I did scavenge up some version of ASMEXT that predates SWIN and the library splitting. I have no idea, however, exactly where does it stand with respect to the BASIC sources I have and which programs will it be helpful for, if any. In any case I'm including it.) The above description should give you an idea of why is the code in this repository totally unmaintainable. "OK," you are saying, "so can I look at it myself?" Here it is. The libraries are in the following archives: BC71USER.EXE The pre-built ASMEXT.LIB, SWINDRV.LIB, and QBXUSER.QLB ASMEXT.EXE The sources for the modules in ASMEXT SWINDRV.EXE The sources for the modules in SWINDRV The following archives contain the sources for the programs themselves: CYR24.EXE Cyr v2.4 DSKHID10.EXE DiskHide v1.0 FDA72.EXE Floppy Disk Analyser (FDA) v7.2 FDE11.EXE Floppy Disk Enhancer (FDE) v1.1 FDREC22.EXE Floppy Disk Recoverer (FDRec) v2.2 POLYTYPE.EXE PolyType RT11MD10.EXE RT-11 Minidisk (RT11MD) v1.0 SBX13.EXE SteelBox v1.3 Pull down the archives that seem interesting to you and unpack them. Each (except the most trivial ones) has a README.TXT file which you should read for further directions.