************************************************************* * * * SECTRAN TRANSLATES A LOGICAL SECTOR # INTO A PHYSICAL * * SECTOR #. * * * ************************************************************* SECTRAN INX B PUSH D ;SAVE TABLE ADDRESS PUSH B ;SAVE SECTOR # CALL GETDPB ;GET DPB ADDRESS INTO HL MOV A,M ;GET # OF CP/M SECTORS/TRACK ORA A ;CLEAR CARY RAR ;DIVIDE BY TWO SUB C PUSH PSW ;SAVE ADJUSTED SECTOR JM SIDETWO SIDEA POP PSW ;DISCARD ADJUSTED SECTOR POP B ;RESTORE SECTOR REQUESTED POP D ;RESTOR ADDRESS OF XLT TABLE SIDEONE XCHG ;HL <- &(TRANSLATION TABLE) DAD B ;BC = OFFSET INTO TABLE MOV L,M ;HL <- PHYSICAL SECTOR MVI H,0 RET SIDETWO LXI B,17 ;OFFSET TO SIDE BIT DAD B MOV A,M ANI 8 ;TEST FOR DOUBLE SIDED JZ SIDEA ;MEDIA IS ONLY SINGLE SIDED POP PSW ;RETRIEVE ADJUSTED SECTOR POP B CMA ;MAKE SECTOR REQUEST POSITIVE INR A MOV C,A ;MAKE NEW SECTOR THE REQUESTED ; SECTOR POP D CALL SIDEONE MVI A,80H ;SIDE TWO BIT ORA L ; AND SECTOR MOV L,A RET