Annotation of qemu/roms/SLOF/slof/fs/packages/bulk.fs, revision 1.1

1.1     ! root        1: \ *****************************************************************************
        !             2: \ * Copyright (c) 2004, 2008 IBM Corporation
        !             3: \ * All rights reserved.
        !             4: \ * This program and the accompanying materials
        !             5: \ * are made available under the terms of the BSD License
        !             6: \ * which accompanies this distribution, and is available at
        !             7: \ * http://www.opensource.org/licenses/bsd-license.php
        !             8: \ *
        !             9: \ * Contributors:
        !            10: \ *     IBM Corporation - initial implementation
        !            11: \ ****************************************************************************/
        !            12: 
        !            13: 
        !            14: s" bulk" device-name
        !            15: 
        !            16: 
        !            17: \ standard open firmare method
        !            18: 
        !            19: 
        !            20: : open  true  ;
        !            21: 
        !            22: \ standard open firmare method
        !            23: 
        !            24: 
        !            25: : close ;
        !            26: 
        !            27: 
        !            28: \ -------------------------------------------------
        !            29: \      Locals
        !            30: \ ------------------------------------------------
        !            31: 
        !            32: 
        !            33: 8 chars alloc-mem VALUE setup-packet
        !            34: 
        !            35: 
        !            36: \ --------------------------------------------------
        !            37: \ signature --->4bytes offset --->0
        !            38: \ tag       --->4bytes offset --->4
        !            39: \ trans-len --->4bytes offset --->8
        !            40: \ dir-flag  --->1byte  offset --->c
        !            41: \ lun       --->1byte  offset --->d
        !            42: \ comm-len  --->1byte  offset --->e
        !            43: \ --------------------------------------------------
        !            44: 
        !            45: 
        !            46: 0 VALUE cbw-addr
        !            47: : build-cbw ( address tag transfer-len direction lun command-len -- )
        !            48:    5 pick TO cbw-addr  ( address tag transfer-len direction lun command-len )
        !            49:    cbw-addr 0f erase   ( address tag transfer-len direction lun command-len )
        !            50:    cbw-addr e + c!     ( address tag transfer-len direction lun )
        !            51:    cbw-addr d + c!     ( address tag transfer-len direction )
        !            52:    cbw-addr c + c!     ( address tag transfer-len )
        !            53:    cbw-addr 8 + l!-le  ( address tag )
        !            54:    cbw-addr 4 + l!-le  ( address )
        !            55:    43425355 cbw-addr l!-le ( address )
        !            56:    drop  ;
        !            57: 
        !            58: 
        !            59: \ ---------------------------------------------------
        !            60: \ signature --->4bytes offset --->0
        !            61: \ tag       --->4bytes offset --->4
        !            62: \ residue   --->4bytes offset --->8
        !            63: \ status    --->1byte  offset --->c
        !            64: \ ---------------------------------------------------
        !            65: 
        !            66: 
        !            67: 0 VALUE csw-addr
        !            68: : analyze-csw ( address -- residue tag true|reason false )
        !            69:    TO csw-addr
        !            70:    csw-addr l@-le 53425355 =  IF
        !            71:       csw-addr c + c@ dup 0=  IF ( reason )
        !            72:          drop
        !            73:          csw-addr 8 + l@-le ( residue )
        !            74:          csw-addr 4 + l@-le ( residue tag ) \ command  block tag
        !            75:          TRUE               ( residue tag TRUE )
        !            76:       ELSE
        !            77:          FALSE              ( reason FALSE )
        !            78:       THEN
        !            79:    ELSE
        !            80:       FALSE                 ( FALSE )
        !            81:    THEN
        !            82:    csw-addr 0c erase
        !            83: ;
        !            84: 
        !            85: : bulk-reset-recovery-procedure ( bulk-out-endp bulk-in-endp usb-addr -- )
        !            86:   s" bulk-reset-recovery-procedure" $call-parent
        !            87: ;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.