ORG $0900 LAB4 LEA.L IMAGE,A0 ; REMOVE THIS LINE BEFORE LAB BSR DISPLAY ; REMOVE THIS LINE BEFORE LAB BSR NEG LEA.L IMNEG,A0 ; REMOVE THIS LINE BEFORE LAB BSR DISPLAY ; REMOVE THIS LINE BEFORE LAB BSR LSR LEA.L IMLSR,A0 ; REMOVE THIS LINE BEFORE LAB BSR DISPLAY ; REMOVE THIS LINE BEFORE LAB BSR ROT LEA.L IMROT,A0 ; REMOVE THIS LINE BEFORE LAB BSR DISPLAY ; REMOVE THIS LINE BEFORE LAB JMP STOP NEG ... ... RTS LSR ... ... RTS ROT ... ... RTS ORG $0C00 IMAGE DC.W $0000,$0000,$3FE0,$3FF0 DC.W $3878,$3838,$3838,$3870 DC.W $3FE0,$3FE0,$3870,$3870 DC.W $3838,$3838,$0000,$0000 DC.L $C0C0C0C0 ORG $0C40 IMNEG DS.W 16 DC.L $C4C4C4C4 ORG $0C80 IMLSR DS.W 16 DC.L $C8C8C8C8 ORG $0CC0 IMROT DS.W 16 DC.L $CCCCCCCC STOP TRAP #9 DISPLAY MOVEM.L D1-D4/A3,-(A7) ; REMOVE FROM HERE TO END BEFORE LAB CLR.W D2 ; count word offsets from 0 to 32 LEA.L STRING,A3 ; use the space called STRING PASSD MOVE.W (A0,D2.W),D3 ; get next word MOVE.W #15,D1 ; count down from 15 to 0 LOOPD MOVE.B #'.',D4 ; dot for a 0 (unless replaced) LSL.W #1,D3 ; shift out the bit on the left BCC DOT ; output the dot if its a zero MOVE.B #'1',D4 ; replace . with 1 for a 1 DOT MOVE.B D4,(A3)+ SUBI.W #1,D1 ; advance right to next bit BGE LOOPD MOVE.B #$0A,(A3)+ ; newline at end of line ADDI.W #2,D2 ; advance 2 bytes to next word CMP.W #32,D2 ; size of image is 32 bytes BLT PASSD ; display next line if not end MOVE.B #$0A,(A3)+ ; newline at end LEA.L STRING,A3 ; point A3 to image string TRAP #3 ; call emulator trap to display MOVEM.L (A7)+,D1-D4/A3 RTS ORG $4000 STRING DS.B 300 ; REMOVE FROM DISPLAY TO HERE BEFORE LAB END