$4A : B_READID : X68000 IOCS CALL

・B_READID IOCS 콜 번호 : $4A

$4A B_READID는 Ver 1.0 매뉴얼에는 설명이 나오지만, Ver 2.0 매뉴얼에서는 삭제되었다. 따라서 Ver 1.0 매뉴얼의 내용을 기준으로 설명한다.

기능
 ID 정보의 읽기 (2HD만)

입력 
 D0.L = $4A  IOCS 콜 번호
 D1.W        PDA 또는 MODE
 D2.L        ID 읽기 대상이 되는 트랙 위치

리턴
 D0.L  스테이터스
       비트 31 ~ 24  ST0 = 리절트 스테이터스 0
           23 ~ 16  ST1 = 리절트 스테이터스 1
           15 ~ 8   ST2 = 리절트 스테어터스 2
            7 ~ 0   C = 실린더 번호
 D2.L  읽은 ID ( 섹터 길이 : 트랙 : 사이드 : 섹터 )
        비트 31 ~ 24  섹터 길이
            23 ~ 16  트랙
            15 ~ 8   사이드
             7 ~ 0   섹터

해설
2HD 디스크의 ID 정보를 읽습니다.
입력의 D1.W($9???)의 상세에 대해서는 IOCS 콜 $40(2HD)를 참조해 주세요.
입력의 D2.L은 ID 읽기 대상이 되는 트랙 위치를 지정합니다. 내용은 다음과 같습니다.

D31 D30 D29 D28 D27 D26 D25 D24 | D23 D22 D21 D20 D19 D18 D17 D16
              0                 |              트랙
D15 D14 D13 D12 D11 D10 D09 D08 | D07 D06 D05 D04 D03 D02 D01 D00
             사이드              |               0

프로그램 예
******************************************
** B_READID                            $4A
******************************************

           .include    iocscall.mac
           .include    doscall.mac
iocs     equ     $0f
         
         .
         .
         moveq.l  #_B_READID,d0     * IOCS 콜 번호 세트
         move.w   #$90_70,d1        * pda = $90, mode = %0111_0000 = $70
         move.l   #$00_00_00_00,d2  * 트랙 0, 사이드 0
         moveq.l  #512,d3           * 읽을 바이트 수
         lea      data, a1          * 읽은 버퍼 선두 어드레스
         trap     #iocs            * IOCS 콜
         .
         .

댓글 남기기