30-Aug-80 15:42:00,281;000000000000 Date: Saturday, 30 August 1980 15:42-MDT From: Mike Leavitt Sender: LEAVITT at USC-ISI To: INFO-CPM at MC Subject: CP/M WITH APPLE HAS ANYONE HAD EXPERIENCE WITH THE APPLE AND THE MICROSOFT CP/M CARD? DOES IT WORK AS ADVERTISED? ANY LIMITATIONS? 31-Aug-80 05:00:00,5885;000000000000 Date: Sunday, 31 August 1980 05:00-MDT From: Frank J. Wancho To: INFO-CPM at MIT-MC Subject: Kick-off Kicking this off: CP/M 2.2 has a known bug in that the CCP does not properly retain the USER number (across resets, I believe). (Does any use, or plan to use USER numbers other than 0 or set the option bits - for the in-memory copy of the directory only for R/O, $DIR, $SYS, etc.? Those option bits should be a part of the actual directory entry on disk anyway!) There is an inconsistency between disk drive numbering used by SELDSK and the others. SELDSK is zero-based numbering (A=0, B=1, etc.), while the other functions use 0 in the FCB to mean the default drive, then A=1, B=2, etc. My SELDSK, when used under a 1.4 system, simply takes that byte from the FCB and decrements it for use in the BDOS call. (Using SELDSK is optional for 2.2 since the functions pick up the disk drive from the FCB (Byte 0) - unless you want to actually change the default drive in your program - and then change it back, just as for 1.4. Does anyone NOT take the JMP 0 exit from their programs?) Digital Research's next project is CP/M for 8086 machines. Apparently they think that will be the next darling of the industry. Once that CP/M for the 8086 is off the ground, Version 3.0 is next in sight. It will have a number of MP/M features retrofitted, and a five byte TOD entry put in an as yet undetermined place in the directory entry. The format is a two-byte date (in address format, MSB first) with Day 1 = January 1, 1978, and each of the hours, minutes and seconds as two BCD digits. Earlier this week, I received a fresh-off-the-press copy of "The CP/M Handbook (with MP/M)" by Rodney Zaks. As usual in this industry, it was advertised before it was available. It is very well done to the point that you can throw away most of the manual that comes with the CP/M package. (The CP/M 2.2 is the same manual as for 1.4 except for the last two "sections", and those sections have more(!) examples of actual code, especially for how to use the random record access features.) I was disappointed that Zak's book did not give a hacker's insight to more of the CCP other than how to do that auto-start I asked about, and it detailed alot about using ED - but no code worth mentioning. The handbook also details more about MP/M than I wanted to know - mainly because I now know what I am missing - with a number of features which I don't see why they can't be used in regular CP/M, such as GENHEX (make a HEX file out of a COM or PRL file suitable for relocation with GENCOM). SPOOLER builtin. A time-of-day scheduler. And others...maybe that is what they have in mind for 3.0?? (A personal comment here: I can't see really using MP/M in any current micro, given the address space limits - even with bank-switching, unless you are willing to tolerate the time it takes to switch. It would be more cost-effective to share the relatively expensive peripherals such as a printer and hard disk, than to time-share a micro. Even better would be to add more dedicated micros such as you already have for the disk I/O controller, and "front-end" the terminal, printer, and modem I/O functions - even above interrupt-driven I/O.) We also got in a copy of TPM from Computer Design Labs (for Z80's only - sorry). I have not had a chance to completely check it out yet. I can say this: it was no sweat to bring it up just like that. SYSGENning a new system is an integrated on-step process. It has an entry to set and read time, a fixed location with fixed time, and can be patched to actually read your clock board, if you have one. It will run most, if not all CP/M 1.4 programs, but not vice-versa. It has most of the same extensions that 2.2 has, but not in the same entry points - in fact, it has more. Noteable are: 6 - Get TPM Serial Number 28 - Read Console with no echo 29 - Get Date 30 - Get Time 31 - Trap Control (for ^C) 32 - Set Date/Time 33 - Chain Program 34 - Get TPM Version Number 35 - Do Direct Disk I/O 36 - Create FCB 37 - Return Time in MS. (hardware required) 38-40 Reserved I am especially attracted to Chain Program. A while back I saw ads for OS1 in which they were offering to throw in the source code for CP/M, probably 1.3. Does anybody know where I can obtain a preferably commented listing of CCP - any version? Some people simply overlay CCP and write their own versions of whatever they need that may already be available in CCP. I would rather leave CCP around and find a way to hand it stuff and return to my program when done - especially if I load my stuff just under CCP... and chain, if required...Anybody got any ideas on this? Finally, I would urge you to read Alan Miller's CP/M product reviews and other related tidbits in Interface Age - the October issue includes his CBIOS (again) now with code for interrupt-driven, buffered console input and an article describing how it works. He is also reachable by phone, when he doesn't have his modem plugged into the campus computer, and talks to the Lifeboat and other people around the country on a regular basis. (The campus computer is a DEC, which doesn't have paper tape I/O - one of his machines is the DEC paper tape reader/punch...) (I dropped my charter subscription to IA before I latched onto CP/M, and now his articles would be the only reason for resuming it.) That's all I have for now. If there are no objections, I would like to make this correspondence available to my Digital Research contact who is also much interested in suggestions for documentation improvements (but that was before I received Zak's book...). Also, would someone care to relate to us those portions of interest from Lifeboat's LifeLine? --Frank 31-Aug-80 13:29:00,1461;000000000000 Date: Sunday, 31 August 1980 13:29-MDT From: Frank J. Wancho To: INFO-CPM at MIT-MC Subject: STAT in 2.2 Before I get beat about the head and shoulders about STAT's setting of the individual file attributes in 2.2, let me correct myself now: STAT indeed does set those parameters on the disk copy of the directory entry itself. (This is opposed to 1.4 STAT which only sets the whole disk as R/O or R/W and only until the next boot.) You must (in either level) do a disk system reset (and reselect the saved default if 2.2) if you change disks while your program is running, or do a DIR in CCP, or the changed disk will be assumed to be R/O! This was particularly annoying with ED when I was creating the dummy entries for the master cataloger programs, although I appreciate the protective approach. --Frank P.S. There is some confusion, still, about CP/M records (128 bytes each), used by the read and write functions, and the SAVE built-in command, which uses 256-byte pages, and the actual disk I/O. For example, my N* double-density system uses 512-byte blocks. Does this mean that for each disk access, my BDOS and disk controller interface selects which CP/M record I want out of the four records in the 512-byte block, reading or writing 512-byte blocks for each disk access regardless of what may already be in the buffer from the last request? Can anybody explain what is really going on here? 31-Aug-80 15:16:00,272;000000000000 Date: Sunday, 31 August 1980 15:16-MDT From: Frank J. Wancho To: INFO-CPM at MIT-MC Subject: Typo In my first message describing the TOD format, that date will be in address format alright, but that is LSB (not MSB) first, of course. --Frank 31-Aug-80 15:39:00,572;000000000000 Date: Sunday, 31 August 1980 15:39-MDT From: Lauren at UCLA-SECURITY (Lauren Weinstein) To: FJW at MIT-MC cc: INFO-MICRO at AI Subject: Kick-off Don't go anywhere near OS1!!! In a previous message, I recounted what I discovered about the organization selling that dog when I flew up north to meet with them once. The "CP/M source" they offer is no CP/M source at all, it is simply the source of the CP/M emulator that lets OS1 run some CP/M 1.4 type programs. It has nothing to do with real CP/M as far as I can tell. Do not be misled! --Lauren--