åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå4FDCBOOT.Z80 respectively from the CPMUG User Group Library. They have been modified to correct problems in the original version with respect to use of the Persci single arm voice coil disk drives. The names were also changed to indicate that the programs have been additionally checked out with the 16FDC. The major changes to the original code were as follows: a) corrected PIP A:=B:filename.ext the original code improperly accessed the Persci 277/299 single arm voice coil drives b) corrected current drive assignment on a warm boot the original code always reference drive A: after a warm boot FDCBIOS.Z80 and FDCBOOT.Z80 are the bootstrap and Cbios for running CP/M 2.x with a Cromemco 4FDC/16FDC controller board, a Z80 CPU, and minimum 20K of RAM. CP/M 1.4 can also be supported if some of the 2.x-only code is removed. This code is also applicable to, and tested upon, the California Computer Systems disk controller board model 2422, if a serial port at 0 compatible with CDOS is used (a 3P + S, or a Cromemco TUART, or the serial port on a Cromemco Single Card Computer.) This source is capable of supporting three types of disks: 5 inch (such as Wangco), 8 inch (such as Shugart), and single-arm voice-coil 8 inch (such as Persci). Between one and four drives are supportable, but no intermixing. There is no current support for double-sided drives, but it should be easily addable. There is no support for the double density mode in the Cromemco 16FDC, or the CCS 2422. This bios is limited to 128 byte sectors. The 8 inch format is compatable with all CP/M and CDOS versions currently known. The 5 inch format (skew of 5) is compatable with all 5 inch CDOS formats currently used. It is assumed that the main console, at port zero, is already initialized by RDOS or some other program. If not, you can insert the necessary code into FDCBOOT.Z80. As additional features, the routine contains an optional reader-punch and printer support routine, via TUART and PRI boards. Also, in a commented section is a small modification so the DEL key (07FH) is changed to a Control-U by the CBIOS, for those who have Backspace on the terminal. I do not like to use two hands just to be able to erase a mistake. The source is for Cromemco Z80 assembler, and there are five constants in the front to be changed to select various options. First, select the type of drive: If 5 inch, LARGESW and PERSCISW should be 0. If 8 inch Shugart, LARGESW should be 1, PERSCISW 0. If Persci, PERSCISW should be 1. LARGESW should also be altered in FDCBOOT.Z80. Next, NUMDRIVES should be 1 to 4 for 5" and 8" drives, and 2 or 4 for Persci double-disk drives. Then, to have support for printer and TUART, BIGIOSW should be 1, otherwise 0. You might also wish to change BAUDRATE to the desired value for the reader-punch (110 baud is supplied). Note: if the CCS 2422 is used, it may be necessary to supply an initialization and bootstrap routine for the console port, if that is on a TUART addressed at zero. The current code does not initialize the port at zero, assuming that has been done before the disk was booted. The code for the TUART referred to here is for an additional TUART port, not the console port, but it is easy to add the necessary code to initialize the console port also. Finally, set BEGINADR to the start of the CBIOS. It is supplied as 0E400, which is for a 64K system. This should also be altered in FDCBOOT.Z80. The switches on the 4FDC/16FDC are set exactly as described in the board manual. For a system over 48K, the ROM must be disabled upon bootstrapping. For a smaller system, the RDOS can stay in, or not, as you desire. For a CCS 2422 controller, the same statement applies, except the 2422 ROM need not be disabled unless the system memory exceeds 60K. FDCBOOT.HEX and FDCBIOS.HEX are supplied, assembled from the source files. They are set for a 64K version of CP/M. You can use them in another system if you can put about 8K at the upper end of memory (E000) and maybe 16K at the low end (0000) to be able to re-assemble the files. The following instructions should assist in the initial start-up for a 64K CP/M system: 1) modify FDCBIOS.Z80 where appropriate 2) create a copy of CPM64.COM from MOVCPM 3) reboot with CDOS generated at 48K 4) ASMB FDCBIOS HEX=F200 do not continue past this point if there are errors 5) DEBUG CPM64.COM 6) F FDCBIOS.HEX 7) R 4000 8) M 3200 34xx 1F80 9) M 980 2500 DC00 10) G F200 11) SYSGEN subsequent updates 1) modify FDCBIOS.Z80 where appropriate 2) reboot CDOS 3) ASMB FDCBIOS HEX=F200 4) reboot CP/M 5) MOVCPM 64 * 6) SAVE 36 CPM64.COM 7) DDT CPM64.COM 8) IFDCBIOS.HEX 9) R4000 10) M3200 34xx 1F80 pls note the value 34xx will vary 11) IFDCBOOT.HEX 12) R4000 13) M4000 404F 900 control ^C 14) SAVE 36 CP/M64.COM 15) DDT CP/M64.COM 16) control ^C 17) SYSGEN for other memory size systems 1) ED FDCBIOS.Z80 2) modify MEMSIZE 3) ED FDCBOOT.Z80 modify MEMSIZE 4) reboot CDOS 5) ASMB FDCBIOS HEX=(top of memory-E00) 6) ASMB FDCBOOT HEX=0 €b€æ<ĮCuEwL NćU \Dcj"q-° -P --p-Ą-š -Š -p# "-B'D"Kj Ml T#V%]Ō _Ö fŗ h1/4 o-P -p-p-Ą-p 1/4 # B% IÆ K± ROTQ[Č]ŹdģfīmLo-ą -p-p-ą -P -° LN68¶?ęF MLTj[†b›i-p-P- -ą- -@-`--P" ›ŗ<ŲCķJQXZaRcljq-°-@-P"-P"- -p-€-ą Ŗ6Ä=äDKR/YN`€gœn-€-€- -`--š--ą"-°--`- œ±<ĻCćJQ#X>_TfVmzo|v-P"-@-ą"--@-š--Ą!-ą |(tm)0¶7Ó>ņE L?S`Zba-Š-Š-Š-°-€-p-ą=;’’  2 -cc öööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööö