;
; FILLB and FILLBC, HFILB and HFILBC --
; Memory fill routines; fill the memory buffer pointed to by HL
; with the byte in Register A; for FILLB and HFILB, B=number of bytes in
; buffer, and for FILLBC and HFILBC, BC=number of bytes in buffer
; No registers are affected for FILL and FILLBC, HL pts to byte after
; last byte filled for HFILB and HFILBC
;
FILLB::
PUSH B ; SAVE BC
MOV C,B ; C=B
MVI B,0 ; SET B=0
CALL FILLBC ; USE FILLBC
POP B ; RESTORE BC
RET
FILLBC::
PUSH H ; SAVE REGISTERS
PUSH PSW
PUSH B
PUSH D
MOV D,A ; BYTE IN D
CALL FILL ; DO FILL
POP D ; RESTORE REGISTERS
POP B
POP PSW
POP H
RET
HFILB::
PUSH B ; SAVE BC
MOV C,B ; C=B
MVI B,0 ; SET B=0
CALL HFILBC ; USE HFILBC
POP B ; RESTORE BC
RET
HFILBC::
PUSH PSW ; SAVE REGISTERS
PUSH B
PUSH D
MOV D,A ; BYTE IN D
CALL FILL ; DO FILL
POP D ; RESTORE REGISTERS
POP B
POP PSW
RET
FILL:
MOV M,D ; STORE BYTE
INX H ; PT TO NEXT
DCX B ; COUNT DOWN
MOV A,B ; DONE?
ORA C
JNZ FILL
RET