```;; Plot Image. Courtesy of CPM User.

org &4000

ld a,1
call &bc0e				;; Set Screen Mode 1

ld hl,data_colour			;; Address of Data Colour
.loop
ld a,(hl)				;; Put Contents of HL into A
call do_colour

ld de,(xpos)				;; XPOS data into DE
ld hl,(ypos)				;; YPOS data into HL
call &bbea				;; GRA ABSOLUTE PLOT

ld hl,(xpos)				;; Obtain Contents of XPOS
inc hl					;; Is 16bit Value so Increment
inc hl					;; Twice
ld (xpos),hl				;; Place next value into XPOS

ld a,(fcount)				;; First Counter Position into A
inc a					;; Increment this
ld (fcount),a				;; Put New Value into First Count Position
ld b,a					;; Put this value into B

ld a,(xlcount)				;; Place First Counter Marker into A

cp b					;; Has value of B reached A value
jr nz,loop				;; If No Loop back, otherwise continue

ld a,(fcount)				;; At this stage fcount equals 8
xor a					;; This will make it 0 again
ld (fcount),a				;; And put that value into fcount

ld hl,(ypos)				;; YPOS of data can now be Incremented
inc hl					;; Again 16bit Value means Incrementing
inc hl					;; it Twice
ld (ypos),hl				;; And put that value into YPOS.

ld a,(xpos)				;; Value of XPOS needs to return back to where it was.
sub 16					;; Subtracting 16 will resolve this.
ld (xpos),a				;; New Value goes into XPOS.

ld a,(scount)				;; Second counter goes into A
inc a					;; Increase it.
ld (scount),a				;; Place back into Second Counter
ld b,a					;; Put value of Second counter into B

ld a,(ylcount)				;; Place Y-counting position into A

cp b					;; Compare A to value of B
jr nz,loop				;; If reached exit, otherwise return

ld a,0					;; \
ld hl,fcount				;; \\
ld (hl),a				;; Returns loop values back to 0
ld hl,scount				;; //
ld (hl),a				;; /

ld hl,100				;; Return the value of ypos
ld (ypos),hl				;; back to it's original place.

ret					;; Program exits here.

.do_colour
call &bbde				;; GRA SET PEN - A = Pen Colour
inc hl					;; Increment it by 1

.fcount defb 0
.scount defb 0
.xlcount
defb 8					;; Number of times to loop across.
.ylcount
defb 8					;; Number of times to loop down
.xpos	defw 100				;; Left Position the image
.ypos	defw 100				;; Bottom Position of the image.
.data_colour
defb 1,1,0,1,0,1,1,0
defb 0,3,3,3,3,3,0,0
defb 0,0,2,2,2,0,0,0
defb 0,0,2,2,2,0,0,0
defb 0,0,2,2,2,0,0,0
defb 0,0,2,2,2,0,0,0
defb 0,0,2,2,2,0,0,0
defb 0,0,0,1,0,0,0,0