Prev: 01541 Up: Map Next: 02050
01995: THE 'VERIFY' CONTROL ROUTINE
Used by the routine at SAVE_ETC.
The verification process involves the loading of a block of data, a byte at a time, but the bytes are not stored - only checked. This routine is also used to load blocks of data that have been described with 'SCREEN$' or 'CODE'.
Input
HL Block start address
VR_CONTRL 01995 PUSH HL Save the 'pointer'.
01996 LD L,(IX-6) Fetch the 'number of bytes' as described in the 'old' header.
01999 LD H,(IX-5)
02002 LD E,(IX+11) Fetch also the number from the 'new' header.
02005 LD D,(IX+12)
02008 LD A,H Jump forward if the 'length' is unspecified, e.g. 'LOAD name CODE' only.
02009 OR L
02010 JR Z,VR_CONT_1
02012 SBC HL,DE Give report R if attempting to load a larger block than has been requested.
02014 JR C,REPORT_R
02016 JR Z,VR_CONT_1 Accept equal 'lengths'.
02018 LD A,(IX+0) Also give report R if trying to verify blocks that are of unequal size. ('Old length' greater than 'new length'.)
02021 CP 3
02023 JR NZ,REPORT_R
The routine continues by considering the 'destination pointer'.
VR_CONT_1 02025 POP HL Fetch the 'pointer', i.e. the 'start'.
02026 LD A,H This 'pointer' will be used unless it is zero, in which case the 'start' found in the 'new' header will be used instead.
02027 OR L
02028 JR NZ,VR_CONT_2
02030 LD L,(IX+13)
02033 LD H,(IX+14)
The verify/load flag is now considered and the actual load made.
VR_CONT_2 02036 PUSH HL Move the 'pointer' to the IX register pair.
02037 POP IX
02039 LD A,(23668) Jump forward unless using the VERIFY command (T-ADDR-lo=2), with the carry flag signalling 'LOAD'.
02042 CP 2
02044 SCF
02045 JR NZ,VR_CONT_3
02047 AND A Signal 'VERIFY'.
VR_CONT_3 02048 LD A,255 Signal 'accept data block only' before loading the block.
This routine continues into LD_BLOCK.
Prev: 01541 Up: Map Next: 02050