.define .diagnos .sect .text .sect .rom .sect .data .sect .bss space = 040 del = 0177 .sect .text .diagnos: move.w hol0,-(sp) move.l hol0+4,d2 beq 1f move.l d2,a0 move.l #40,d0 3: move.b (a0)+,d1 beq 2f cmp.b #del,d1 bge 1f cmp.b #space,d1 blt 1f sub #1,d0 bgt 3b clr.b (a0) 2: move.l d2,-(sp) pea fmt jsr printf add #10,sp jmp printf 1: move.l #unknwn,d2 bra 2b .sect .text putchar: move.w #1,-(sp) pea 7(sp) move.w #1,-(sp) jsr _write add.l #8,sp rts printf: link a6,#-12 .sect .data _12: .data2 28786 .data2 26990 .data2 29798 .data2 11875 .data2 0 .sect .text pea 8+4(a6) move.l (sp)+,-6(a6) I004: move.l 8+0(a6),-(sp) move.l (sp),-(sp) move.l (sp)+,a0 add #1,a0 move.l a0,-(sp) move.l (sp)+,8+0(a6) move.l (sp)+,a0 clr d0 move.b (a0),d0 move.w d0,-(sp) move.w (sp),-(sp) move.w (sp)+,-2(a6) move.w #37,-(sp) move.w (sp)+,d0 cmp (sp)+,d0 beq I005 move.w -2(a6),-(sp) tst (sp)+ beq I002 move.w -2(a6),-(sp) jsr putchar add #2,sp jmp I004 I005: move.l 8+0(a6),-(sp) move.l (sp),-(sp) move.l (sp)+,a0 add #1,a0 move.l a0,-(sp) move.l (sp)+,8+0(a6) move.l (sp)+,a0 clr d0 move.b (a0),d0 move.w d0,-(sp) move.w (sp)+,-2(a6) move.w -2(a6),-(sp) move.w #100,-(sp) move.w (sp)+,d0 cmp (sp)+,d0 beq I008 move.w -2(a6),-(sp) move.w #117,-(sp) move.w (sp)+,d0 cmp (sp)+,d0 bne I007 I008: move.l -6(a6),-(sp) move.l (sp)+,a0 add #2,a0 move.l a0,-(sp) move.l (sp),-(sp) move.l (sp)+,-6(a6) move.l (sp)+,a0 move.w -2(a0),-(sp) move.w (sp)+,-8(a6) move.w -2(a6),-(sp) move.w #100,-(sp) move.w (sp)+,d0 cmp (sp)+,d0 bne I009 move.w -8(a6),-(sp) tst (sp)+ bge I009 move.w #0,-(sp) move.w -8(a6),-(sp) move.w (sp)+,d0 move.w (sp)+,d1 sub d0,d1 move.w d1,-(sp) move.w (sp)+,-8(a6) move.w #45,-(sp) jsr putchar add #2,sp I009: move.w -8(a6),-(sp) jsr printn add #2,sp jmp I004 I007: move.w -2(a6),-(sp) move.w #115,-(sp) move.w (sp)+,d0 cmp (sp)+,d0 bne I004 move.l -6(a6),-(sp) move.l (sp)+,a0 add #4,a0 move.l a0,-(sp) move.l (sp),-(sp) move.l (sp)+,-6(a6) move.l (sp)+,a0 move.l -4(a0),-(sp) move.l (sp)+,-12(a6) I00c: move.l -12(a6),-(sp) move.l (sp),-(sp) move.l (sp)+,a0 add #1,a0 move.l a0,-(sp) move.l (sp)+,-12(a6) move.l (sp)+,a0 clr d0 move.b (a0),d0 move.w d0,-(sp) move.w (sp),-(sp) move.w (sp)+,-2(a6) tst (sp)+ beq I004 move.w -2(a6),-(sp) jsr putchar add #2,sp jmp I00c I002: unlk a6 rts printn: link a6,#-2 .sect .data _15: .data2 12337 .data2 12851 .data2 13365 .data2 13879 .data2 14393 .data2 0 .sect .text move.w 8+0(a6),-(sp) move.w #10,-(sp) move.w (sp)+,d0 clr.l d1 move.w (sp)+,d1 divu d0,d1 move.w d1,-(sp) move.w (sp),-(sp) move.w (sp)+,-2(a6) tst (sp)+ beq I013 move.w -2(a6),-(sp) jsr printn add #2,sp I013: pea _15 move.w 8+0(a6),-(sp) move.w #10,-(sp) move.w (sp)+,d0 clr.l d1 move.w (sp)+,d1 divu d0,d1 swap d1 move.w d1,-(sp) move.w (sp)+,d0 ext.l d0 add.l (sp)+,d0 move.l d0,-(sp) move.l (sp)+,a0 clr d0 move.b (a0),d0 move.w d0,-(sp) jsr putchar add #2,sp unlk a6 rts .sect .data fmt: .asciz "%s, line %d: " unknwn: .asciz "unknown file" .align 2