home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
ENTERPRS
/
CPM
/
UTILS
/
S
/
ZSIM12.ZIP
/
ZBIOS.INC
< prev
next >
Wrap
Text File
|
1991-12-31
|
6KB
|
262 lines
; Macro um aus der Z80 Emulation Biosroutinen aufzurufen, => V20
calln macro nr
db 0edh,0edh
db nr
endm
; Macros fuer Z80 Sprunganweisungen, die TASM nicht kennt
z80jp macro labl
db 0c3h
dw offset labl
endm
z80ret macro
db 0c9h
endm
; naechste Zeilen orginal aus DR's CBIOS.ASM
;
MSIZE equ 20 ;cp/m version memory size in kilobytes
;
; "BIAS" is address offset from 3400h for memory systems
; than 16k (referred to as "b" throughout the text).
;
BIAS equ (MSIZE-20)*1024
IOBYTE equ 3 ;intel i/o byte
CDISK equ 4 ;current disk number 0=a,...,15=p
; org bios ;origin of this program
zbiosbeg equ this byte ; start of z80 bios
; jump vector fuer einzelne Ups
z80jp zboot+ZBIOSDISPL ;cold start
wboote equ this byte
z80jp zwboot+ZBIOSDISPL ;warm start
z80jp zconst+ZBIOSDISPL ;console status
z80jp zconin+ZBIOSDISPL ;console character in
z80jp zconout+ZBIOSDISPL ;console character out
z80jp zlist+ZBIOSDISPL ;list character out
z80jp zpunch+ZBIOSDISPL ;punch character out
z80jp zreader+ZBIOSDISPL ;reader character out
z80jp zhome+ZBIOSDISPL ;move head to home position
z80jp zseldsk+ZBIOSDISPL ;select disk
z80jp zsettrk+ZBIOSDISPL ;set track number
z80jp zsetsec+ZBIOSDISPL ;set sector number
z80jp zsetdma+ZBIOSDISPL ;set dma address
z80jp zread+ZBIOSDISPL ;read disk
z80jp zwrite+ZBIOSDISPL ;write disk
z80jp zlistst+ZBIOSDISPL ;return list status
z80jp zsectran+ZBIOSDISPL ;sector translate
rept 25-16-1
z80jp zwboot+ZBIOSDISPL
endm
z80jp zmove+ZBIOSDISPL
z80jp ztime+ZBIOSDISPL
zvecend equ this byte
zboot equ this byte
calln 0
z80ret
zwboot equ this byte
calln 1
db 31h,80h,00h ; ld sp,80h
z80ret
zconst equ this byte
calln 2
z80ret
zconin equ this byte
calln 3
z80ret
zconout equ this byte
calln 4
z80ret
zlist equ this byte
calln 5
z80ret
zpunch equ this byte
calln 6
z80ret
zreader equ this byte
calln 7
z80ret
zhome equ this byte
calln 8
z80ret
zseldsk equ this byte
calln 9
z80ret
zsettrk equ this byte
calln 10
z80ret
zsetsec equ this byte
calln 11
z80ret
zsetdma equ this byte
calln 12
z80ret
zread equ this byte
calln 13
z80ret
zwrite equ this byte
calln 14
z80ret
zlistst equ this byte
calln 15
z80ret
zsectran equ this byte
calln 16
z80ret
zmove equ this byte ; number as in cp/m plus
calln 25
z80ret
ztime equ this byte ; number as in cp/m plus
calln 26
z80ret
LAST_TRCK0 equ 39 ; track = 0..39
LAST_SEC0 equ 35 ; sektor = 0..35
LAST_SEC1 equ 31
XLT0 equ 0
XLT1 equ 0
; datas cpc system format
; blocksize bls=1024
SPTC equ 24h ;
BSHC equ 3 ; log2(bls/128)=3
BLMC equ 7 ; bls/128-1
EXMC equ 0 ; (bls/1024)-1
DSMC equ 168 ; disksize-1
DRMC equ 63 ; direntrys-1
AL0C equ 11000000b
AL1C equ 00000000b
CKSC equ 16
OFFC equ 2
; datas cpc data format
; blocksize bls=1024
SPTD equ 24h ;
BSHD equ 3 ; log2(bls/128)=3
BLMD equ 7 ; bls/128-1
EXMD equ 0 ; (bls/1024)-1
DSMD equ 177 ; disksize-1
DRMD equ 63 ; direntrys-1
AL0D equ 11000000b
AL1D equ 00000000b
CKSD equ 16
OFFD equ 0
; datas fuer CP/M 86 SS
; blocksize bls=1024
SPT0 equ 32 ;
BSH0 equ 3 ; log2(bls/128)=3
BLM0 equ 7 ; bls/128-1
EXM0 equ 0 ; (bls/1024)-1
DSM0 equ 152 ; disksize-1
DRM0 equ 63 ; direntrys-1
AL00 equ 11000000b
AL10 equ 00000000b
CKS0 equ 16
OFF0 equ 1
; datas fuer CP/M 86 DS
; blocksize bls=1024
SPT1 equ 32 ;
BSH1 equ 4 ; log2(bls/128)=3
BLM1 equ 15 ; bls/128-1
EXM1 equ 1 ; (bls/1024)-1
DSM1 equ 157 ; disksize-1
DRM1 equ 63 ; direntrys-1
AL01 equ 10000000b
AL11 equ 00000000b
CKS1 equ 16
OFF1 equ 1
;
; disc parameter data Ramdisk
;
; blocksize bls=1024
SPTR equ 32 ; 4K
BSHR equ 3 ; log2(bls/128)=3
BLMR equ 7 ; bls/128-1
EXMR equ 0 ; (bls/1024)-1
DSMR equ 63 ; disksize-1
DRMR equ 31 ; direntrys+1
AL0R equ 10000000b
AL1R equ 00000000b
CKSR equ 0
OFFR equ 0
;
; structure fuer disc parameter headers
;
dph struc
dw 0 ; xlt
dw 0 ; scratch pads
dw 0
dw 0
dw ? ; dirbuf
dw ? ; dpb
dw ? ; csv
dw ? ; alv
dph ends
;
; structure fuer disc parameter blocks
;
dpb struc
spt dw ?
bsh db ?
blm db ?
exm db ?
dsm dw ?
drm dw ?
al0 db ?
al1 db ?
cks dw ?
off dw ?
dpb ends
; drive a:
dph_base equ this byte ; disk parameter base
dph0 dph <XLT0,0,0,0,offset dirbuf+ZBIOSDISPL,offset dpb0+ZBIOSDISPL,offset csv0+ZBIOSDISPL,offset alv0+ZBIOSDISPL>
dph1 dph <XLT1,0,0,0,offset dirbuf+ZBIOSDISPL,offset dpb1+ZBIOSDISPL,offset csv1+ZBIOSDISPL,offset alv1+ZBIOSDISPL>
dpb0 dpb <SPTC,BSHC,BLMC,EXMC,DSMC,DRMC,AL0C,AL1C,CKSC,OFFC>
dpb1 dpb <SPTR,BSHR,BLMR,EXMR,DSMR,DRMR,AL0R,AL1R,CKSR,OFFR>
dirbuf db 128 dup (?) ; fuer alle Laufwerke gemeinsam
csv0 db (DRMC+1)/4 dup (?)
alv0 db (DSMC/8)+1 dup (?)
csv1 db (DRMR+1)/4 dup (?)
alv1 db (DSMR/8)+1 dup (?)
@date dw (?)
@hour db (?)
@min db (?)
@sec db (?)
zbiosend equ this byte