Listing of file='UTIL.MAC;01' on disk='vmedia/asm_utilities_macros-sector.ccvf'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; UTILITY ROUTINES ; ; ; ; COMPARE HL TO DE (I.E. HL-DE) ; ; HL AND DE ARE TREATED AS UNSIGNED 16-BIT NUMBERS ; ; DESTROYS A REG. ; ENTRY CMPHD CMPHD: MOV A,H ;MOST SIGNIFICANT BYTE FIRST CMP D RNZ ;DONE IF NOT ZERO MOV A,L CMP E ;SET FLAGS RET ; ; MOVE A BLOCK (UP) IN MEMORY ; IF THE SOURCE AND DESTINATION BLOCKS ARE DISJOINT, ; THERE IS NO PROBLEM. IF THEY OVERLAP, THE MOVE ; MUST BE UPWARDS. ; ; ON ENTRY: ; HL -> SOURCE ; DE -> DESTINATION ; BC = BYTE COUNT (MUST BE >0) ; ; DESTROYS ALL REGISTERS ; ENTRY MOVEUP MOVEUP: DAD B ;FIND END OF SOURCE BLOCK DCX H XCHG DAD B ; AND DESTINATION BLOCK DCX H XCHG MVUP10: MOV A,M ;GET CHR STAX D ;MOVE IT DCX H DCX D DCX B ;DONE? MOV A,B ORA C JNZ MVUP10 ;NO RET ;YES ; ; MOVE A BLOCK (DOWN) IN MEMORY ; IF THE SOURCE AND DESTINATION BLOCKS ARE DISJOINT, ; THERE IS NO PROBLEM. IF THEY OVERLAP, THE MOVE ; MUST BE DOWNWARDS. ; ; ON ENTRY: ; HL -> SOURCE ; DE -> DESTINATION ; BC = BYTE COUNT (MUST BE >0) ; ; DESTROYS ALL REGISTERS ; ENTRY MOVEDN MOVEDN: MOV A,M ;GET BYTE STAX D ;MOVE IT INX H INX D DCX B ;DONE? MOV A,B ORA C JNZ MOVEDN ;NO RET ;YES END