home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / MISC / INSIDCPM.LBR / DPSUB.LQB / DPSUB.LIB
Text File  |  2000-06-30  |  1KB  |  60 lines

  1. DPSUBM    MACRO
  2. ; * * * * *    16 BIT REGISTER SUBROUTINES
  3. ;
  4. ;  Subroutine to load DE from M[HL+A]
  5. ;  alters only DE, flags
  6. ;
  7. DP$LDHA    EQU    $
  8.     PUSH    H    
  9.     MOV    E,A    ; make 16 bit offset
  10.     MVI    D,0
  11.     DAD    D    ; add offset to base
  12.     MOV    E,M    ; pick up lsb
  13.     INX    H
  14.     MOV    D,M    ; get msb
  15.     POP    H
  16.     RET
  17. ;
  18. ;  Subroutine to shift-right-logical DE
  19. ;  alters [A], [F]  (A = lsb  Z, C flags set)
  20. ;
  21. DP$SRLD    EQU    $
  22.     ORA    A    ; clear carry
  23.     MOV  A,D ! RAR ! MOV  D,A
  24.     MOV  A,E ! RAR ! MOV  E,A
  25.     RET
  26. ;
  27. ;  Subroutine to add [A] to DE
  28. ;  alters [A], [F] (A = msb, Z, C flags set)
  29. ;
  30. DP$ADAD    EQU    $
  31.     ADD    E
  32.     MOV    E,A
  33.     MOV    A,D
  34.     ACI    0
  35.     MOV    D,A
  36.     RET
  37. ;
  38. ;  Subroutine to add [A] to HL, as above
  39. ;
  40. DP$ADAH    EQU    $
  41.     ADD    L
  42.     MOV    L,A
  43.     MOV    A,H
  44.     ACI    0
  45.     MOV    H,A
  46.     RET
  47. ;
  48. ;  Subroutine to do an unsigned comparison
  49. ;  of (B,C) :: (H,L).  Alters [A], leaves
  50. ;  flags set as for the compare instruction.
  51. ;
  52. DP$CPBH    EQU    $
  53.     MOV  A,B ! CMP H
  54.     RNZ        ; exit if msb's differ
  55.     MOV  A,C ! CMP L
  56.     RET        ; B=H, exit with C:L flags
  57. ;
  58. ; * * * * *    END OF DPSUB.LIB
  59.     ENDM
  60.