I am trying to access from cp/m and use the following settings:
HBIOS
;
;*************************** Robotron **********************
FCD_RO800
.DB 80 ; NUMBER OF CYLINDERS
.DB 2 ; NUMBER OF HEADS
.DB 5 ; NUMBER OF SECTORS
.DB 1 ; START OF TRACK (ID OF FIRST SECTOR, USUALLY 1)
.DB 5 ; SECTOR COUNT
.DW 1024 ; SECTOR SIZE IN BYTES
.DB 080H ; GAP LENGTH (R/W)
.DB 0F0H ; GAP LENGTH (FORMAT)
.DB (14 << 4) | 0 ; SRT = 4ms, HUT = 512ms
.DB (8 << 1) | 1 ; HLT = 50ms, ND = YES
.DB DOR_BR250 ; DOR
.DB DCR_BR250 ; DCR
.IF (($ - FCD_RO800) != FCD_LEN)
.ECHO "*** FCD_RO800 SIZE ERROR!!! ***\n"
.ENDIF
;***********************************************************
;
CBIOS
;__________________________________________________________________________________________________
;
; ROBOTRON 800kB 5.25" FLOPPY DRIVE, 80 TRKS, 5 SECS/TRK, 1024 BYTES/SEC
; BLOCKSIZE (BLS) = 2K, DIRECTORY ENTRIES = 192
;
.DW CKS_FD
.DW ALS_FD
.DB (2048 / 128) ; RECORDS PER BLOCK (BLS / 128)
DPB_RO800:
.DW 5*1024/128*2 ; SPT: SECTORS PER TRACK (5*1024/128)*2
.DB 4 ; BSH: BLOCK SHIFT FACTOR
.DB 15 ; BLM: BLOCK MASK (SECTORS/BLK -1) 2K BLOCK
.DB 0 ; EXM: EXTENT MASK
.DW 400-1 ; DSM: TOTAL STORAGE IN BLOCKS - 1
.DW 192-1 ; DRM: DIR ENTRIES - 1
.DB 11100000B ; AL0: DIR BLK BIT MAP, FIRST BYTE
.DB 0 ; AL1: DIR BLK BIT MAP, SECOND BYTE
.DW 48 ; CKS: DIRECTORY CHECK VECTOR SIZE = 256 / 4
.DW 0 ; OFF: RESERVED TRACKS
I just can't see where the bottleneck is.
It looks like the HBIOS is reading the sectors correctly. However, the wrong ones. Where is the calculation of the correct order done? BDOS or CBIOS? I am trying to debug the code with ZSID, but it crashes too often. Maybe it is not the right tool to debug BDOS and CBIOS. So I will probably focus on CBIOS. BDOS shouldn't care about sector size. Shouldn't it?
Thanks for your input!