view level1/modules/dwrdmess.asm @ 3267:024ad1d926fd

Get gfx2 to build from cmds folders Now that gfx2.asm needs to include coco3vtio.d the latter needs to be built first and be accessed from the port-specific defs folder. OTOH the one built in 3rd-party/packages/basic09 is built only later during a full build. (All the different defs folders and .d files still puzzle me.) Also updated coco3fpga/defs/makefile to be based on the coco3 one. The mc09l2 port doesn't need gfx and gfx2. Note for later: This whole build of basic09 components from the 3rdparty folder during the ports builds is not very nice. At a minimum we should try to limit the extra --includedir to the few commands needing it.
author Tormod Volden <debian.tormod@gmail.com>
date Wed, 17 Jul 2019 01:14:55 +0200
parents c505ae3120c4
children
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