FLAG = $18000 STAT = $18004 NREAD = $18008 BUF = $20000 CHUNK = 65536 ; bytes per read RECS = CHUNK/256 ; 256-byte records per read NCHUNK = 16 ; 16 x 64KB = 1MB total org $10000 start: move.l #1,FLAG.l ; signal: started move.l #NCHUNK,d6 moveq #0,d5 ; record position moveq #0,d4 ; completed count loop: movem.l d4-d6,-(sp) moveq #$46,d0 ; _B_READ move.l #$80000000,d1 ; PDA=$80 (SASI unit0), mode=0 move.l d5,d2 ; position (records) move.l #CHUNK,d3 ; byte count lea BUF,a1 trap #15 movem.l (sp)+,d4-d6 move.l d0,STAT.l ; last status tst.l d0 bmi.s failed addq.l #1,d4 move.l d4,NREAD.l add.l #RECS,d5 subq.l #1,d6 bne.s loop move.l #$FF,FLAG.l ; signal: done OK stop: bra.s stop failed: move.l #$EE,FLAG.l ; signal: error bra.s stop