12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- | Warning: This routine has the attribute __ATTR_TIOS_CALLBACK__!
- .xdef fputchar
- .text
- fputchar:
- link.w %a6,#-20
- movem.l %d3-%d7/%a2-%a5,-(%sp)
- clr.w %d6
- move.b (%a6,9),%d6
- move.l 0xC8,%a5
- move.l (%a5,1592),%a0 /* FontGetSys */
- jsr (%a0)
- ext.w %d0 /* Yes, I know we technically shouldn't sign-extend an
- unsigned char, but it is always positive anyway. */
- move.w %d0,%d4
- lsl.w #1,%d4
- addq.w #6,%d4
- move.l (%a5,188),%a3 /* ScrRect */
- pea (%a6,-18)
- move.l (%a5,1664),%a0 /* SaveScrState */
- jsr (%a0)
- move.w (%a6,-8),%d5
- move.w (%a6,-6),%d3
- move.w %d6,-(%sp)
- move.l (%a5,1600),%a0 /* FontCharWidth */
- jsr (%a0)
- move.w %d0,%d7
- cmp.b #10,%d6
- jbeq .L__fputchar_1
- move.w %d5,%d0
- add.w %d7,%d0
- clr.w %d1
- move.b (%a3,2),%d1
- cmp.w %d0,%d1
- jbge .L__fputchar_2
- .L__fputchar_1:
- clr.w %d5
- add.w %d4,%d3
- .L__fputchar_2:
- move.w %d3,%d0
- add.w %d4,%d0
- clr.w %d1
- move.b (%a3,3),%d1
- cmp.w %d0,%d1
- jbge .L__fputchar_3
- clr.w (%sp)
- move.w %d4,-(%sp)
- move.l %a3,-(%sp)
- move.l %a3,-(%sp)
- move.l (%a5,1580),%a0 /* ScrRectScroll */
- jsr (%a0)
- sub.w %d4,%d3
- .L__fputchar_3:
- move.w #4,(%sp)
- move.w %d6,-(%sp)
- move.w %d3,-(%sp)
- move.w %d5,-(%sp)
- cmp.b #10,%d6
- jbeq .L__fputchar_4
- move.l (%a5,1680),%a0 /* DrawChar */
- jsr (%a0)
- add.w %d7,(%sp)
- .L__fputchar_4:
- move.l (%a5,1652),%a0 /* MoveTo */
- jsr (%a0)
- move.w %d6,%d0
- movm.l -56(%a6),%d3-%d7/%a2-%a5
- unlk %a6
- rts
|