[net.ham-radio] Xerox 820 REVEALED#5--updates & hints

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