view level1/modules/dwrdmess.asm @ 2879:531841047512 lwtools-port

boot_scsi.asm: Fix SCSI ID when booting from SCSI Due to a typo it would probe for SCSI ID 4 instead of default 0 (or 8 for HDBDOS/SuperDriver).
author Tormod Volden <debian.tormod@gmail.com>
date Sun, 24 Nov 2013 16:08:53 +0100
parents c92a6c65bbd9
children c505ae3120c4
line wrap: on
line source

*******************************************************
*
* DWRdMess
*    Receive a response from the DriveWire server via MESS FIFO
*    4/27/10 AAW - Based on John Linville's example driver
*
* Entry:
*    X  = starting address where data is to be stored
*    Y  = number of bytes expected
*
* Exit:
*    CC = carry set on framing error, Z set if all bytes received
*    X  = starting address of data received
*    Y  = checksum
*    U is preserved.  All accumulators are clobbered
*

DWRead    clra                          ; clear Carry (no framing error)
          pshs      u,x,cc              ; preserve registers, push timeout msb
          orcc      #$50                ; mask interrupts
         
         leau      ,x                  ; U = storage ptr
         ldx       #0                  ; initialize checksum

* Read a byte
rxByte   ldb       $ffe1               ; check for data in FIFO
         beq       rxByte              ; loop while empty
         ldb       $ffe0               ; read data value

         stb       ,u+                 ; store received byte to memory
         abx                           ; update checksum
         leay      ,-y                 ; decrement request count
         bne       rxByte              ; loop if another byte wanted
          
          
* Clean up, set status and return
rxExit    leay      ,x                  ; return checksum in Y
          puls      cc,x,u,pc        ; restore registers and return
          setdp     $00