?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. getword
  2. ;hl=string
  3. ;de=wordbuf
  4. ;out: hl=terminator/space addr
  5. getword0
  6.         ld a,(hl)
  7.         or a
  8.         jr z,getwordq
  9.         sub ' '
  10.         jr z,getwordq
  11.         ldi
  12.         jp getword0
  13. getwordq
  14.         ;xor a
  15.         ld (de),a
  16.         ret
  17.  
  18. skipword
  19. ;hl=string
  20. ;out: hl=terminator/space addr
  21. skipword0
  22.         ld a,(hl)
  23.         or a
  24.         ret z ;jr z,skipwordq
  25.         sub ' '
  26.         ret z ;jr z,skipwordq
  27.         inc hl ;ldi
  28.         jr skipword0
  29.        
  30. skipspaces
  31. ;hl=string
  32. ;out: hl=after last space
  33.         ld a,(hl)
  34.         cp ' '
  35.         ret nz
  36.         inc hl
  37.         jr skipspaces
  38.  
  39. strcopy
  40. ;hl->de
  41. strcopy0
  42.         ld a,(hl)
  43.         ldi
  44.         or a
  45.         jr nz,strcopy0
  46.         ret
  47.  
  48. strcp
  49. ;hl=s1
  50. ;de=s2
  51. ;out: Z (equal, hl=terminator of s1+1, de=terminator of s2+1), NZ (not equal, hl=erroraddr in s1, de=erroraddr in s2)
  52. strcp0.
  53.         ld a,[de] ;s2
  54.         cp [hl] ;s1
  55.         ret nz
  56.         inc hl
  57.         inc de
  58.         or a
  59.         jp nz,strcp0.
  60.         ret ;z
  61.  
  62. strlen
  63. ;hl=str
  64. ;out: hl=length
  65.         ld bc,0 ;чтобы точно найти терминатор
  66.         xor a
  67.         cpir ;найдём обязательно, если длина=0, то bc=-1 и т.д.
  68.         ld hl,-1
  69.         or a
  70.         sbc hl,bc
  71.         ret
  72.