@@@ @@@@ @@@ @@@ @ @ @ @ @ @@ @@@@ @@@ @@@ @ @ @ @ @@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @@ @@@@ @ @ @ @ @ @ @ @@ @ @ @ @ @ @ @@ @@ @@ @@@ @@ @ @@ @@@@ @@@@ @ @@@@ @ @ (c) P. Fedin @@@@ FULL DESCRIPTION + FULL ROM DISASSEMBLER TR-DOS 5.04 (5.03) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FOR PROFESSIONALS, AND ALSO FOR THOSE WHO WANT TO BECOME THEM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ continued Address 7332. Determination of the address of the file descriptor in the buffer by its number in the sector. In C there must be a descriptor number in the sector. On the exit to HL will be his address. 7332 LD L,C ;translation of file descriptor number todouble-byte LD H,0 ;shape ADD HL,HL ;multiplying it by 16 ADD HL,HL ADD HL,HL ADD HL,HL LD BC,23845;address from the beginning of the buffer ADD HL,BC RET ;return ───────────────────────── ─────────────────── ──────────────────── Address 7344. Setting and checking the file name. The file name should to be placed on the calculator stack. Output: if a file with this name, the Z flag will be set, and in reg. C and at 23838 will be its number, and if there is no such file, then the Z flag will be reset. Also used from address 7347 (file search, install 23773 and 23781, exit as from 7344). 7344 CALL 7255 ;setting the file name 7347 CALL 1000 ;let's start from sector 0 LD B,128 ;total 128 files LD C,0 ;start with the zero descriptor in the sector 7354 PUSH BC ;save file number and counter CALL 7332 ;detect the beginning of the descriptor in the buffer CALL 1292 ;checking and processing reaching the end of the buffer POP BC ;restoring the descriptor number in the sector and PUSH BC ;file counter without changing the stack LD A,C ;all sector viewed? CP 16 JR NZ,7373;if yes, then POP BC ;removing descriptor number andcounter from stack LD C,0 ;zero descriptor in sector JR 7354 ;retest 7373 LD DE,23773 ;take the address of part of the descriptor for verification LD A,(23814);take the length of this part LD B,A XOR A ;end of directory ? CP(HL) JR NZ,7387 ;if not, then proceed to checking the descriptor POP BC ;Pop handle and counter number from stack JR 7396 ;output with NZ flag 7387 CALL 10003 ;comparing parts of descriptors POP BC ;restore descriptor and counter number JR Z,7399 ;if parts of the descriptors match, then exit INC C ;next descriptor DJNZ 7354 ;repeat to end 7396 OR 255 ;turn off flag Z RET ;return 7399 LD A,128 ; file number determination SUB B LD C,A LD (23838),A; placing it in 23838 XOR A ;reset flag Z RET Z ;return ───────────────────────── ─────────────────── ──────────────────── Address 7408. File search. The portion of the descriptor to be verified is install to address 23773 and install to 23814. If the file is not is found, then the Z flag will be reset and 23823 will be 255, and if found den, then the Z flag will turn on, and the file number will be in reg. C and hello resam 23823 and 23838. 7408 CALL7347 ;file search LD HL,23823 LD (HL),C ;load register C into 23823 RET Z ;if file found, return LD (HL), 255; place in 23823 255 RET ;return ───────────────────────── ─────────────────── ──────────────────── Address 7419. Executing the RETURN command. Install 23611, 23836 and 23827. 7419 CALL 7541 ;if there is a syntax check, then return CALL 8421 ;memory change RES 3,(IY+1) ;set input mode "K" CALL 562 ;restore old ERR_SP LD SP,(23836);stack recovery LD HL,(23613);take the address before the address from ERR_SP DEC HL LD A,18;is there 18? CP(HL) JR NZ,7449 ;if not, then return DEC HL ;set ERR_SP to the address below LD (23613),HL 7449 RET ;return to be continued...
Share your thoughts about the article