Spectrum ROM | Routines |
Prev: 01541 | Up: Map |
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'.
|
|||||||
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, 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 |