TITLE DEMONSTRATE FAULTY RANDOM RECORD ERROR DFCB EQU 5CH ; THE SAMPLE FILE NAME IS RATHER GENERIC, 'XXX' ; TO RUN THIS PROGRAM, JUST TYPE A>FIND XXX START ;FIRST OPEN THE SILLY FILE LD DE,DFCB LD C,0FH CALL 5 ;DID IT OPEN ? INC A RET Z ;NOPE, RETURN ;OK, MAKE SURE HIGH BYTE OF RANDOM RECORD IS 0 XOR A LD (DFCB+35),A LD SP,MYSTACK ;WELL NOW, LETS SET UP A STRING OF RECORD NUMBERS TO ATTEMPT ;WITH A RANDOM READ AND SEE IF THEY REACT DIFFERENTLY ; LD HL,RECORD_TABLE ;TABLE OF RECORD NUMBERS LD A,TABLE_LEN ;LENGTH OF TABLE LOOP1 PUSH AF ;SAVE COUNT LD E,(HL) ;LOAD RECORD # DESIRED INC HL LD D,(HL) INC HL PUSH HL ;SAVE TABLE POINTER EX DE,HL LD DE,RECNUM ;ENCODE RECORD NUMBER TO HEX-ASCII CALL HEXWOUT LD (DFCB+33),HL ;SET RECORD NUMBER LD DE,DFCB LD C,21H ;RANDOM READ CALL 5 LD DE,RESULT ;ENCODE VALUE RETURNED IN A CALL HEXOUT CALL PRINT_LINE ;PRINT LINE ON THE CONSOLE POP HL ;RESTORE POINTER AND COUNTER POP AF DEC A JR NZ,LOOP1 ;IF MORE RECORDS, JUMP ;FINISHED....... JP 0 RECORD_TABLE DW 0 ;FIRST READ RECORD ZERO DW 257 ;READ RECORD 257 (ONLY 0-256 EXIST...ERROR REPORTED) DW 100 ;READ RECORD 100 (MAIN PURPOSE, BACK TO EXT 0) DW 500 ;READ RECORD 500 (ONLY 0-256 EXIST...ERROR REPORTED) Š DW 260 ;READ RECORD 260 (ONLY 0-256 EXIST...OOPS! NO ERROR!) DW 0 ;BACK TO VALID EXT INFO DW 256 ;LAST RECORD OF FILE, FOUND DW 260 ;READ 260, ERROR RETURNED DW 514 ;READ RECORD 514 (" " " ,NOTE, UNWRITTEN EXT) DW 260 ;READ RECORD 260 (" " " ,THIS TIME ERROR REPORTED) TABLE_LEN EQU ($-RECORD_TABLE)/2 HEXWOUT LD A,H CALL HEXOUT LD A,L HEXOUT PUSH AF RRA RRA RRA RRA CALL HEX2 POP AF HEX2 AND 0FH OR 30H CP 3AH JR C,HEX3 ADD 7 HEX3 LD (DE),A INC DE RET PRINT_LINE LD DE,RECLINE LD C,9 CALL 5 ;NOW PRINT OUT FCB PLEASE LD HL,DFCB LD DE,FCBASCII LD B,36 LOOP5 LD A,(HL) INC HL CALL HEXOUT INC DE DJNZ LOOP5 LD DE,FCBASC LD C,9 JP 5 FCBASC DB 0DH,0AH DB '36 HEX BYTES OF FCB CONTENTS AFTER ATTEMPTED READ',0DH,0AH FCBASCII DS 36*3,20H DB 0DH,0AH,'$' ŠRECLINE DB 0DH,0AH,'READING RECORD ' RECNUM DB ' , ERROR CODE RETURNED IN A IS ' RESULT DB ' $' DS 64 MYSTACK END