home *** CD-ROM | disk | FTP | other *** search
-
- **********************************************************
- * *
- * Fmon V1.8 - other.a *
- * *
- * (c) 1991 Michael Schröder *
- * *
- * This program is freely distributable as long as *
- * the above copyright message is left intact *
- * *
- **********************************************************
-
-
- xdef @addbname
- xdef @addbname4
- xdef @addc
- xdef @dumpmem
- xdef @dumpasc
- xdef @setcd
- xdef @setnam
- xdef @getbytes
- xdef @binfoh
- xdef _getnam
- xdef _getnam2
- xdef _getdevnam
- xdef _fill
-
- xref @app
- xref @addax
- xref @addbx
- xref @adds
- xref @cmpsbs
- xref _gcl
- xref _gcla
- xref _wril
- xref _dnl
- xref _clearl
-
-
- csect text,0,,2,2
-
- xref _sp
- xref _fib
- xref _cl
- xref _ps
- xref _DOSBase
- xref _proc
-
-
-
- _fill move.l d2,-(a7)
- move.l 4+4(a7),a0
- move.l 8+4(a7),d2
- fll move.l 12+4(a7),a1
- move.l 16+4(a7),d1
- beq.s one
- flll move.b (a1)+,(a0)+
- sub.l #1,d2
- beq fr
- dbf d1,flll
- bra.s fll
- one move.b (a1),d0
- move.b d0,d1
- lsl.w #8,d0
- move.b d1,d0
- move.w d0,d1
- swap d0
- move.w d1,d0
- move.l a0,d1
- btst.l #0,d1
- beq.s eve
- move.b d0,(a0)+
- subq.l #1,d2
- eve move.l d2,d1
- lsr.l #2,d1
- beq.s m4
- evel move.l d0,(a0)+
- subq.l #1,d1
- bne.s evel
- m4 andi.w #$0003,d2
- bra.s m4ll
- m4l move.b d0,(a0)+
- m4ll dbf d2,m4l
- fr move.l (a7)+,d2
- rts
-
-
- @addbname lsl.l #2,d0
- beq.s nix
- @addbname4 movem.l a2/d2,-(a7)
- move.l d0,a2
- move.b (a2)+,d2
- bra.s abn1
- abn2 move.b (a2)+,d0
- bsr @addc
- abn1 subq.b #1,d2
- bcc.s abn2
- movem.l (a7)+,a2/d2
- nix rts
-
-
- addsp moveq.l #' ',d0
- jmp @app(pc)
-
- @dumpmem movem.l a0/a2/d2,-(a7)
- move.l a0,a2
- clr.w _sp(a4)
- moveq.l #'.',d0
- jsr @app(pc)
- moveq.l #'&',d0
- jsr @app(pc)
- bsr.s addsp
- move.l a2,d0
- jsr @addax(pc)
- moveq.l #':',d0
- jsr @app(pc)
- bsr.s addsp
- moveq.l #7,d2
- dml move.b (a2)+,d0
- jsr @addbx(pc)
- move.b (a2)+,d0
- jsr @addbx(pc)
- bsr.s addsp
- dbf d2,dml
- bsr.s addsp
- movem.l (a7)+,a0/a2/d2
- moveq.l #16,d0
-
- @dumpasc movem.l a2/d2,-(a7)
- move.l a0,a2
- move.l d0,d2
- duascl move.b (a2)+,d0
- bsr.s @addc
- subq.l #1,d2
- bne.s duascl
- movem.l (a7)+,a2/d2
- jmp _wril(pc)
-
- @addc lsl.w #1,d0
- cmp.b #32*2,d0
- bcc.s adc1
- moveq.l #'.'*2,d0
- adc1 lsr.w #1,d0
- jmp @app(pc)
-
-
- @setnam sub.l a0,a0
- bra.s setcd
-
- @setcd clr.l d0
- setcd movem.l d2/d3/d6/d7/a2/a3/a6,-(a7)
- moveq.l #80,d6
- move.l d0,d2
- move.l _DOSBase(a4),a6
- move.l a0,a2
- move.l _proc(a4),a3
- move.l 168(a3),d7
- move.l 172(a3),a3
- add.l a3,a3
- add.l a3,a3
- move.l 4(a3),a3
- add.l a3,a3
- add.l a3,a3
- tst.l d2
- bne notfound
- move.l 34(a6),a0
- move.l 24(a0),a0
- add.l a0,a0
- add.l a0,a0
- addq.l #4,a0
- weit move.l (a0),d0
- beq notfound
- lsl.l #2,d0
- move.l d0,a0
- tst.l 4(a0)
- bne.s weit
- cmp.l 8(a0),d7
- bne.s weit
- move.l 40(a0),d7
- move.l a2,d0
- beq.s tonull
- move.l d7,d0
- move.l a2,a0
- jsr @cmpsbs(pc)
- tst.l d0
- beq.s notfound
- clr.l d1
- jsr -126(a6)
- move.l d0,d1
- jsr -90(a6)
- tonull lsl.l #2,d7
- move.l d7,a0
- clr.l d0
- move.b (a0)+,d0
- subq.l #1,d6
- cmp.l d0,d6
- bcc.s nllok
- move.l d6,d0
- nllok move.b d0,(a3)
- addq.b #1,(a3)+
- scdl move.b (a0)+,(a3)+
- dbf d0,scdl
- move.b #':',-(a3)
- bra scdok
- notfound move.l a2,d1
- beq.s endsetnam
- moveq.l #-2,d2
- jsr -84(a6) ; lock
- tst.l d0
- beq.s scderr
- move.l d0,d1
- move.l d0,d2
- jsr -126(a6)
- move.l d0,d1
- jsr -90(a6) ; unlock
- endsetnam clr.b (a3)+
- move.l a3,a2
- bsr.s recur
- move.l a2,d0
- sub.l a3,d0
- move.b d0,-(a3)
- scdok moveq.l #0,d0
- bra.s scdfin
- scderr moveq.l #-1,d0
- scdfin movem.l (a7)+,d2/d3/d6/d7/a2/a3/a6
- rts
-
- recur move.l d2,d1
- jsr -210(a6)
- move.l d1,d3
- bne.s noro
- lsl.l #2,d2
- beq.s crlo2
- move.l d2,a0
- move.l 16(a0),a0
- add.l a0,a0
- add.l a0,a0
- move.l 40(a0),a0
- add.l a0,a0
- add.l a0,a0
- move.b (a0)+,d0
- beq.s crlo2
- crlo move.b (a0)+,(a2)+
- subq.l #1,d6
- beq.s crrr
- subq.b #1,d0
- bne.s crlo
- crlo2 move.b #':',(a2)+
- subq.l #1,d6
- crrr rts
- noro movem.l d2/d3,-(a7)
- move.l d3,d2
- bsr.s recur
- tst.l d3
- beq.s nomore
- tst.l d6
- beq.s nomore
- move.b #'/',(a2)+
- subq.l #1,d6
- nomore movem.l (a7)+,d2/d3
- move.l d3,d1
- jsr -90(a6) ;unlock
- move.l d2,d1
- lea _fib(a4),a0
- move.l a0,d2
- jsr -102(a6)
- tst.l d0
- beq.s endcp
- tst.l d6
- beq.s endcp
- lea _fib+8(a4),a0
- endcp1 move.b (a0)+,d0
- beq.s endcp
- move.b d0,(a2)+
- subq.l #1,d6
- bne.s endcp1
- endcp rts
-
-
- rsl addq.w #1,_ps(a4)
- readspace jsr _gcl(pc)
- cmp.b #' ',d0
- beq.s rsl
- rts
-
- _getdevnam bsr.s readspace
- lea _cl+1(a4),a0
- add.w _ps(a4),a0
- tst.b (a0)
- bne.s nocut
- sub.w #'0',d0
- bcs.s nocut
- cmp.w #4,d0
- bcc.s nocut
- lea _dnl(a4),a0
- add.w d0,a0
- lsl.w #2,d0
- add.w d0,a0
- move.l a0,d0
- gdnret rts
- nocut bsr.s _getnam
- tst.l d0
- beq.s gdnret
- move.l d0,a0
- nocu tst.b (a0)+
- bne.s nocu
- subq.l #2,a0
- moveq.l #':',d1
- cmp.b (a0)+,d1
- beq.s gdnret
- move.b d1,(a0)+
- clr.b (a0)
- rts
-
- _getnam bsr.s _getnam2
- tst.l d0
- bne.s gnret
- jsr _gcl(pc)
- tst.b d0
- bne.s gnret2
- addq.w #1,_ps(a4)
- gnret2 clr.l d0
- gnret rts
-
- _getnam2 bsr readspace
- lea _cl(a4),a0
- add.w _ps(a4),a0
- moveq.l #'"',d1
- cmp.b d1,d0
- bne.s ohnanf
- move.l a0,a1
- move.l a1,d0
- addq.l #1,a0
- gnl addq.w #1,_ps(a4)
- move.b (a0),(a1)+
- beq.s gnre
- cmp.b (a0)+,d1
- bne.s gnl
- addq.w #1,_ps(a4)
- cmp.b (a0)+,d1
- beq.s gnl
- clr.b -(a1)
- bra.s gnre
- ohnanf clr.l d0
- tst.b (a0)
- beq.s gnre
- move.l a0,d0
- ohnanfl tst.b (a0)
- beq.s gnre
- addq.w #1,_ps(a4)
- cmp.b #' ',(a0)+
- bne.s ohnanfl
- clr.b -(a0)
- gnre rts
-
-
- @getbytes movem.l a2/d2,-(a7)
- move.l a0,a2
- move.l a0,-(a7)
- gbloop bsr readspace
- addq.w #1,_ps(a4)
- tst.b d0
- bne.s gbwei
- gbret subq.w #1,_ps(a4)
- move.l a2,d0
- sub.l (a7)+,d0
- movem.l (a7)+,a2/d2
- rts
- gbwei cmp.b #'"',d0
- bne.s bytes
- gbl2 jsr _gcla(pc)
- tst.b d0
- beq.s gbret
- cmp.b #'"',d0
- bne.s noanf2
- jsr _gcl(pc)
- cmp.b #'"',d0
- bne.s gbloop
- addq.w #1,_ps(a4)
- noanf2 move.b d0,(a2)+
- bra.s gbl2
- bytes clr.l d2
- bsr.s getnib
- jsr _gcl(pc)
- bsr.s getnib
- addq.w #1,_ps(a4)
- move.b d2,(a2)+
- bra.s gbloop
- getnib cmp.b #'a',d0
- bcs.s digi
- sub.b #'a'-10,d0
- cmp.b #16,d0
- bcs.s gnwei
- gnerr addq.l #4,a7
- bra.s gbret
- digi sub.b #'0',d0
- bcs.s gnerr
- cmp.b #10,d0
- bcc.s gnerr
- gnwei lsl.b #4,d2
- or.b d0,d2
- rts
-
- @binfoh move.l a0,-(a7)
- jsr _clearl(pc)
- move.l (a7)+,a0
- jsr @adds(pc)
- move.w #20,_sp(a4)
- rts
-
- end
-