; cpmbios.lib 2/20/2012 dwg - get$off, get$drm, and get$spt need c=drvnum ; cpmbios.lib 12/26/2011 dwg - ; Copyright (C) 2011-2012 Douglas Goodall All Rights Reserved. ; For non-commercial use by N8VEM community XLT$OFS equ 0 ; Translate Table RV1$OFS equ XLT$OFS+WORDSIZE ; Reserved Field 1 RV2$OFS equ RV1$OFS+WORDSIZE ; Reserved Field 2 RV3$OFS equ RV2$OFS+WORDSIZE ; Reserved Field 3 DBF$OFS equ RV3$OFS+WORDSIZE ; Directory Buffer DPB$OFS equ DBF$OFS+WORDSIZE ; Diskk Parameter Block Pointer CSV$OFS equ DPB$OFS+WORDSIZE ; Checksum Vector ALV$OFS equ CSV$OFS+WORDSIZE ; Allocation Vector DPH$LEN equ ALV$OFS+WORDSIZE ; size of normal DPH LU1$OFS equ ALV$OFS+WORDSIZE ; Logical Unit Signature Byte 1 'L' LU2$OFS equ LU1$OFS+BYTESIZE ; Logical Unit Signature Byte 2 'U' CUR$OFS equ LU2$OFS+BYTESIZE ; Current Logical Unit (default) NLU$OFS equ CUR$OFS+WORDSIZE ; Number of LU's (capacity/9) SPT$OFS equ 0 ; Sectors Per Track BSH$OFS equ SPT$OFS+WORDSIZE ; Block Shift Factor BLM$OFS equ BSH$OFS+BYTESIZE ; Data Allocation Block Mask EXM$OFS equ BLM$OFS+BYTESIZE ; Extend Mask DSM$OFS equ EXM$OFS+BYTESIZE ; Disk Size Max DRM$OFS equ DSM$OFS+WORDSIZE ; Number of Directory Entries AL0$OFS equ DRM$OFS+WORDSIZE ; Allocation bitmask for directories AL1$OFS equ AL0$OFS+BYTESIZE ; Allocation bitmask for directories CKS$OFS equ AL1$OFS+BYTESIZE ; Size of Directory Check Vector OFF$OFS equ CKS$OFS+WORDSIZE ; Number of Reserved Tracks DPB$LEN equ OFF$OFS+WORDSIZE ; Disk Parameter Block Length ; BIOS Memory Locations BIBOOT equ 0E600h BIWBOOT equ 0E603h BICONST equ 0E606h BICONIN equ 0E609h BICONOUT equ 0E60Ch BILIST equ 0E60Fh BIPUNCH equ 0E612h BIREADER equ 0E615h BIHOME equ 0E618h BISELDSK equ 0E61Bh BISETTRK equ 0E61Eh BISETSEC equ 0E621h BISETDMA equ 0E624h BIREAD equ 0E627h BIWRITE equ 0E62Ah BILISTST equ 0E62Dh BISECTRN equ 0E630h ; These are rel zero drive number for talking to the BIOS ; BDOS typically uses rel one drive codes BIDRVA equ 0 BIDRVB equ 1 BIDRVC equ 2 BIDRVD equ 3 BIDRVE equ 4 BIDRVF equ 5 BIDRVG equ 6 BIDRVH equ 7 ; On entry: c=drive number get$spt macro push psw push b push d call BISELDSK lxi d,DPB$OFS dad d mov e,m inx h mov d,m xchg lxi d,SPT$OFS dad d mov e,m inx h mov d,m xchg pop d pop b pop psw endm ; On entry: c=drive number get$drm macro push psw push b push d call BISELDSK lxi d,DPB$OFS dad d mov e,m inx h mov d,m xchg lxi d,DRM$OFS dad d mov e,m inx h mov d,m xchg pop d pop b pop psw endm ; On entry, c=drive number get$off macro push psw push b push d call BISELDSK lxi d,DPB$OFS dad d mov e,m inx h mov d,m xchg lxi d,OFF$OFS dad d mov e,m inx h mov d,m xchg pop d pop b pop psw endm ; eof - cpmbios.lib