mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 00:14:25 +00:00
91 lines
2.1 KiB
Plaintext
91 lines
2.1 KiB
Plaintext
;**************************************************************************
|
|
;* CP/M 3 BIOS for Z80em86 Z80 CPU emulator *
|
|
;* *
|
|
;* Hard disk driver *
|
|
;* *
|
|
;* Copyright (C) 1992-2009 Stewart Kay *
|
|
;**************************************************************************
|
|
;
|
|
; ChangeLog (most recent entries are at top)
|
|
; ------------------------------------------
|
|
; v1.0.0 - 16 February 2009, S.J.Kay
|
|
; - Prepare for public release.
|
|
;
|
|
; v1.00 - 17 April 1995, S.J.Kay
|
|
; - Undocumented changes.
|
|
;
|
|
; v0.00 - 1992, S.J.Kay
|
|
; - Initial creation date.
|
|
|
|
; Entry point 1 : ihdsk - Initialize
|
|
; Entry point 2 : lhdsk - Login
|
|
; Entry point 3 : whdsk - Write sector
|
|
; Entry point 4 : rhdsk - Read sector
|
|
|
|
.z80
|
|
;
|
|
maclib TPORTS.LIB
|
|
maclib ASMTYPE.LIB
|
|
;
|
|
public ihdsk, lhdsk, rhdsk, whdsk
|
|
;
|
|
extrn @dtbl, @adrv, @rdrv, @dbnk, @dma, @trk, @sect, @cnt
|
|
extrn HDDdsk, dph2
|
|
;
|
|
dseg ;banked memory
|
|
|
|
; Entry point 1 - Initialize hard disk
|
|
ihdsk: ld hl,0
|
|
ld (HDDdsk),hl ;kill the HDD file entry (was for GENCPM)
|
|
out (gthard),a ;get the HDD file drive code
|
|
cp 16 ;is drive code in range ?
|
|
ret nc
|
|
inc a ;HDD file present ?
|
|
ret z
|
|
dec a ;restore drive code number
|
|
add a,a
|
|
ld d,0
|
|
ld e,a
|
|
ld hl,@dtbl ;drive table address
|
|
add hl,de ;table offset for DPH entry
|
|
ld de,dph2 ;DPH address for HDD file
|
|
ld (hl),e
|
|
inc hl
|
|
ld (hl),d
|
|
ret
|
|
|
|
; Entry point 2 - Login hard disk drive
|
|
lhdsk: ret
|
|
|
|
; Entry point 3 - Write hard disk sector
|
|
whdsk: or 0ffh ;write operation flag value
|
|
jp hdisk
|
|
|
|
; Entry point 4 - Read hard disk sector
|
|
rhdsk: xor a ;read operation flag value
|
|
|
|
hdisk: push af ;save operation flag
|
|
if banked
|
|
ld a,(@dbnk)
|
|
out (bnkdma),a
|
|
endif
|
|
ld a,(@trk)
|
|
ld b,a
|
|
ld a,(@sect)
|
|
ld c,a
|
|
ld a,(@adrv)
|
|
ld e,a
|
|
ld hl,(@dma)
|
|
pop af ;restore operation flag
|
|
ld a,2 ;sector size code (512 bytes)
|
|
jp z,readop
|
|
out (wrhard),a
|
|
jp result
|
|
readop: out (rdhard),a
|
|
result: or a
|
|
ret z
|
|
ld a,1
|
|
ret
|
|
;
|
|
end
|