.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