.pl 72 .cw 10 .po 6 **************************************************************************** * * * Teilausdruck der Formatanpassungen unter CP/M+ BIOS von Conitec * * Name des Files auf Diskette: FDPROFBK.ASM * * * **************************************************************************** title 'PROF-80 Multi density diskette handler' ; CP/M-80 Version 3 -- Modular BIOS ; Disk I/O Module for PROF-80 ; Letzte Aenderung am 24.11.1984 (Joachim) ; 19.09.1988 Vortex-Schneider Format 5.25" ; SHARP-MZ 8xx Format 5.25" ; IBM PC-MSDOS Format 5.25" ; 07.12.1988 TA-MEZ 80 Tr. Format 5.25" ; in DPB und Disk$Type$List ; eingebaut ; 25.12.1988 Format R.Klaus DP5D3 mit 10 secs und offs2 ; eingebaut dseg ; Disk drive dispatching tables for linked BIOS public fdsd0,fdsd1,fdsd2,fdsd3 ; Variables containing parameters passed by BDOS extrn @adrv,@rdrv extrn @dma,@trk,@sect extrn @dbnk,@cbnk ; System Control Block variables extrn @ermde ; BDOS error mode ; Utility routines in standard BIOS extrn ?wboot ; warm boot vector extrn ?pmsg ; print message @ up to 00, saves & extrn ?pdec ; print binary number in from 0 to 99. extrn ?pderr ; print BIOS disk error header extrn ?conin,?cono ; con in and out extrn ?const ; get console status extrn ?bank .pa Š ; Utility routines in PROF-80 BIOS extrn monon,monoff maclib cdef ; maclib cpm3 ; maclib z80 ; maclib monvec ; maclib syspage ; common control characters cr equ 13 lf equ 10 bell equ 7 ; Extended Disk Parameter Headers (XPDHs) dw fd$write dw fd$read dw fd$login dw fd$init db 0,0 ; relative drive zero fdsd0 dph skew8,dp8d3a,64,144 dw fd$write dw fd$read dw fd$login dw fd$init0 db 1,0 ; relative drive one fdsd1 dph skew8,dp8d3a,64,144 dw fd$write dw fd$read dw fd$login dw fd$init0 db 2,0 ; relative drive two fdsd2 dph skew8,dp8d3a,64,144 dw fd$write dw fd$read dw fd$login dw fd$init0 db 3,0 ; relative drive three fdsd3 dph skew8,dp8d3a,64,144 cseg ; DPB must be resident .pa Š;************************************************************************* ; miteinander unvertr{gliche Formate m}ssen auskommentiert werden !!!!!!!! ************************************************************************** dp8s0 dpb 128,26,77,1024,64,2 dp8d3 dpb 1024,8,77,2048,128,2 dp8d1a dpb 256,52,77,4096,128,2 dp8d2a dpb 512,30,77,2048,256,2 dp8d3a dpb 1024,16,77,8192,256,2 dp5d1 dpb 256,16,40,1024,64,4 dp5d2 dpb 1024,5,40,1024,64,3 ;dp5d3 dpb 1024,5,80,2048,128,3 ; PROF #2 dp5d3 dpb 1024,10,80,2048,128,2 ; Format R.Klaus war 5sec und 3 offs. dp5d2a dpb 512,20,40,2048,128,3 dp5d3a dpb 512,20,80,2048,128,3 ; PROF #4 dp5d4 dpb 512,18,80,4096,128,1 ; VORTEX DS DD FORMAT, SCHNEIDER CPC dp5d4a dpb 512,18,40,2048,64,0 ; MS-PCDOS FORMAT dp5d5 dpb 512,8,40,2048,64,1 ; MZ-8xx ---> geht nur einseitig (Spurueberl.) ;dp5d5 dpb 512,8,40,1024,64,1 ; IBM CP/M 86 SS DD dp5d5a dpb 256,32,81,2048,128,1 ; MEZ-80 TA-PC80 !!!! 81 Tracks !!!! ;dp5d6 dpb 256,32,40,4096,128,2 ; TA-40 Track dseg skew26 skew 26,6,1 skew1 26,6,1 skew15 skew 15,4,1 skew1 15,4,1 skew8 skew 8,3,1 skew1 8,3,1 skew5 skew 5,1,1 skew1 5,1,1 skew10 skew 10,2,1 skew1 10,2,1 noskew skew 16,1,1 skew9 skew 9,1,1 ; VORTEX DS DD SKEWFAKTOR 1; PC-MSDOS SKEW skew1 9,1,1 skew2 skew 8,1,1 skew1 8,1,1 ; MZ-8xx SKEW skew3 skew 16,1,1 ; MEZ-80 TA-PC80 skew1 16,1,1 skew52 skew 5,2,1 ; Format R.Klaus skew1 5,2,1 .pa Š;******************************************************************** ; Der ganze dazwischenliegende Quelltext bleibt unver{ndert ! ********************************************************************* ;******************************************************************** ; ;HIER WERDEN DIE MOEGLICHEN DISK-FORMATE VEREINBART ; ; ; DISK$TYPE$LIST: ; ;DIESE LISTE DEFINIERT DIE VOM BETRIEBSSYSTEM LESBAREN ;PLATTEN-TYPEN ;DIE LISTE BESTEHT AUS BELIEBIG VIELEN EINTRAEGEN VON ;JE 8 BYTE, DIE WIE NACHFOLGEND BESCHRIEBEN AUFGEBAUT ;SIND: ; BYTE 1 :DISK-TYP WIE VON MONTEST ERMITTELT ; BYTE 2 :SEKTOR-ANZAHL ; BYTE 3 :GAP-LAENGE DIE DER UPD 765 VERWENDEN SOLL ; BYTE 4 :WRITE PRECOMPENSATION ; BYTE 5-6:ADRESSE DES DPB FUER DIESES FORMAT ; BYTE 7-8:ADRESSE DER SEKTOR SKEW-TABLE ; ;TEST$FORMAT VERGLEICHT DIE BEIDEN ERSTEN BYTES MIT ;TEST$TYPE UND TEST$MSEK DIE DAS UNTERPROGRAM MONTEST ;LIEFERTT. ; SSIDE EQU 000H ;EQUATES FUER TYPE DSIDE EQU 080H ; SDENS EQU 000H ; DDENS EQU 040H ; MAXIF EQU 000H ; MINIF EQU 020H ; S0128 EQU 000H ; S0256 EQU 001H ; S0512 EQU 002H ; S1024 EQU 003H ; ; ; DB SSIDE OR SDENS OR MAXIF OR S0128 DB 26 DB 07,0 DW DP8S0,SKEW26 ; DB SSIDE OR DDENS OR MAXIF OR S1024 DB 8 DB 35H,2 DW DP8D3,SKEW8 ; DB DSIDE OR DDENS OR MAXIF OR S0256 DB 26 DB 7,2 DW DP8D1A,SKEW26 ; DB DSIDE OR DDENS OR MAXIF OR S0512 DB 15 DB 18H,2 DW DP8D2A,SKEW15 ; .pa Š DB DSIDE OR DDENS OR MAXIF OR S1024 DB 8 DB 35H,2 DW DP8D3A,SKEW8 ; DB SSIDE OR DDENS OR MINIF OR S0256 DB 16 DB 1BH,2 DW DP5D1,NOSKEW ; DB SSIDE OR DDENS OR MINIF OR S1024 DB 5 DB 1BH,2 DW DP5D2,SKEW5 ; ; DB DSIDE OR DDENS OR MINIF OR S1024 ;PROF80 #2 skew 1 ; DB 5 ; DB 1BH,2 ; DW DP5D3,SKEW5 DB DSIDE OR DDENS OR MINIF OR S1024 ;Format R.Klaus DB 5 DB 1BH,2 DW DP5D3,SKEW52 ; DB SSIDE OR DDENS OR MINIF OR S0512 DB 10 DB 0EH,2 DW DP5D2A,SKEW10 ; DB DSIDE OR DDENS OR MINIF OR S0512 ; PROF#4 DB 10 DB 0EH,2 DW DP5D3A,SKEW10 ; DB DSIDE OR DDENS OR MINIF OR S0512 ; VORTEX DS DD FORMAT DB 9 DB 0EH,2 DW DP5D4,SKEW9 ; DB DSIDE OR DDENS OR MINIF OR S0512 ; MS-PCDOS FORMAT DB 9 DB 0EH,2 DW DP5D4A,SKEW9 ; DB DSIDE OR DDENS OR MINIF OR S0512 ; MZ-8.XX DB 8 DB 0EH,2 DW DP5D5,SKEW2 ; ; DB SSIDE OR DDENS OR MINIF OR S0512 ; IBM CP/M 86 SS DD ; DB 10 ; DB 0EH,2 ; DW DP5D5,SKEW2 ; DB DSIDE OR DDENS OR MINIF OR S0256 ;MEZ-80 TA-PC DB 16 DB 1BH,2 DW DP5D5A,SKEW3 ; .pa Š; DB DSIDE OR DDENS OR MINIF OR S0256 ;TA-40 TRACK ; DB 16 ; DB 1BH,2 ; DW DP5D6,SKEW3 ; ; DB 010H ;ENDE-KENNUNG current$dph ds 2 end ;****************************************************************************** ; Achtung:Das Laufwerk, in dem die PCDOS Diskette gelesen werden soll, mu~ ; ein 40-Spur Laufwerk sein, oder mit dem User defined disk timing Kommando ; auf Double-Step gesetzt werden. ; Bew{hrte Werte f}r das Kommando: ; ; +++++++++++++++++++++NORMALEINSTELLUNG++++++++++++++++++++++ ; Steprate 03 ; HeadUnloadTime 20 ; HeadLoadTime 1A ; DoubleStep Vector 30 ; ; Soll das Laufwerk B als 40 Track LW betrieben werden, so ist das untere Nibble ; im DoubleStepVector entsprechend zu setzen. Bit 0=LW A, Bit 1=LW B, usw. ; Im oberen Nibble steht, ob es sich um ein doppelseitiges LW handelt. ; ; Beispieleinstellung f}r LW A mit 80Track DS DD ; LW B mit 40Track DS DD ; ; -----------> DoubleStepVector = 32 ;