	.TITLE	RDIMGE


;	* * * IEC-2212 SOFTWARE MODULE * * *


;	REFRESHES AN IEC-2212 IMAGE ENHANCEMENT CONSOLE WITH THE IMAGE
;	FILE "IMAGE.PIC" ON FLOPPY DISK IN DRIVE 1 (DX1).

;	ALL NEW CODE: 16 AUGUST 77

;	PROGRAMMER: KEN DINWIDDIE

	.MCALL	..V2..,.REGDEF,.LOOKUP,.READW,.CLOSE

	..V2..

	.REGDEF

	.GLOBL	RFRESH,NEWPIX

;	ID-2000 REGISTER DEFINITIONS:

	XREG	= 166000
	YREG	= 166002
	BPMR	= 166004
	CSR	= 166006
	DREG	= 166010
	.PAGE
	.SBTTL	SINGLE-BUFFERED READ LOOP


NEWPIX:
RFRESH:	.LOOKUP	#AREA0,#0,#IMFILE
	CLR	BLK	; SET TO BEGINNING OF FILE
	MOV	#377,R1	; START AT TOP OF SCREEN
	MOV	#7777,@#BPMR	; BIT PLANE MASK ALL ONE'S
	MOV	#DREG,R2	; DATA REGISTER ADDRESS TO R2
	TST	(R5)+		; POINT TO BUFFER ADDRESS
	MOV	(R5)+,BUFF1	; PICK UP BUFFER POINTER
	MOV	@(R5)+,R3	; PICK UP CONTROL/STATUS CODE
	BIS	#53,R3		; AND FOLD IN RASTER WRITE CLEARING V-BITS
FILLB:	.READW	#AREA0,#0,BUFF1,#4096.,BLK	; READ A BUFFER FULL
	ADD	#20,BLK	; ADVANCE TO NEXT BLOCK
	MOV	BUFF1,R4	; POINT TO BUFFER #1
	JSR	PC,SHOW	; DISPLAY THIS BLOCK
	BR	FILLB
	.PAGE
	.SBTTL	64-LINE INTERLACED IMAGE DISPLAY SUBROUTINE


SHOW:	MOV	#20,R5	; INITIALIZE BLOCK COUNTER
SHOW1:	MOV	R1,@#YREG	; SET RASTER NUMBER
	CLR	@#XREG		; POINT TO START OF LINE BUFFER
	.REPT	400
	MOV	(R4)+,(R2)	; FILL LINE BUFFER
	.ENDR
	MOV	R3,@#CSR	; DISPLAY DATA LINE
WAIT:	TSTB	@#CSR
	BPL	WAIT		; AWAIT READY BIT
	TST	R1	; LAST LINE TO BE DISPLAYED ?
	BEQ	DONE	; FINISH UP IF SO
	SUB	#100,R1	; MOVE DOWN 64 LINES
	BGE	SHOW2	; SKIP BIASING STEP IF STILL VIEWABLE
	ADD	#377,R1	; BACK NEAR TOP OF IMAGE IF WE'VE DROPPED OFF
SHOW2:	DEC	R5	; ACCOUNT FOR DISPLAYED RASTER
	BEQ	SHOW3	; QUIT IF DONE WITH THIS BLOCK
	JMP	SHOW1	; OR GO SHOW ANOTHER IF MORE THIS BUFFER
SHOW3:	RTS	PC

DONE:	.CLOSE	#0	; CLOSE THE DISK CHANNEL
	TST	(SP)+	; BUMP THE STACK POINTER UP ONE
	RTS	PC 	; AND RETURN TO THE CALLING PROGRAM
	.PAGE
	.SBTTL	DATA BUFFERS, POINTERS, CONSTANTS, ETC.


BLK:	.WORD	0	; BLOCK COUNTER FOR DISK ACCESS
IMFILE:	.RAD50	/DX1IMAGE PIC/	; IMAGE INPUT FILE SPECIFICATION
AREA0:	.BLKW	6
BUFF1:	.WORD	0	; SPACE FOR BUFFER #1 POINTER
	.END
                                                                                                                                                                                                                                                                                                                                                                                                           