home *** CD-ROM | disk | FTP | other *** search
-
- **********************************************************
- * *
- * Fmon V1.8 - assem.a: assembler *
- * *
- * (c) 1991 Michael Schröder *
- * *
- * This program is freely distributable as long as *
- * the above copyright message is left intact. *
- * *
- **********************************************************
-
-
- xdef _assem
- xdef _col
- xdef _mask1
- xdef _mask2
- xdef _mask3
- xdef _cbed
-
- xref dodis
- xref _gcla
- xref _gcl
- xref _frmval2
- xref _frmval3
-
- csect text,0,,2,2
-
- xref _ps
- xref _cl
- xref _comt
-
- _assem movem.l d2-d7/a2-a6,-(a7)
- subq.l #6,a7
- spl jsr _gcl(pc)
- cmp.b #' ',d0
- bne.s nosp
- addq.w #1,_ps(a4)
- bra.s spl
- nosp lea _cl(a4),a2
- add.w _ps(a4),a2
- clr.l d5
- moveq.l #-1,d7
- move.l a2,a0
- la2 addq.l #1,d7
- move.b (a0)+,d0
- beq.s la1
- cmpi.b #' ',d0
- beq.s la1
- cmpi.b #'.',d0
- bne.s la2
- la1 moveq.l #-2,d6
- loop addq.l #2,d6
- cmp.w #87*2,d6
- bne.s loopok
- addq.w #1,d5
- add.w d5,_ps(a4)
- bra errret
- loopok lea _comt(a4),a0
- move.w 0(a0,d6.w),d0
- move.w d0,d2
- lsr.w #3,d0
- add.w d0,a0
- andi.w #7,d2
- addq.w #1,d2
- moveq.l #-1,d3
- move.l a2,a1
- la4 addq.l #1,d3
- cmp.w d2,d3
- bcc.s la3
- cmp.w d7,d3
- bcc.s la3
- cmpm.b (a0)+,(a1)+
- beq.s la4
- la3 cmp.l d3,d5
- bcc.s la5
- move.l d3,d5
- la5 cmp.w d3,d2
- bne loop
- cmp.w #80*2,d6 ; SCC
- beq.s spec
- cmp.w #35*2,d6 ; BCC
- beq.s spec
- cmp.w #49*2,d6 ; DBCC
- beq.s spec
- cmp.w d2,d7
- bne loop
- clr.l d3
- bra found
- spec move.b (a1)+,d0
- addq.w #1,d2
- cmp.w d2,d7
- bne.s spec2
- moveq.l #0,d3
- cmp.b #'t',d0
- beq.s spec3
- moveq.l #1,d3
- cmp.b #'f',d0
- beq.s spec3
- bra loop
- spec2 addq.w #1,d2
- cmp.w d2,d7
- bne loop
- move.b (a1),d1
- moveq.l #2,d3
- lea _cbed+4(a4),a0
- spec6 cmp.b (a0)+,d0
- bne.s spec4
- cmp.b (a0),d1
- beq spec3
- spec4 addq.l #1,a0
- addq.l #1,d3
- cmp.w #18,d3
- bne.s spec6
- bra loop
- spec3 cmp.w #35*2,d6
- bne.s spec7
- cmp.w #1,d3
- bne.s spec8
- spec9 addq.w #2,_ps(a4)
- bra errret
- spec7 cmp.w #17,d3
- beq.s spec9
- cmp.w #16,d3
- bne.s spec8
- cmp.w #49*2,d6
- bne.s spec9
- moveq.l #1,d3
- spec8 andi.w #15,d3
- lsl.w #8,d3
- found add.w d7,_ps(a4)
- jsr _gcla(pc)
- moveq.l #4,d7
- move.w _ps(a4),4(a7)
- cmp.b #'.',d0
- bne.s nolen
- jsr _gcla(pc)
- clr.l d7
- cmp.b #'b',d0
- beq.s fo1
- moveq.l #1,d7
- cmp.b #'w',d0
- beq.s fo1
- moveq.l #2,d7
- cmp.b #'l',d0
- beq.s fo1
- cmp.w #35*2,d6
- bne errret
- cmp.b #'s',d0
- bne errret
- moveq.l #3,d7
- fo1 move.w _ps(a4),4(a7)
- jsr _gcla(pc)
- nolen move.w d6,d2
- move.w d3,d6
- bsr getarg
- move.w _ps(a4),2(a7)
- move.l d4,d3
- move.l d6,d5
- move.l a3,a2
- move.l a6,a5
- tst.b d0
- beq.s onlyone
- cmp.b #',',d0
- bne errret
- jsr _gcla(pc)
- tst.b d0
- beq errret
- onlyone move.l d1,d6
- bsr getarg
- tst.b d0
- bne errret
- or.w d1,d5
- move.w d2,d1
- cmp.w #68*2,d1
- bne.s tra1
- move.w #69*2,d0 ; MOVECCR
- cmp.b #18,d4
- beq.s tra2
- addq.w #2,d0
- cmp.b #19,d4
- beq.s tra2
- addq.w #2,d0
- cmp.b #19,d3
- beq.s tra2
- addq.w #2,d0
- cmp.b #20,d3
- beq.s tra2
- cmp.b #20,d4
- beq.s tra2
- addq.w #2,d0
- cmp.b #1,d4
- bne trans2
- tra2 move.w d0,d1
- bra trans2
- tra1 cmp.b #1,d4
- bne.s tra3
- moveq.l #8*2,d0
- cmp.w #4*2,d1
- beq.s tra2
- moveq.l #9*2,d0
- cmp.w #5*2,d1
- beq.s tra2
- moveq.l #10*2,d0
- cmp.w #41*2,d1
- beq.s tra2
- bra trans2
- tra3 cmp.b #11,d3
- bne.s tra4
- moveq.l #11*2,d0
- cmp.w #4*2,d1
- beq.s tra5
- moveq.l #12*2,d0
- cmp.w #5*2,d1
- beq.s tra5
- moveq.l #13*2,d0
- cmp.w #6*2,d1
- beq.s tra5
- moveq.l #14*2,d0
- cmp.w #7*2,d1
- beq.s tra5
- moveq.l #15*2,d0
- cmp.w #54*2,d1
- beq.s tra5
- moveq.l #16*2,d0
- cmp.w #41*2,d1
- bne.s trans2
- tra5 move.w d0,d1
- bra.s trans2
- tra4 cmp.w #41*2,d1
- bne.s trans2
- cmp.b #3,d4
- bne.s trans2
- moveq.l #48*2,d1
- trans2 cmp.b #4,d7
- bne.s trans3
- lea _mask3(a4),a0
- move.w 0(a0,d1.w),d7
- lsr.l #8,d7
- lsr.l #4,d7
- trans3 move.b d7,d0
- lsl.b #6,d0
- or.b d0,d5
- or.b d0,d6
- lea jtab1(pc),a0
- add.w 0(a0,d1.w),a0
- jsr (a0)
- lea _mask1(a4),a0
- move.w 0(a0,d1.w),d0
- or.w d0,d5
- eor.w d0,d5
- lea _mask2(a4),a0
- or.w 0(a0,d1.w),d5
- move.l d5,d2
- movem.l d1-d7/a2/a3,-(a7)
- jsr dodis(pc)
- tst.l d0
- bmi.s posop1
- moveq.l #-1,d0
- cmp.b 27(a7),d7
- beq.s lenoks
- move.w 4+4*9(a7),_ps(a4)
- bra.s dddd
- lenoks lea vtab(a4),a0
- move.b 0(a0,d3.w),d1
- cmp.b 11(a7),d1
- beq.s op1oks
- posop1 move.w 2+4*9(a7),_ps(a4)
- bra.s dddd
- op1oks move.b 0(a0,d4.w),d1
- cmp.b 15(a7),d1
- bne.s dddd
- clr.l d0
- dddd movem.l (a7)+,d1-d7/a2/a3
- tst.l d0
- bne.s errret
- move.l 4+6+11*4(a7),a0
- move.l a0,d0
- move.w d2,(a0)+
- cmp.w #74*2,d1 ; MOVEM
- bne.s nomomy
- move.w (a7),(a0)+
- nomomy cmp.w #1,a5
- bne.s poke1
- move.w a2,(a0)+
- poke1 cmp.w #2,a5
- bne.s poke2
- move.l a2,(a0)+
- poke2 cmp.w #1,a6
- bne.s poke3
- move.w a3,(a0)+
- poke3 cmp.w #2,a6
- bne.s poke4
- move.l a3,(a0)+
- poke4 exg.l d0,a0
- sub.l a0,d0
- bra.s assret
- errret clr.l d0
- assret addq.w #6,a7
- movem.l (a7)+,d2-d7/a2-a6
- rts
-
-
- jtab1 dc.w labcd-jtab1
- dc.w lsbcd-jtab1
- dc.w laddx-jtab1
- dc.w lsubx-jtab1
- dc.w ladd-jtab1
- dc.w lsub-jtab1
- dc.w land-jtab1
- dc.w lor-jtab1
- dc.w ladda-jtab1
- dc.w lsuba-jtab1
- dc.w lcmpa-jtab1
- dc.w laddi-jtab1
- dc.w lsubi-jtab1
- dc.w landi-jtab1
- dc.w lori-jtab1
- dc.w leori-jtab1
- dc.w lcmpi-jtab1
- dc.w laddq-jtab1
- dc.w lsubq-jtab1
- dc.w lasl1-jtab1
- dc.w lasr1-jtab1
- dc.w llsl1-jtab1
- dc.w llsr1-jtab1
- dc.w lrol1-jtab1
- dc.w lror1-jtab1
- dc.w lroxl1-jtab1
- dc.w lroxr1-jtab1
- dc.w lasl1-jtab1
- dc.w lasr1-jtab1
- dc.w llsl1-jtab1
- dc.w llsr1-jtab1
- dc.w lrol1-jtab1
- dc.w lror1-jtab1
- dc.w lroxl1-jtab1
- dc.w lroxr1-jtab1
- dc.w lbcc-jtab1
- dc.w lbset-jtab1
- dc.w lbclr-jtab1
- dc.w lbchg-jtab1
- dc.w lbtst-jtab1
- dc.w lchk-jtab1
- dc.w lcmp-jtab1
- dc.w lclr-jtab1
- dc.w lneg-jtab1
- dc.w lnegx-jtab1
- dc.w lnot-jtab1
- dc.w lswap-jtab1
- dc.w ltst-jtab1
- dc.w lcmpm-jtab1
- dc.w ldbcc-jtab1
- dc.w lmuls-jtab1
- dc.w lmulu-jtab1
- dc.w ldivs-jtab1
- dc.w ldivu-jtab1
- dc.w leor-jtab1
- dc.w lexg-jtab1
- dc.w lext-jtab1
- dc.w lillegal-jtab1
- dc.w lnop-jtab1
- dc.w lreset-jtab1
- dc.w lrte-jtab1
- dc.w lrtr-jtab1
- dc.w lrts-jtab1
- dc.w ltrapv-jtab1
- dc.w ljmp-jtab1
- dc.w ljsr-jtab1
- dc.w llea-jtab1
- dc.w llink-jtab1
- dc.w lmove-jtab1
- dc.w lmoveccr-jtab1
- dc.w lmovezsr-jtab1
- dc.w lmovevsr-jtab1
- dc.w lmoveusp-jtab1
- dc.w lmovea-jtab1
- dc.w lmovem-jtab1
- dc.w lmovep-jtab1
- dc.w lmoveq-jtab1
- dc.w lnbcd-jtab1
- dc.w ltas-jtab1
- dc.w lpea-jtab1
- dc.w lscc-jtab1
- dc.w lstop-jtab1
- dc.w ltrap-jtab1
- dc.w lunlk-jtab1
- dc.w llinea-jtab1
- dc.w llinef-jtab1
- dc.w ldc-jtab1
-
- labcd
- lsbcd
- laddx
- lsubx cmp.b #4,d3
- bne.s jt1
- bset.l #3,d5
- jt1 rts
- ladd
- lsub
- land
- lor tst.b d4
- beq.s jt1
- move.l d6,d5
- bset.l #8,d5
- rts
- ladda
- lsuba
- lcmpa cmp.b #1,d7
- bne.s jt2
- or.w #3<<6,d5
- rts
- jt2 or.w #7<<6,d5
- rts
- landi
- lori
- leori cmp.b #4,d7
- bne.s lmovevsr
- moveq.l #0,d7
- cmp.b #18,d4
- beq.s lmovevsr
- moveq.l #1,d7
- ori.b #$40,d6
- laddi
- lsubi
- lcmpi
- leor
- lmovevsr move.l d6,d5
- rts
- laddq
- lsubq move.l a2,d5
- beq swerr
- cmp.l #9,d5
- bcc jt5
- lsl.l #8,d5
- lsl.l #1,d5
- move.b d6,d5
- sub.l a5,a5
- rts
- lasl1
- lasr1
- llsl1
- llsr1
- lrol1
- lror1
- lroxl1
- lroxr1 tst.b d4
- beq.s jt3
- add.w #(27-19)*2,d1
- rts
- jt3 tst.b d3
- bne.s jt4
- move.l d6,d5
- bset.l #5,d5
- rts
- jt4 move.l a2,d5
- beq.s jt5
- cmp.l #9,d5
- bcc.s jt5
- lsl.l #8,d5
- lsl.l #1,d5
- move.b d6,d5
- and.b #$c7,d5
- sub.l a5,a5
- rts
- jt5 move.w 2+4(a7),_ps(a4)
- bra.s goswerr
- lbcc move.l 10+4+11*4(a7),d0
- cmp.b #22,d3
- bne.s jt6
- moveq.l #8,d3
- move.l d0,a2
- cmp.b #4,d7
- bne.s jt6
- moveq.l #2,d7
- jt6 cmp.b #8,d3
- bne.s goswerr
- cmp.b #22,d4
- bne.s goswerr
- moveq.l #22,d3
- moveq.l #13,d4
- sub.l d0,a2
- subq.l #2,a2
- clr.b d5
- move.l a2,d0
- beq.s jt7
- cmp.b #2,d7
- beq.s jt7
- ext.w d0
- ext.l d0
- cmp.l d0,a2
- bne.s jt7
- jt8 move.b d0,d5
- sub.l a5,a5
- cmp.b #4,d7
- bne.s jt9
- moveq.l #3,d7
- jt9 rts
- jt7 cmp.b #3,d7
- bne.s jt77
- move.w 4+4(a7),_ps(a4)
- goswerr bra swerr
- jt77 move.l a2,d0
- ext.l d0
- cmp.l d0,a2
- bne.s goswerr
- cmp.b #4,d7
- bne.s jt007
- moveq.l #2,d7
- jt007 move.w #1,a5
- rts
- lbset
- lbclr
- lbchg
- lbtst cmp.b #4,d7
- bne.s jt10
- clr.l d7
- tst.b d4
- bne.s jt10
- moveq.l #2,d7
- jt10 move.w d6,d5
- cmp.b #11,d3
- bne.s jt11
- move.w #1,a5
- andi.w #$003f,d5
- ori.w #$0840,d5
- rts
- jt11 bset.l #8,d5
- lchk
- lcmp
- lclr
- lneg
- lnegx
- lnot
- lswap
- ltst
- lcmpm
- lmuls
- lmulu
- ldivs
- ldivu
- lnbcd
- ltas
- lmoveccr
- lmovezsr
- ltrapv
- lillegal
- lnop
- lreset
- lrte
- lrtr
- lrts
- ljmp
- ljsr
- llea
- lpea
- llink
- lstop
- lscc
- lunlk rts
- ldbcc move.l 10+4+11*4(a7),d0
- cmp.b #22,d4
- bne.s jt12
- moveq.l #8,d4
- move.l d0,a3
- jt12 cmp.b #8,d4
- bne.s goswerr
- moveq.l #13,d4
- sub.l d0,a3
- subq.l #2,a3
- move.l a3,d0
- ext.l d0
- cmp.l d0,a3
- bne.s goswerr
- move.w #1,a6
- rts
- lexg move.l d6,d5
- tst.b d3
- bne.s jt13
- cmp.b #1,d4
- beq.s jt14
- jt13 bclr.l #7,d5
- bset.l #6,d5
- jt14 rts
- lext add.w #$0040,d5
- rts
- lmove
- lmovea move.l d7,d0
- bset.l d0,d0
- lsl.l #8,d0
- ror.b #3,d6
- move.b d6,d0
- lsl.w #3,d0
- lsl.b #2,d0
- lsl.w #1,d0
- andi.w #$003f,d5
- or.w d0,d5
- rts
- lmoveusp cmp.b #20,d4
- bne.s jt15
- bclr.l #3,d5
- rts
- jt15 move.l d6,d5
- bset.l #3,d5
- rts
- lmovem cmp.b #16,d3
- beq.s jt16
- bset.l #10,d5
- bra.s jt17
- jt16 move.l d6,d5
- bclr.l #10,d5
- jt17 bchg.l #6,d5
- cmp.b #4,d4
- bne.s jt18
- move.w 4(a7),d0
- moveq.l #15,d6
- jt19 lsr.w #1,d0
- roxl.w #1,d2
- dbf d6,jt19
- move.w d2,4(a7)
- jt18 rts
- lmovep tst.b d3
- bne.s jt20
- move.l d6,d5
- add.w #$0040,d5
- rts
- jt20 sub.w #$0040,d5
- rts
- lmoveq move.l a2,d0
- moveq.l #-128,d2
- cmp.l d2,d0
- bcc.s jt21
- neg.l d2
- lsl.l #1,d2
- cmp.l d2,d0
- bcc jt5
- jt21 move.b d0,d5
- sub.l a5,a5
- rts
- ltrap move.l a2,d5
- cmp.l #16,d5
- bcc.s swerr
- sub.l a5,a5
- rts
- llinea
- llinef
- ldc cmp.b #8,d3
- beq.s jt22
- cmp.b #7,d3
- bne.s swerr
- jt22 move.l a2,d5
- cmp.l #$10000,d5
- bcc.s swerr
- moveq.l #8,d3
- sub.l a5,a5
- rts
- swerr addq.l #4,a7
- bra errret
-
-
- getarg sub.l a6,a6
- sub.l a3,a3
- tst.b d0
- bne.s garg
- clr.l d1
- moveq.l #22,d4
- rts
- garg cmp.b #' ',d0
- bne.s ggarg
- jsr _gcla(pc)
- bra.s garg
- ggarg move.w _ps(a4),-(a7)
- subq.w #1,(a7)
- clr.l -(a7)
- moveq.l #'$',d1
- move.l d1,-(a7)
- move.l a7,-(a7)
- addq.l #4,(a7)
- cmp.b #'#',d0
- bne.s noimm
- moveq.l #11,d4
- jsr _frmval3(pc)
- tst.l d0
- bpl.s frmok
- gaerr add.w #14+4,a7
- bra errret
- frmok move.l 8(a7),a3
- moveq.l #2,d1
- cmp.l d1,d7
- beq.s ga1
- moveq.l #1,d1
- ga1 move.l d1,a6
- bra gaok
- noimm moveq.l #0,d4
- cmp.b #'d',d0
- beq.s reg
- cmp.b #'a',d0
- bne noreg
- moveq.l #1,d4
- reg jsr _gcla(pc)
- sub.b #'0',d0
- bcs fr
- cmp.b #8,d0
- bcc fr
- or.l d0,d6
- jsr _gcla(pc)
- cmp.b #'0',d0
- bcc fr
- cmp.w #74*2,d2 ; MOVEM
- bne gaok
- move.l d7,(a7)
- lsl.l #3,d4
- or.b d4,d6
- moveq.l #15,d7
- and.l d7,d6
- clr.l d7
- bset.l d6,d7
- mom2 cmp.b #'-',d0
- beq.s min
- cmp.b #'/',d0
- beq.s min
- move.w d7,14+4(a7)
- move.l (a7),d7
- clr.l d6
- moveq.l #16,d4
- bra gaok
- min move.l d0,d1
- jsr _gcla(pc)
- sub.b #'d',d0
- beq.s dat2
- cmp.b #'a'-'d',d0
- bne gaerr
- moveq.l #8,d0
- dat2 cmp.b #'-',d1
- bne.s nomin
- eor.b d0,d4
- bne gaerr
- nomin move.l d0,d4
- jsr _gcla(pc)
- sub.b #'0',d0
- bcs gaerr
- cmp.b #8,d0
- bcc gaerr
- or.b d4,d0
- cmp.b #'-',d1
- beq.s bis
- move.l d0,d6
- bis move.l d6,d1
- move.l d0,d6
- cmp.l d0,d1
- bcc.s bis1
- exg.l d0,d1
- bis1 bset.l d0,d7
- addq.l #1,d0
- cmp.l d0,d1
- bcc.s bis1
- jsr _gcla(pc)
- bra mom2
- noreg moveq.l #2,d4
- cmp.b #'-',d0
- bne.s noprede
- jsr _gcla(pc)
- cmp.b #'(',d0
- bne fr
- moveq.l #4,d4
- noprede cmp.b #'(',d0
- bne noind
- jsr _gcla(pc)
- cmp.b #'a',d0
- bne fr
- jsr _gcla(pc)
- sub.b #'0',d0
- bcs fr
- cmp.b #8,d0
- bcc fr
- or.l d0,d6
- jsr _gcla(pc)
- cmp.b #')',d0
- bne fr
- jsr _gcla(pc)
- cmp.b #2,d4
- bne.s ind2
- cmp.b #'+',d0
- ind2 bne gaok
- moveq.l #3,d4
- bra gaokgc
- noind cmp.b #'c',d0
- bne.s noccr
- jsr _gcla(pc)
- cmp.b #'c',d0
- bne fr
- jsr _gcla(pc)
- cmp.b #'r',d0
- bne fr
- moveq.l #18,d4
- bra gaokgc
- noccr cmp.b #'s',d0
- bne.s nosr
- jsr _gcla(pc)
- cmp.b #'r',d0
- bne gaerr
- moveq.l #19,d4
- bra gaokgc
- nosr cmp.b #'u',d0
- bne.s fr
- jsr _gcla(pc)
- cmp.b #'s',d0
- bne gaerr
- jsr _gcla(pc)
- cmp.b #'p',d0
- bne gaerr
- moveq.l #20,d4
- bra gaokgc
- fr move.w 12(a7),_ps(a4)
- jsr _frmval3(pc)
- move.l 8(a7),a3
- cmp.b #'(',d0
- bne abso
- move.l a3,d0
- ext.l d0
- cmp.l d0,a3
- beq.s frok1
- subq.w #1,_ps(a4)
- bra gaerr
- frok1 jsr _gcla(pc)
- cmp.b #'a',d0
- bne.s noad
- jsr _gcla(pc)
- sub.b #'0',d0
- bcs gaerr
- cmp.b #8,d0
- bcc gaerr
- or.l d0,d6
- jsr _gcla(pc)
- moveq.l #5,d4
- bra frok2
- noad cmp.b #'p',d0
- bne gaerr
- jsr _gcla(pc)
- cmp.b #'c',d0
- bne gaerr
- jsr _gcla(pc)
- moveq.l #9,d4
- frok2 cmp.b #',',d0
- bne frok3
- addq.l #1,d4
- exg.l d7,a3
- move.l d7,d0
- ext.w d0
- ext.l d0
- cmp.l d0,d7
- bne gaerr
- clr.l d7
- move.b d0,d7
- jsr _gcla(pc)
- cmp.b #'d',d0
- beq.s pud
- cmp.b #'a',d0
- bne gaerr
- bset.l #15,d7
- pud jsr _gcla(pc)
- sub.b #'0',d0
- bcs gaerr
- cmp.b #8,d0
- bcc gaerr
- lsl.w #8,d0
- lsl.w #4,d0
- or.w d0,d7
- jsr _gcla(pc)
- cmp.b #'.',d0
- bne.s frok4
- jsr _gcla(pc)
- cmp.b #'w',d0
- beq.s nix
- cmp.b #'l',d0
- bne gaerr
- bset.l #11,d7
- nix jsr _gcla(pc)
- frok4 exg.l d7,a3
- frok3 cmp.b #')',d0
- bne gaerr
- jsr _gcla(pc)
- move.w #1,a6
- bra gaok
- abso move.w 12(a7),_ps(a4)
- jsr _frmval2(pc)
- tst.l d0
- bmi gaerr
- move.l 8(a7),a3
- moveq.l #8,d4
- move.w #2,a6
- cmp.w #35*2,d6 ; Bcc
- beq gaok
- cmp.w #49*2,d6 ; DBcc
- beq gaok
- move.l a3,d1
- ext.l d1
- cmp.l d1,a3
- bne.s nosh
- moveq.l #7,d4
- subq.l #1,a6
- nosh cmp.b #'.',d0
- bne.s gaok
- jsr _gcla(pc)
- cmp.b #'l',d0
- bne.s sho
- moveq.l #8,d4
- move.w #2,a6
- bra.s gaokgc
- sho cmp.b #'w',d0
- bne gaerr
- cmp.b #7,d4
- bne gaerr
- gaokgc jsr _gcla(pc)
- gaok move.l d6,-(a7)
- move.l d4,d1
- cmp.b #8,d4
- bcc.s spe
- lsl.w #3,d1
- or.w d1,d6
- bra.s garr
- spe clr.b d6
- sub.w #7,d1
- cmp.b #12,d4
- bcs.s spe3
- cmp.b #18,d4
- beq.s spe2
- cmp.b #19,d4
- bne.s garr
- spe2 moveq.l #4,d1
- spe3 ori.b #$38,d1
- or.b d1,d6
- garr move.l (a7)+,d1
- and.l #7,d1
- lsl.w #8,d1
- lsl.w #1,d1
- garrl cmp.b #' ',d0
- bne.s garrr
- jsr _gcla(pc)
- bra.s garrl
- garrr add.w #14,a7
- rts
-
-
- csect data,1
-
- _mask1 dc.w $f1f0,$f1f0,$f130,$f130,$f000,$f000,$f000,$f000
- dc.w $f0c0,$f0c0,$f0c0,$ff00,$ff00,$ff00,$ff00,$ff00
- dc.w $ff00,$f100,$f100,$f118,$f118,$f118,$f118,$f118
- dc.w $f118,$f118,$f118,$ffc0,$ffc0,$ffc0,$ffc0,$ffc0
- dc.w $ffc0,$ffc0,$ffc0,$f000,$f0c0,$f0c0,$f0c0,$f0c0
- dc.w $f1c0,$f100,$ff00,$ff00,$ff00,$ff00,$fff8,$ff00
- dc.w $f138,$f0f8,$f1c0,$f1c0,$f1c0,$f1c0,$f100,$f130
- dc.w $ff38,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff
- dc.w $ffc0,$ffc0,$f1c0,$fff8,$c000,$ffc0,$ffc0,$ffc0
- dc.w $fff0,$e1c0,$fb80,$f138,$f100,$ffc0,$ffc0,$ffc0
- dc.w $f0c0,$ffff,$fff0,$fff8,$f000,$f000,$0000
-
- _mask2 dc.w $c100,$8100,$d100,$9100,$d000,$9000,$c000,$8000
- dc.w $d0c0,$90c0,$b0c0,$0600,$0400,$0200,$0000,$0a00
- dc.w $0c00,$5000,$5100,$e100,$e000,$e108,$e008,$e118
- dc.w $e018,$e110,$e010,$e1c0,$e0c0,$e3c0,$e2c0,$e7c0
- dc.w $e6c0,$e5c0,$e4c0,$6000,$00c0,$0080,$0040,$0000
- dc.w $4180,$b000,$4200,$4400,$4000,$4600,$4840,$4a00
- dc.w $b108,$50c8,$c1c0,$c0c0,$81c0,$80c0,$b100,$c100
- dc.w $4800,$4afc,$4e71,$4e70,$4e73,$4e77,$4e75,$4e76
- dc.w $4ec0,$4e80,$41c0,$4e50,$0000,$44c0,$46c0,$40c0
- dc.w $4e60,$2040,$4880,$0108,$7000,$4800,$4ac0,$4840
- dc.w $50c0,$4e72,$4e40,$4e58,$a000,$f000,$0000
-
- _mask3 dc.w $0fff,$0fff,$1fff,$1fff,$1fff,$1fff,$1ffd,$1ffd
- dc.w $1fff,$1fff,$1fff,$11fd,$11fd,$49fd,$49fd,$49fd
- dc.w $11fd,$11ff,$11ff,$1fff,$1fff,$1fff,$1fff,$1fff
- dc.w $1fff,$1fff,$1fff,$11fc,$11fc,$11fc,$11fc,$11fc
- dc.w $11fc,$11fc,$11fc,$4fff,$41fd,$41fd,$41fd,$4ffd
- dc.w $1ffd,$1fff,$11fd,$11fd,$11fd,$11fd,$1fff,$11fd
- dc.w $1fff,$1fff,$1ffd,$1ffd,$1ffd,$1ffd,$11fd,$2fff
- dc.w $1fff,$4fff,$4fff,$4fff,$4fff,$4fff,$4fff,$4fff
- dc.w $47e4,$47e4,$47e4,$4fff,$1fff,$1ffd,$1ffd,$11fd
- dc.w $2fff,$1fff,$17fc,$1fff,$2fff,$01fd,$01fd,$47e4
- dc.w $01fd,$4fff,$4fff,$4fff,$4fff,$4fff,$4fff
-
- vtab dc.b 0,1,2,3,4,5,6,7,8,9,10,11,11,13
- dc.b 11,11,16,8,18,19,20,21,22,23
-
- _cbed dc.b 't',0,'f',0,'hilscccsneeqvcvsplmigeltgtlerasr'
- _col dc.b 'bwls'
-
-
- end
-
-