daily pastebin goal
37%
SHARE
TWEET

linkReceive

Zeda Sep 20th, 2017 48 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define bcall(x) rst 28h \ .dw x
  2. saveSScreen = 86ECh
  3. .db $BB,$6D
  4. .org $9D95
  5.     ld hl,saveSScreen
  6.     call getBytes
  7.     ld a,b
  8.     or c
  9.     ret z
  10. _:
  11.     ld a,(hl)
  12.     bcall($4504)
  13.     cpi
  14.     jp pe,-_
  15.     ret
  16. ;============================================================
  17. ;============================================================
  18. ;============================================================
  19. getBytes:
  20. ;Input:
  21. ;   HL points to where the bytes are written
  22. ;Output:
  23. ;   HL points to the received data
  24. ;   BC is the size of the data
  25. ;   nc if the data transferred
  26. ;   c if the connection failed due to an ON-break. BC is then returned as how many bytes were actually read.
  27.  
  28.     push hl
  29.     call getByte_breakable
  30.     push af
  31.     call c,getByte_breakable
  32.     jp nc,getBytes_nullexit
  33.     ld b,a
  34.     pop af
  35.     ld c,a
  36.     pop hl
  37.     ld a,b
  38.     or c
  39.     scf
  40.     ret z
  41.     push hl
  42.     push bc
  43.     call +_
  44.     pop hl
  45.     sbc hl,bc
  46.     ld a,b
  47.     ld b,h
  48.     or c
  49.     ld c,l
  50.     pop hl
  51.     ret nz
  52.     scf
  53.     ret
  54. _:
  55.     push hl
  56.     push bc
  57.     call getByte_breakable
  58.     pop bc
  59.     pop hl
  60.     ret nc
  61.     ld (hl),a
  62.     cpi
  63.     jp pe,-_
  64.     ret
  65. getBytes_nullexit:
  66.     pop af
  67.     pop hl
  68.     ld bc,0
  69.     or a
  70.     ret
  71.    
  72. getByte_breakable:
  73.     in a,(4)
  74.     and 8
  75.     ret z
  76.     call getByte
  77.     jr nz,getByte_breakable
  78.     scf
  79.     ret
  80. getByte:
  81.     di
  82.     ld bc,$0803  ;Bit counter in b, bit mask in c
  83.     ld hl,-1
  84.     xor a
  85.     out (0),a   ;Make sure we are reset
  86.     in a,(0)
  87.     and c   ;Check to see if sender is ready
  88.     dec a
  89.     ret nz   ;If not, then go back
  90.     inc a
  91.     out (0),a   ;Relay a confirmation
  92.     ex (sp),hl   ;Wait at until confirmation is read (59 T-states minimum)
  93.     ex (sp),hl
  94.     ld a,(de)   ;Bit counter in b and bitmask in c
  95.     xor a   ;Store received byte in l
  96.     ld hl,$AA
  97.     out (0),a   ;Reset the ports to receive data
  98. _:
  99.     in a,(0)
  100.     xor l
  101.     rra
  102.     jr c,-_
  103.     in a,(0)
  104.     rra
  105.     rra             ;bits cycled in are masked with 0x55. Need to invert anyways, so mask at the end with 0xAA
  106.     rr l
  107.     djnz -_
  108.     ld a,l
  109.     ret
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top