; HL:IX - OFFSET POINTER ; A - FILE MANIPULATOR MOVE_FP: CALL SET_FM RET C ; INC B DJNZ .B_1 ;from Start File ; B=0 .F_start: LD C,B LD D,B LD E,B JP .DO ; .B_1: DJNZ .B_2 ;from Current Position .F_current: LD C,(IY+_sFM.F_POSITION) LD B,(IY+_sFM.F_POSITION+1) LD E,(IY+_sFM.F_POSITION+2) LD D,(IY+_sFM.F_POSITION+3) .DO: ADD IX,BC ADC HL,DE LD D,XH LD E,XL LD (IY+_sFM.F_POSITION),E LD (IY+_sFM.F_POSITION+1),D LD (IY+_sFM.F_POSITION+2),L LD (IY+_sFM.F_POSITION+3),H XOR A RET ; .B_2: DJNZ .error ;from End File .B_end: LD C,(IY + _sFM.FS_REC.F_SIZE) LD B,(IY + _sFM.FS_REC.F_SIZE+1) LD E,(IY + _sFM.FS_REC.F_SIZE+2) LD D,(IY + _sFM.FS_REC.F_SIZE+3) JP .DO ; B > 2 .error: LD A,DSS_Error.sys.INVALID_FUNCTION SCF RET