556
	557			; SETBNK
	558			;       Set DiBk Memory Bank.  Saves bank number
	559			.                in @DBNK for future disk dBtB
	560			.                transfers.
	561
	562		           setbnk
	563	0085	32F600	sta @dbnk
	564	0088	C9	ret
	565
	566
	567			; SECTRN
	568			;       Sector Translate.	 Indexes skew table in <DE>
	569			.                with sector in (BC>.  Returns physical Sector
	570			.               in <HL>	If no skew table (<DE>=0) then
	571			;                returns physical=logical.
	572
	573		          sectrn:
	574	0089	6960	mov l,c ! mov h,b
	575	0088	7AB3C8	mov a,d ! ora e ! rz
	576	008E	EB096E2600	xchg ! dad b ! mov l,m ! mvi h,0
	577	0093	C9	ret
	578
	579
	580			; READ
	581			;       Read physical record from currently selected drive,
	582			.                Finds address of proper read routine from
	583			.                extended disk parameter header (XDPH) .
	584
	585		           read:
	586	0094	2AED002600	ihId @adrv ! mvi h,0 ! dad h    ; get drive code 
and double it
	587	009A	11000019	lxi d,@dtbl ! dad d	      ; make address of table 
entry
	588	009E	7E23666F	mov a,m ! inx h ! mov h,m ! mov l,a     ; fetch 
table entry
	589	00A2	E5	push h	     ; save address of table
	590	00A3	llF8FFl9	lxi d,-8 ! dad d	     ; point to read routine 
address
	591	00A7	C3BDOO	jmp rw$common	     ; use common code
	592
	593
	594			; WRITE
	595			;       Write physical sector from currently selected drive.
	596			.               Finds address of proper write routine from
	597			;                extended disk parameter header (XDPH) .
	598
	599		          write:
	600	OOAA	2AED002600	Ihid @adrv ! mvi h,0 ! dad h    ; get drive code 
and double it
	601	00B0	11000019	lxi d,@dtbl ! dad d	     ; make address of table 
entry
	602	0084	7E23666F	mov a,B ! inx h ! mov h,m ! mov l,a     ; fetch 
table entry
	603	0088	E5	push h	      ; save address of table
	604	0089	llF6FFl9	lxi d,-l0 ! dad d	      ; point to write routine 
address
	605
	606		          rw$common:
	607	OOBD	7E23666F	mov a,m ! inx h ! mov h,m ! mov l,a     ; get 
address of routine
	608	OOCl	Dl	pop d	      ; recover address of table
	609	00C2	1518	dcx d ! dcx d	      ; point to relative drive
	610	00C4	IA32EE00	ldax d ! sta @rdrv	      ; get relative drive code 
and post it
	611	00C8	1313	inx d ! inx d	      ; point to DPN again
	612	00CA	E9	pchl	      ; leap to driver
	613
	614
	615			; MULTIO
	616			;       Set multiple sector count. Saves passed count in
	617			;                @CNT
	618
	619		          multio
	620	OOCB	32F500C9	sta @cnt ! ret
	621
	622
	623			; FLUSH
	624			;       BIDS deblocking buffer flush.  Not implemented.
	625
	626		          flush:
	627	00CF	AFC9	xra a ! ret              ; return with no error
	628
	629
	630
	631			; error message components
	632	OOD1	oDoAo74249drive$msg       db      cr,lf,bell,'BIOS Error 
on ',0
	633	00E3	3A2o542Dootrack$msg       db      '  T-',0
	634	00E8	2C2OS32DOOsector$msg      db      ', S-',0
	635
	636
	637		               . disk communication data items
