view level1/modules/dwrdmess.asm @ 2786:e333ec1907ef lwtools-port

Updated makefile(s) so correct coco1 dw boot and dwio.sb files are used. Updated level1/coco1/modules/makefile so that boot_dw_coco1 and dwio_coco1.sb get created. Updated level1/coco1/bootfiles/makefile added detection of PORT status so if coco1 is detected then dwio_coco1.sb and boot_dw_coco1 are used in place of dwio.sb and boot_dw.
author drencor-xeen
date Sun, 27 Jan 2013 00:14:03 -0600
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