;
; I/O Drivers for CP/M 2.2 fdc system.
;
msize	equ	64		; memory size in k-bytes
bias	equ	(msize-20)*1024
ldrbias	equ	0d600h - bias	; offset to use when reading hex file
ccp	equ	3400h + bias
bios	equ	ccp + 1600h
;
	org	bios
;
; Jump vectors to routines.
;
	ds	3		; cold start
	ds	3		; warm start
	jmp	const		; console status
	jmp	conin		; console character in
	jmp	conout		; console character out
	jmp	list		; list character out
	jmp	punch		; punch character out
	jmp	reader		; reader charac Rutgers St. #4
Rochester, N.Y. 14607



        SOME EXTRA CDOS CALLS

NUMBER	FUNCTION	ENTRY PARAMETERS	RETURN PARAMETERS
_________________________________________________________________

128*	Read Console	none			A = character
	(without echo)

129	Get User	none			BC = pointer to user
 	Register Pointer			registers

130	Set User	DE = address		none
	 ^c abort

131	Read Logical 	DE = block #		A = 0 if ok
	 Block		B = disk number		A = 1 if I/O error
			B(7) = 1 if		A = 2 illegal request
	DHG%:MV~Ѓ€А\jmr~Љ(48:<>BCOMГГнsa1ЕхеХЕЛy 5Н"c2eбе&ХЋС~б8DMб8лб0*c8сЙ:eн{aЙе!геyЛї‡!'…o0$~#foґ бЙгЙя–x§(ЕНСхНН‰с_Г*й>GOЙJ{л!Л90л)лхлЙ>BKл!)л)л0#·нBтД	Лѓ= млЙХ>> ь>ьС~ю Ш#(щХ~ю:+ ~Ц@##>	+#~ю*(80h
	out	pdata
	ret	
;
; Return status of list device.
;
listst:	in	pstat		; read status
	cma			; invert status bit
	ani	pready		; test for printer ready
	rz			; if not ready
	mvi	a,0ffh		; return ready flag
	ret
;
; Patch space. User i/o drivers may be put here.
;
; Note that the last address must be less than bios + 2ffh.
;
patch1:	ds	1
;
; The following patch is unitialized memory space.
; This may be used for temporary storage.
;
; Note that the last address must be less than bios 
	mov	a,c		; get character
	out	cdata		; send character
	ret
;
; Return eof from reader, return from punch.
;
reader:	mvi	a,1ah		; eof character
punch:	ret			; do nothing
;
; Centronics Interface.
;
pstat	equ	54h		; printer status
pdata	equ	pstat		; printer data
pready	equ	20h		; printer ready mask
;
; Write to list device.
;
list:	call	listst		; check list status
	jz	list		; loop until ready
	mov	a,c		; get character
	ori	80h		; strobe character
	out	pdata
	ani	7fh
	out	pdata
	ori	 function argumentlist.
Where function is the CDOS compatible function you wish to run and
argumentlist is whatever the function takes as normal argumentlist.
Thus a typical ASMB run would look like.....
	A>CDOSCPM ASMB FOOFN LISTOFF
which will assemble the function FOOFN without generating a list file.
(The A> is of course, CPM's prompt). Any trouble with this function
shou