| 123456789101112131415161718192021222324252627282930 | ; RP2040 PIO program for accelerating SCSI initiator / host function;; Copyright (c) 2022 Rabbit Hole Computing™;; Run "pioasm scsi_accel_host.pio scsi_accel_host.pio.h" to regenerate the C header from this.; GPIO mapping:; - 0-7: DB0-DB7; -   8: DBP; Side set is ACK pin.define REQ 19.define ACK 26; Read from SCSI bus using asynchronous handshake.; Data is returned as 16-bit words that contain the 8 data bits + 1 parity bit.; Number of bytes to receive minus 1 should be written to TX fifo.; Number of bytes to receive must be divisible by 2..program scsi_host_async_read    .side_set 1    pull block                  side 1  ; Get number of bytes to receive    mov x, osr                  side 1  ; Store to counter Xstart:    wait 0 gpio REQ             side 1  ; Wait for REQ low    nop                 [1]     side 1  ; Wait for signals to settle    in pins, 9                  side 0  ; Assert ACK, read GPIO    in null, 7                  side 0  ; Padding bits    wait 1 gpio REQ             side 0  ; Wait for REQ high    jmp x-- start               side 1  ; Deassert ACK, decrement byte count and jump to start
 |