![]() |
![]()
| ![]() |
![]()
̾??
????????ppbus ?β??⤪???ӥޥ????????????ˤĤ??Ƥΰ???Ū?ʾ????? ppbus(4) ?Ȥ??Ƥ????????? ????ʸ??????Ū?ϰʲ??????뤿???ˡ? ??ȯ?Ԥ??ޥ????????????????????Ѥ????褦?˻ٱ礹?뤳?ȤǤ???
?ޥ????????????????Ѥ??????ˡ? ppc(4) ?ޥ????????????μ????????? vpo(4) ?????Τ??????ɤΤ褦?˻??Ѥ??뤫?????뤳?Ȥ??????夵???Ƥ??ޤ??? PPBUS ?쥸???????ǥ??ط?ppbus ?Τ????????줿?ѥ??????ݡ??ȥ??ǥ??? PC ?ѥ??????ݡ??ȥ??ǥ??Ǥ??? ???äơ????Dz??⤵???뤢???????쥸?????ϡ?PC ?ѥ??????ݡ??Ȥ??Фˤʤ????Τ? Ʊ?????ޥ??ƥ????????????ޤ??? ????¿???? ISA/ECP ?ץ??????ߥˤĤ??Ƥξ????ˤĤ??Ƥϡ? "Extended Capabilities Port Protocol and ISA interface Standard" ?Ȥ??ƻ??Ȥ????? Microsoft ɸ???????ꤷ?Ƥ????????? ???Ҥ????쥸??????ɸ???Υѥ??????ݡ??ȥ쥸?????Ǥ??? ?ޥ????ޥ????ϡ??ѥ??????ݡ??ȥ쥸?????θġ???ͭ???ʥӥåȤΤ????? ɸ?? ppbus ???롼?ɥե????????????????????Ƥ??ޤ??? ?ǡ????쥸?????????ѥ??֥??⡼?ɤޤ??ϥ˥֥??⡼?ɤǤϡ????Υ쥸?????ؤν??ߤ? ?ѥ??????ݡ??ȤΥǡ??????ؽ??Ϥ????ޤ??? ????¾?Υ⡼?ɤǤϡ??????ʤ??????쥸?????????????ӥå? (PDC) ???????ˤ??äơ? ?ȥ饤???ơ??? (3 ????) ?ˤʤ뤳?Ȥ??Ǥ??ޤ??? ???Υ쥸?????ؤ??ɤ߹??ߤϥǡ??????????ͤ??֤??ޤ??? ?ǥХ??????֥쥸?????????ɼ??????ѥ쥸?????ϥѥ??????ݡ??ȥ??ե????????????Ϥ?ȿ?Ǥ??ޤ???
????¾??ͽ???Ѥߤǡ??ɹ????η??̤?̤?????Ǥ??? ?ǥХ????????쥸???????Υ쥸??????ľ??Ū?˴??Ĥ??ε?ǽ??ͭ?????Ϥ????????? ???Ĥ??ν??Ͽ????????椷?ޤ???
?ޥ????????ȥ饯???????????ޥ????????ȥ饯?????? ?ϥѥ??????ݡ??ȤΥ??????????ץ????????η????֤??????֥ޥ??????????????? ?ޤ??? C ?θƤӽФ??Ǥ??? ?ѥ??????ݡ??Ȥ? ppbus(4) ?Dz??⤵???Ƥ??????????ǥ??Ȥߤʤ????ʤ????Фʤ??ޤ????? ???Ѳ?ǽ?ʥޥ????????????ϰʲ??ΤȤ????Ǥ??? #define MS_OP_GET 0 /* get <ptr>, <len> */ #define MS_OP_PUT 1 /* put <ptr>, <len> */ #define MS_OP_RFETCH 2 /* rfetch <reg>, <mask>, <ptr> */ #define MS_OP_RSET 3 /* rset <reg>, <mask>, <mask> */ #define MS_OP_RASSERT 4 /* rassert <reg>, <mask> */ #define MS_OP_DELAY 5 /* delay <val> */ #define MS_OP_SET 6 /* set <val> */ #define MS_OP_DBRA 7 /* dbra <offset> */ #define MS_OP_BRSET 8 /* brset <mask>, <offset> */ #define MS_OP_BRCLEAR 9 /* brclear <mask>, <offset> */ #define MS_OP_RET 10 /* ret <retcode> */ #define MS_OP_C_CALL 11 /* c_call <function>, <parameter> */ #define MS_OP_PTR 12 /* ptr <pointer> */ #define MS_OP_ADELAY 13 /* adelay <val> */ #define MS_OP_BRSTAT 14 /* brstat <mask>, <mask>, <offset> */ #define MS_OP_SUBRET 15 /* subret <code> */ #define MS_OP_CALL 16 /* call <microsequence> */ #define MS_OP_RASSERT_P 17 /* rassert_p <iter>, <reg> */ #define MS_OP_RFETCH_P 18 /* rfetch_p <iter>, <reg>, <mask> */ #define MS_OP_TRIG 19 /* trigger <reg>, <len>, <array> */ ?¹ԥ????ƥ??????ޥ????????ȥ饯???????? ?¹ԥ????ƥ????? ?ϰʲ??ΤȤ????Ǥ???
???Υǡ????????ƤǤϤʤ????Ĥ??Υޥ????????ȥ饯???????ˤ??ä? ?ѹ??????ޤ??? MS_OP_GET ?????? MS_OP_PUT???????Ѥߤ?ɸ?? IEEE1284-1994 ž???ޤ??ϥץ??????व?줿??ɸ???? ?????ϤΤ????줫???Ԥʤ??????˻??Ѥ??????ޥ????????ȥ饯???????Ǥ??? MS_OP_RFETCH - ?쥸?????????ϥѥ??????ݡ??ȥ쥸?????θ??ߤ??ͤ??????Ф????ޥ?????Ŭ?Ѥ??? ???????Хåե?????¸???뤿???˻??Ѥ????ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_RFETCH(reg,mask,ptr) MS_OP_RSET - ?쥸?????????? 2 ?ĤΥޥ?????Ŭ?Ѥ??줿???ġ??Υѥ??????ݡ??ȥ쥸?????δ??Ĥ??? ?ӥåȤ?????/???ꥢ???뤿???˻??Ѥ????ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_RSET(reg,assert,clear) MS_OP_RASSERT - ?쥸?????????????ϸġ??Υѥ??????ݡ??ȥ쥸?????????ƤΥӥåȤ????Ȥ??뤿???˻??Ѥ????ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_RASSERT(reg,byte) MS_OP_DELAY - ?ޥ??????ä??ٱ??ϥޥ????????????μ¹Ԥ??ٱ??Τ????˻??Ѥ????ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_DELAY(delay) MS_OP_SET - ????ʬ???쥸??????????????????ʬ???쥸???????ͤ????ꤹ?뤿???˻??Ѥ??ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_SET(accum) MS_OP_DBRA - ʬ???μ¹?????????ʬ???쥸?????? 1 ???餵?줿???̤??ͤ????Ǥ????????? ʬ?????뤿???˻??Ѥ????ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_DBRA(offset) MS_OP_BRSET - ???åȻ???ʬ???ϥѥ??????ݡ??Ȥξ??֥쥸?????ΥӥåȤδ??Ĥ??????åȤ????Ƥ????????? ʬ?????뤿???˻??Ѥ????ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_BRSET(mask,offset) MS_OP_BRCLEAR - ???ꥢ????ʬ???ϥѥ??????ݡ??Ȥξ??֥쥸?????ΥӥåȤδ??Ĥ??????ꥢ?????Ƥ????????? ʬ?????뤿???˻??Ѥ????ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_BRCLEAR(mask,offset) MS_OP_RET - ?????ϥޥ??????????????????뤿???˻??Ѥ????ޤ??? ???δؿ???ɬ?ܤǤ??? ?????ϥޥ??????????????ޥ????????????ν??????Ф???ͣ??????ˡ?Ǥ??? ppb_MS_microseq() ?? (int *) ?ѥ?????ˤ??äƻؤ??????????ˡ? ??????ɤ??֤????ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_RET(code) MS_OP_C_CALL - C ?ؿ??θƤӽФ??ϥޥ????????????μ¹Ԥ??? C ?ؿ????ƤӽФ??????˻??Ѥ????ޤ??? ?????ϥѥ??????ݡ??Ȥ????ǡ???ʸ?????????Ф?????????ɸ?????????Ϥ??¹? ???????Ȥ???ͭ?Ѥ??⤷???ޤ????? ?ѥ????:
C ?ؿ??? int(*)(void *p, char *ptr) ???????????뤳?ȤˤʤäƤ??ޤ??? ptr ?ѥ?????ϸ????????????Ƥ????Хåե??????θ??߰??֤Ǥ??? ?????Ѥߥޥ???: MS_C_CALL(func,param) MS_OP_PTR - ?????ݥ??ν??????ϸ????????????Ƥ????Хåե??ؤ??????ݥ????????????ޤ??? ???Υݥ??Ϥ??????? C ?ƤӽФ????Ϥ????ޤ? (?嵭?Ȥ??Ƥ???????)?? ?ѥ????:
?????Ѥߥޥ???: MS_PTR(ptr) MS_OP_ADELAY - ??Ʊ???ٱ??μ¹??ϥޥ????????????μ¹Ԥδ֤? tsleep() ???뤿???˻??Ѥ????ޤ??? ???? tsleep ?? PPBPRI ???٥??Ǽ¹Ԥ????ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_ADELAY(delay) MS_OP_BRSTAT - ???֤ˤ???ʬ???Ͼ??֥쥸?????ξ??֤?ʬ?????뤿???˻??Ѥ????ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_BRSTAT(asserted_bits,clear_bits,offset) MS_OP_SUBRET - ???֥ޥ????????????????????ϥ??֥ޥ????????????θƤӽФ????????뤿???˻??Ѥ????ޤ??? ???ι?ư?? RET ?θƤӽФ???????ɬ?ܤǤ??? ???Ĥ??Υޥ????????ȥ饯?????? (PUT, GET) ?ϥ??֥ޥ????????????? ?????ǤϸƤӽФ???ǽ?ǤϤʤ????⤷???ޤ????? ?ѥ?????Ϥ????ޤ????? ?????Ѥߥޥ???: MS_SUBRET() MS_OP_CALL - ???֥ޥ????????????θƤӽФ??ϥ??֥ޥ??????????????ƤӽФ??????˻??Ѥ????ޤ??? ???֥ޥ????????????? SUBRET ?θƤӽФ???ȼ?ʤ??ޥ????????????Ǥ??? ?ѥ????:
?????Ѥߥޥ???: MS_CALL(microseq) MS_OP_RASSERT_P - ???? PTR ?????쥸?????ؤΥ??????????????? PTR ?ݥ??ˤ??äƸ??ؤ????Ƥ????ǡ????ǥ쥸?????? ???????Ȥ??뤿???˻??Ѥ????ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_RASSERT_P(iter,reg) MS_OP_RFETCH_P - ???? PTR ?ؤΥ쥸?????ե??å??ϥ쥸?????????ǡ??????ɹ??ि???˻??Ѥ????ޤ??? ?ǡ??????????? PTR ?ݥ??ˤ??äƸ??ؤ????Ƥ????Хåե?????¸?????ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_RFETCH_P(iter,reg,mask) MS_OP_TRIG - ?쥸?????Υȥꥬ?ϥѥ??????ݡ??Ȥ??ȥꥬ???뤿???˻??Ѥ????ޤ??? ???Υޥ????????ȥ饯???????ϥѥ??????ݡ??ȤΤȤƤ???ΨŪ???????? ???տޤ????Ƥ??ޤ??? ?쥸?????Υȥꥬ?ϥǡ????????ߡ????????????ȡ??ǡ????????ߡ? ???????????? ... ?Ǥ??? ?????ϥݡ??Ȥإޥ??å??????????????ळ?Ȥ???ǽ?ˤ??ޤ??? ?ѥ????:
?????Ѥߥޥ???: MS_TRIG(reg,len,array) ?ޥ???????????????C ??¤??union ppb_insarg { int i; char c; void *p; int (* f)(void *, char *); }; struct ppb_microseq { int opcode; /* ?ޥ????????ȥ饯?????? opcode */ union ppb_insarg arg[PPB_MS_MAXARGS]; /* ???? */ }; ?ޥ????????????λ????ޥ????????????????β????뤿???ˤϡ?ppb_microseq ??¤?Τ??????? ????????ɬ?פ˱????ƽ??????????????Ǥ??? ?????ѤߤΥޥ????ޤ??? ppb_microseq ???????˽??ä??ȼ??? ?ޥ????????ȥ饯???????Τ????줫?????ѤǤ??ޤ??? ?㤨?С? struct ppb_microseq select_microseq[] = { /* ?ѥ?????ꥹ?? */ #define SELECT_TARGET MS_PARAM(0, 1, MS_TYP_INT) #define SELECT_INITIATOR MS_PARAM(3, 1, MS_TYP_INT) /* ???Ϥ??뤿???????ޥ??ɤ????? */ MS_DASS(MS_UNKNOWN), MS_CASS(H_nAUTO | H_nSELIN | H_INIT | H_STROBE), MS_CASS( H_AUTO | H_nSELIN | H_INIT | H_STROBE), MS_DASS(MS_UNKNOWN), MS_CASS( H_AUTO | H_nSELIN | H_nINIT | H_STROBE), /* ???Ϥν??????Ǥ????ޤ??Ԥ??ޤ? */ MS_SET(VP0_SELTMO), /* loop: */ MS_BRSET(H_ACK, 2 /* ready */), MS_DBRA(-2 /* loop */), /* error: */ MS_RET(1), /* ready: */ MS_RET(0) }; ?????ǡ????Ĥ??Υѥ??????̤?????ǥޥ????????????μ¹Ԥ????? ?????????ʤ????Фʤ??ޤ????? ?ġ??Υޥ??????????????????????뤿???ˡ?ppb_MS_init_msq() ?ؿ??? ?ʲ??Τ褦?˻??Ѥ????٤??Ǥ??? ppb_MS_init_msq(select_microseq, 2, SELECT_TARGET, 1 << target, SELECT_INITIATOR, 1 << initiator); ???줫???ޥ??????????????¹Ԥ??ޤ??? ?ޥ????????????????ޥ????????????? ppbus ???٥??ޤ??ϥ????ץ????٥? (ppbus ?? ?????ƥ??쥤???ˤĤ??Ƥξ????? ppbus(4) ?Ȥ??Ƥ???????) ?Τ????줫?Ǽ¹Ԥ????ޤ??? ?ޥ??????????????ؤ??ɤϡ?ppbus ???饢???ץ??ؤδؿ??ƤӽФ??? ?????Хإåɤ??뤿???ˡ?ppc ???٥??Ǽ¹Ԥ????ޤ??? ????????????ž???? IEEE1284-1994 ?˹??פ??Ƥ????Τ?ȿ???ơ? ?????Ĥ??η??ޤ꤭?ä??ͤʵ?ǽ?? ppbus ?쥤???Ǽ¹Ԥ????ޤ??? ?Х?1 ???٥??Υ??֥ޥ????????????Τߤ?ǧ???????Ƥ??ޤ??? ?ݡ??ȤΥȥꥬ???ϡ????Ĥ????Ƥ??????????ٱ??? 255 ?ޥ??????äǤ??? ??Ϣ????????
???????Υޥ˥奢???ڡ????? Nicolas Souchu ???ޤ?????
|