home *** CD-ROM | disk | FTP | other *** search
-
- **********************************************************
- * *
- * Fmon V1.8 - cons.a: my console handler *
- * *
- * (c) 1991 Michael Schröder *
- * *
- * This program is freely distributable as long as *
- * the above copyright message is left intact. *
- * *
- **********************************************************
-
-
- include "fmon.i"
-
- xdef _cwrite
-
- xref _strlen
- xref _text
- xref @bltcp
- xref _clear
- xref _scroll
- xref @waitbof
- xref scrup
-
- csect text,0
-
- xref _bpl0
- xref _GfxBase
- xref _wifapos
-
- _cwrite movem.l d2-d7/a2/a3,-(a7)
- move.l 4+4*8(a7),a2
- move.l 8+4*8(a7),d7
- moveq.l #-1,d0
- cmp.l d0,d7
- bne.s spec
- move.l a2,-(a7)
- jsr _strlen(pc)
- addq.l #4,a7
- move.l d0,d7
- spec tst.l d7
- beq cwret
- clr.l d6
- lea lbuf(a4),a3
- move.w rcx(a4),d4
- move.w rcy(a4),d5
- bsr cursoroff
- cwloop clr.l d0
- move.b (a2)+,d0
- tst.b escfl(a4)
- beq.s noescfl
- clr.b escfl(a4)
- cmp.b #'[',d0
- beq csion
- bra cwloop2
- noescfl tst.b csifl(a4)
- beq.s nocsifl
- cmp.b #'0',d0
- bcs.s nonum
- cmp.b #'9'+1,d0
- bcc.s nonum
- sub.b #'0',d0
- move.l arg(a4),d1
- mulu #10,d1
- add.l d0,d1
- move.l d1,arg(a4)
- bra cwloop2
- nonum cmp.b #';',d0
- bne.s nosemi
- move.l arg(a4),barg(a4)
- addq.b #1,narg(a4)
- clr.l arg(a4)
- bra cwloop2
- nosemi clr.b csifl(a4)
- sub.b #'@',d0
- bcs cwloop2
- cmp.b #17,d0
- bcc cwloop2
- add.w d0,d0
- lea swtab(pc),a0
- add.w 0(a0,d0.w),a0
- jsr (a0)
- bra cwloop2
- nocsifl cmp.b #27+128,d0
- bne.s nocsi
- csion clr.b narg(a4)
- clr.l arg(a4)
- clr.l barg(a4)
- addq.b #1,csifl(a4)
- bra cwloop2
- nocsi cmp.b #$20,d0
- bcc.s isprint
- cmp.b #27,d0
- bne.s noesc
- addq.b #1,escfl(a4)
- bra cwloop2
- noesc cmp.b #10,d0
- bne.s noret
- isret addq.w #1,d5
- iscr clr.w d4
- bsr writeout
- bra cwloop2
- noret cmp.b #13,d0
- beq.s iscr
- cmp.b #12,d0
- bne.s noff
- bsr writeout
- clr.w d4
- clr.w d5
- bsr writeout
- move.l #YYY*8-1,-(a7)
- move.l #XXX*8-1,-(a7)
- clr.l -(a7)
- clr.l -(a7)
- jsr _clear(pc)
- add.w #16,a7
- bra cwloop2
- noff cmp.b #8,d0
- bne.s isprint
- tst.w d4
- beq.s bs1
- subq.w #1,d4
- bs1 bsr writeout
- bra.s cwloop2
- isprint move.b d0,(a3)+
- addq.l #1,d6
- addq.w #1,d4
- cmp.w #XXX,d4
- bcc isret
- subq.l #1,d7
- beq.s cwlend
- move.b (a2)+,d0
- bra nocsifl
- cwloop2 subq.l #1,d7
- bne cwloop
- cwlend tst.l d6
- beq.s nowri
- bsr writeout
- nowri bsr setcur
- bsr.s cursoron
- cwret movem.l (a7)+,d2-d7/a2/a3
- cret rts
-
- cursoroff tst.b curfl(a4)
- beq.s cret
- bra.s chcur
- cursoron tst.b curfl(a4)
- bne.s cret
- chcur cmp.w #YYY,d5
- bcs.s chcurok
- clr.b curfl(a4)
- rts
- chcurok move.l _bpl0(a4),a0
- add.w d4,a0
- move.w d5,d0
- mulu #XXX*8,d0
- add.l d0,a0
- moveq.l #7,d0
- chcurl not.b (a0)
- add.w #XXX,a0
- dbf d0,chcurl
- not.b curfl(a4)
- rts
-
- swtab dc.w csiKL-swtab
- dc.w csiA-swtab
- dc.w csiB-swtab
- dc.w csiC-swtab
- dc.w csiD-swtab
- dc.w csiE-swtab
- dc.w csiF-swtab
- dc.w csiG-swtab
- dc.w csiH-swtab
- dc.w csiI-swtab
- dc.w csiJ-swtab
- dc.w csiK-swtab
- dc.w csiL-swtab
- dc.w csiM-swtab
- dc.w csiN-swtab
- dc.w csiO-swtab
- dc.w csiP-swtab
-
- csiH bsr writeout
- move.l arg(a4),d5
- move.l barg(a4),d4
- tst.b narg(a4)
- beq.s norma
- exg.l d4,d5
- subq.w #1,d4
- subq.w #1,d5
- norma tst.w d4
- bpl.s csih2
- clr.l d4
- csih2 cmp.w #XXX,d4
- bcs.s csih3
- move.w #XXX-1,d4
- csih3 tst.w d5
- bpl.s csih4
- clr.l d5
- csih4 cmp.w #YYY,d5
- bcs.s csih5
- move.w #YYY-1,d5
- csih5 bsr setcur
- rts
-
- csiC bsr writeout
- add.w #1,d4
- bra.s norma
-
- csiD bsr writeout
- subq.w #1,d4
- bra.s norma
-
- csiA bsr writeout
- subq.w #1,d5
- bra.s norma
-
- csiB bsr writeout
- addq.w #1,d5
- cmp.w #YYY,d5
- bcs.s csib1
- moveq.l #YYY-1,d5
- move.l #YYY*8-1,-(a7)
- move.l #XXX*8-1,-(a7)
- clr.l -(a7)
- clr.l -(a7)
- moveq.l #8,d0
- move.l d0,-(a7)
- clr.l -(a7)
- bsr setcur
- bra doscroll
- csib1 bsr setcur
- rts
-
- csiJ tst.l d6
- beq.s csij1
- bsr writeout
- csij1 cmp.w #YYY,d5
- bcc.s csij2
- clr.l d0
- clr.l d1
- move.w d4,d0
- move.w d5,d1
- lsl.l #3,d0
- lsl.l #3,d1
- move.l d1,-(a7)
- addq.l #7,(a7)
- move.l #XXX*8-1,-(a7)
- move.l d1,-(a7)
- move.l d0,-(a7)
- jsr _clear(pc)
- clr.l (a7)
- addq.l #8,4(a7)
- move.l #YYY*8-1,12(a7)
- jsr _clear(pc)
- add.w #16,a7
- csij2 rts
-
- csiK tst.l d6
- beq.s csik1
- bsr writeout
- csik1 cmp.w #YYY,d5
- bcc.s csik2
- clr.l d0
- clr.l d1
- move.w d4,d0
- move.w d5,d1
- lsl.l #3,d0
- lsl.l #3,d1
- move.l d1,-(a7)
- addq.l #7,(a7)
- move.l #XXX*8-1,-(a7)
- move.l d1,-(a7)
- move.l d0,-(a7)
- jsr _clear(pc)
- add.w #16,a7
- csik2 rts
-
- csiL bsr writeout
- clr.l d0
- move.w d5,d0
- lsl.l #3,d0
- move.l #YYY*8-1,-(a7)
- move.l #XXX*8-1,-(a7)
- move.l d0,-(a7)
- clr.l -(a7)
- moveq.l #-8,d0
- move.l d0,-(a7)
- clr.l -(a7)
- bra doscroll
-
- csiM bsr writeout
- clr.l d0
- move.w d5,d0
- lsl.l #3,d0
- move.l #YYY*8-1,-(a7)
- move.l #XXX*8-1,-(a7)
- move.l d0,-(a7)
- clr.l -(a7)
- moveq.l #8,d0
- move.l d0,-(a7)
- clr.l -(a7)
- bra doscroll
-
- csiKL bsr writeout
- clr.l d0
- clr.l d1
- move.w d4,d0
- move.w d5,d1
- lsl.l #3,d0
- lsl.l #3,d1
- move.l d1,-(a7)
- addq.l #7,(a7)
- move.l #XXX*8-1,-(a7)
- move.l d1,-(a7)
- move.l d0,-(a7)
- clr.l -(a7)
- moveq.l #-8,d0
- move.l d0,-(a7)
- jsr _scroll(pc)
- add.w #6*4,a7
- rts
-
- csiP bsr writeout
- clr.l d0
- clr.l d1
- move.w d4,d0
- move.w d5,d1
- lsl.l #3,d0
- lsl.l #3,d1
- move.l d1,-(a7)
- addq.l #7,(a7)
- move.l #XXX*8-1,-(a7)
- move.l d1,-(a7)
- move.l d0,-(a7)
- clr.l -(a7)
- moveq.l #8,d0
- move.l d0,-(a7)
- jsr _scroll(pc)
- add.w #6*4,a7
- rts
-
- csiE
- csiF
- csiG
- csiI
- csiN
- csiO
- rts
-
- doscroll cmp.b #' ',_wifapos+1(a4)
- bne.s dosc1
- move.l 4(a7),d0
- asr.l #1,d0
- move.l d0,4(a7)
- jsr @waitbof(pc)
- jsr _scroll(pc)
- dosc1 jsr @waitbof(pc)
- jsr _scroll(pc)
- add.w #6*4,a7
- rts
-
-
-
- writeout clr.l d0
- clr.l d1
- move.w rcx(a4),d0
- lsl.l #3,d0
- move.w rcy(a4),d1
- cmp.w #YYY,d1
- bcs norwri
- lea lbuf(a4),a0
- add.w d6,a0
- sub.w #XXX,d6
- neg.w d6
- moveq.l #' ',d1
- bra.s compwril
- compwrill move.b d1,(a0)+
- compwril dbf d6,compwrill
- moveq.l #8,d2
- cmp.b #' ',_wifapos+1(a4)
- bne.s compwrif
- moveq.l #4,d2
- compwrif lea lbuf(a4),a3
- jsr scrup(pc)
- moveq.l #YYY-1,d0
- subq.l #1,d5
- bra.s norwri2
- norwri lsl.l #3,d1
- tst.l d6
- beq.s norwri2
- move.l d6,-(a7)
- lea lbuf(a4),a0
- move.l a0,-(a7)
- moveq.l #8,d2
- move.l d2,-(a7)
- clr.l -(a7)
- move.l d1,-(a7)
- move.l d0,-(a7)
- jsr _text(pc)
- add.w #6*4,a7
- norwri2 lea lbuf(a4),a3
- clr.l d6
- setcur move.w d4,rcx(a4)
- move.w d5,rcy(a4)
- rts
-
-
-
- csect __MERGED,2
-
- arg ds.b 4
- barg ds.b 4
- rcx ds.b 2
- rcy ds.b 2
-
- llen ds.b 2
- lbuf ds.b XXX
-
- escfl ds.b 1
- csifl ds.b 1
- curfl ds.b 1
- narg ds.b 1
-
-
- end
-
-