mancuso@psuvax.UUCP (04/11/84)
It works!! We succeded in getting CP/M 2.0 up on one of the boards the other night, so now it is official--it *is* possible. I wrote a boot program and the CBIOS section and well, it works. The code still needs some work to make it bulletproof, though. Most of the functions map right over to the Xerox monitor ROM entry points with a bit of shuffling. There are some little things that need to be changed (CP/M sends characters in the C register to be output, and Xerox wants them in the A register...) but nothing too difficult. Some updates and hints: In a previous article I mentioned that the monitor command 'B' also boots the system. It does, but it boots from disk 01 instead of disk 00 like the 'A' command does. If your boot program (like mine) assumes that the system will be cold-booted from drive 00, make sure you use the 'A' command to boot the system. I just got this update on the 'undocumented' monitor entry points: *********************************************************************** From .....!ucbvax!waldron.wbst@Xerox.ARPA Wed Apr 11 07:32:57 1984 Subject: Re: Xerox 820 REVEALED#2--Monitor Jump Tables I hope I can fill in some of the blanks. This info is from the 820 Software Development guide. I have not tested any of them. For those that were short and clear I typed the actual code listing with comments verbatim. F033 SPACE Print a space In : ?? Out: ?? F03F ASCHEX Convert ascii to hex ASCHEX: SUB '0' RET C CP 10 CCF RET NC SUB 7 CP 10 RET C CP 16 CCF RET F7F3 BLOCK Block move routine BLOCK: CP 3 ;CHECK IF PARAMETER COUNT IS 3 SCF RET NZ CALL BLOCAD LD A,C OR B RET Z ;EXIT NOW IF BC=0 LDIR RET BLOCAD: EX DE,HL OR A ;CLEAR CARRY SBC HL,DE ;GET DIFFERENCE BETWEEN EX DE,HL ;HL & DE FOR BYTECOUNT PUSH DE PUSH BC POP DE ;GET OLD BC INTO DE POP BC INC BC ;GET COUNT+1 INTO BC RET F7F9 FILL Memory fill routine F7FC TEST Memory diagnostics F7FF GOTO Execution routine F802 VERCMD Memory block compare In : ?? Out: ?? Hope this helps. Brian ************************************************************************ Thanks again. The connections we used for the disk drive (SA800/801) are: Xerox Floppy Name 01 NC - 02 NC - 03 NC - 04 20 Index 05 26 Drive Select 1 06 28 Drive Select 2 07 NC - 08 18 Head Load 09 34 Direction Select 10 36 Step 11 38 Write Data 12 40 Write Gate 13 42 Track 00 14 44 Write Protect 15 46 Read Data 16 NC - 17 22 Ready 18 NC - 19 NC - 20-37 11-49(odd) GND We are using a separate power supply for the disk, so no power connections were made from the board to the floppy. If you are looking for a cheap way to connect to J7, try cutting an IC socket in half. I used an 8 pin socket, cut it in half, trimmed it a little, and hooked up 3 leads to it. On the two boards here, the HS signal at J7 is garbage, so the eventual fix will be to cut the PC trace, and run a wire from U34 pin 8 to J7. (Has anyone else had this problem?) Mail and news got screwed up here last week because of a major filesystem crash, so if you sent me something and I haven't replied, try me again. I'd really like to hear if anyone else is making progress on these things. --- Overall there is a smell of fried onions. (fnord) :+: Pat Mancuso :+: Penn State University Usenet: :+: ...!psuvax!mancuso Bitnet: :+: mancuso@psuvax1