Annotation of qemu/roms/SLOF/slof/fs/packages/bulk.fs, revision 1.1.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.