home *** CD-ROM | disk | FTP | other *** search
-
- **********************************************************
- * *
- * Fmon V1.8 - hunt.a: hunt/verify *
- * *
- * (c) 1991 Michael Schröder *
- * *
- * This program is freely distributable as long as *
- * the above copyright message is left intact *
- * *
- **********************************************************
-
-
- xdef _hunt
- xdef _verify
- xdef @addblk
-
- xref _clearl
- xref _wril
- xref _wric
- xref _chq
- xref _chqc
- xref @app
- xref @addax
- xref @addd
- xref @adds
- xref _RESLEN
- xref idwand
- xref _CXD33
- xref _wril
-
- csect text,0
-
- xref _sp
- xref _cx
- xref _hj
- xref _huc
- xref _qual
- xref _bsize
- xref _bptrack
- xref _heads
- xref _lowbl
-
- _hunt movem.l d2-d7/a2/a3/a5/a6,-(a7)
- move.l 4+10*4(a7),a5
- move.l 8+10*4(a7),a3
- move.l 12+10*4(a7),a2
- move.l 16+10*4(a7),d2
- move.l 20+10*4(a7),d6
- move.l 24+10*4(a7),a6
- clr.l d5
- clr.w _sp(a4)
- tst.l d6
- ble.s plain
- move.l a5,d0
- addq.l #1,d0
- bclr.l #0,d0
- move.l d0,a5
- cmp.b #2,d6
- beq rela
- plain clr.l d7
- move.b _hj(a4),d7
- sub.w #$100,a7
- move.w #$100-1,d1
- hucl move.b d1,d0
- tst.b _huc(a4)
- beq.s nohuc
- jsr idwand(pc)
- nohuc move.b d0,0(a7,d1.w)
- dbf d1,hucl
- move.l d2,d1
- move.l a2,a1
- hucl2 move.b (a1),d7
- move.b 0(a7,d7.w),(a1)+
- subq.w #1,d1
- bne.s hucl2
- move.b _hj(a4),d7
- move.b 0(a7,d7.w),d7
- sub.w #$100,a7
- move.w #$100-1,d1
- move.l d2,d0
- addq.l #1,d0
- tst.l d6
- ble.s l1
- bset.l #0,d0
- l1 move.b d0,0(a7,d1.w)
- dbf d1,l1
- clr.l d3
- move.l a2,a1
- move.l d2,d0
- bra.s sma
- l2 move.b (a2)+,d3
- tst.l d6
- ble.s every
- btst.l #0,d0
- beq.s even
- every cmp.b d3,d7
- bne.s nojok
- move.w #$100-1,d1
- l3 move.b d0,0(a7,d1.w)
- dbf d1,l3
- nojok move.b d0,0(a7,d3.w)
- even subq.l #1,d0
- sma cmp.w #2,d0
- bcc.s l2
- move.b (a2)+,d3
- move.b 0(a7,d3.w),d3
- add.l d2,a5
- subq.l #1,d2
- add.l d2,d3
- nix2 move.l d2,d4
- cmpl2 cmp.l a5,a3
- bcs.s fin
- btst.b #3,_qual+1(a4)
- bne.s fin
- tst.l d5
- beq.s cmpl1
- subq.l #1,d5
- bne.s cmpl1
- bsr giveout
- clr.l d0
- cmpl1 lea 256(a7),a0
- move.l a2,a1
- cmpl move.b -(a5),d0
- move.b 0(a0,d0.w),d0
- cmp.b -(a1),d0
- cmpl3 dbne d4,cmpl
- beq.s fou
- cmp.b (a1),d7
- beq.s cmpl3
- cmp.b d2,d4
- bne.s nix1
- move.b 0(a7,d0.w),d0
- add.w d0,a5
- bra.s cmpl2
- nix1 sub.w d4,a5
- nix3 add.w d3,a5
- bra.s nix2
- fou bsr found
- clr.l d0
- bra.s nix3
- fin add.w #$200,a7
- fin2 bsr.s giveout
- tst.w _cx(a4)
- beq.s fin4
- jsr _wric(pc)
- fin4 movem.l (a7)+,d2-d7/a2/a3/a5/a6
- rts
-
- rela move.l a6,d2
- sub.l a6,a6
- subq.l #2,a3
- rcmpl2 cmp.l a5,a3
- bcs.s fin2
- btst.b #3,_qual+1(a4)
- bne fin2
- tst.l d5
- beq.s rcmpl
- subq.l #1,d5
- bne.s rcmpl
- bsr.s giveout
- rcmpl move.l a5,a0
- add.w (a5)+,a0
- cmp.l a0,d2
- bne.s rcmpl2
- subq.l #2,a5
- fou3 bsr.s found
- addq.l #2,a5
- bra.s rcmpl2
-
- giveout tst.w _sp(a4)
- beq.s out2
- out jsr _wril(pc)
- clr.w _sp(a4)
- out2 jmp _chq(pc)
-
- found tst.l d6
- bpl.s nodisk
- move.l a5,d0
- sub.l 4+10*4+4+$200(a7),d0
- move.l _bsize(a4),d1
- jsr _CXD33(pc)
- add.l a6,d0
- move.l d0,-(a7)
- move.l d1,-(a7)
- moveq.l #-1,d1
- jsr @addblk(pc)
- lea soff(a4),a0
- jsr @adds(pc)
- move.l (a7)+,d0
- jsr @addd(pc)
- move.w #36,_sp(a4)
- lea sblk(a4),a0
- jsr @adds(pc)
- move.l (a7)+,d0
- sub.l _lowbl(a4),d0
- jsr @addd(pc)
- bsr.s giveout
- jmp _wric(pc)
- nodisk move.l a5,d0
- sub.l a4,d0
- bcs.s isok
- cmp.l #_RESLEN,d0
- bcs.s monit
- isok move.w _cx(a4),d0
- add.w _sp(a4),d0
- cmp.b #71,d0
- bcs.s found1
- bsr giveout
- jsr _wric(pc)
- found1 moveq.l #' ',d0
- jsr @app(pc)
- moveq.l #'$',d0
- jsr @app(pc)
- move.l a5,d0
- jsr @addax(pc)
- move.l a6,d0
- beq.s nochange
- move.l a6,a0
- move.l a5,a1
- move.l d2,d0
- chal move.b (a0)+,(a1)+
- dbf d0,chal
- nochange move.l #1000,d5
- monit rts
-
- _verify movem.l a2/a3/a5/d5,-(a7)
- move.l 4+4*4(a7),a2
- move.l 8+4*4(a7),a5
- move.l 12+4*4(a7),a3
- clr.w _sp(a4)
- clr.l d5
- vloop cmp.l a2,a5
- bcs.s vfin
- btst.b #3,_qual+1(a4)
- bne.s vfin
- tst.l d5
- beq.s vcmpl
- subq.l #1,d5
- bne.s vcmpl
- bsr.s vgiveout
- vcmpl cmpm.b (a2)+,(a3)+
- beq.s vloop
- bsr.s vfound
- bra.s vloop
- vfin bsr.s vgiveout
- tst.w _cx(a4)
- beq.s vfin4
- jsr _wric(pc)
- vfin4 movem.l (a7)+,a2/a3/a5/d5
- rts
-
- vgiveout bra giveout
-
- vaddax subq.l #1,d0
- jmp @addax(pc)
-
- vfound move.w _cx(a4),d0
- add.w _sp(a4),d0
- cmp.b #60,d0
- bcs.s vfound1
- bsr.s vgiveout
- jsr _wric(pc)
- vfound1 lea vers(a4),a0
- jsr @adds(pc)
- move.l a2,d0
- bsr.s vaddax
- moveq.l #'=',d0
- jsr @app(pc)
- moveq.l #'$',d0
- jsr @app(pc)
- move.l a3,d0
- bsr.s vaddax
- move.l #1000,d5
- rts
-
-
- @addblk move.l d1,-(a7)
- move.l d0,-(a7)
- jsr _clearl(pc)
- lea scyl(a4),a0
- jsr @adds(pc)
- move.l (a7)+,d0
- move.l _bptrack(a4),d1
- jsr _CXD33(pc)
- move.l d1,-(a7)
- move.l _heads(a4),d1
- jsr _CXD33(pc)
- move.l d1,-(a7)
- jsr @addd(pc)
- move.w #9,_sp(a4)
- lea shead(a4),a0
- jsr @adds(pc)
- move.l (a7)+,d0
- jsr @addd(pc)
- move.w #17,_sp(a4)
- move.l (a7)+,d0
- move.l (a7)+,d1
- beq.s nosec
- move.l d0,-(a7)
- lea ssec(a4),a0
- jsr @adds(pc)
- move.l (a7)+,d0
- jsr @addd(pc)
- move.w #26,_sp(a4)
- nosec rts
-
-
-
-
-
- csect data,1
-
- vers dc.b ' $',0
- scyl dc.b 'Cyl:',0
- shead dc.b 'Head:',0
- ssec dc.b 'Sec:',0
- soff dc.b 'Off:',0
- sblk dc.b 'Block:',0
-
- end
-
-
-
-