.TITLE RFRESH ; * * * ID-200 SERIES SOFTWARE MODULE * * * ; REFRESH ENTIRE IMAGE ON AN ID-2000 SERIES IMAGE DISPLAY SYSTEM ; FROM AN INTERLEAVED IMAGE FILE ON THE SPECIFIED DEVICE. ; ALL NEW CODE: 21 OCOTBER 77 ; PROGRAMMER: KEN DINWIDDIE .MCALL ..V2..,.REGDEF,.LOOKUP .MCALL .READ,.WRITW,.CLOSE,.QSET,.CSISPC,.WAIT ..V2.. .REGDEF .GLOBL RFRESH,NEWPIX .PAGE .SBTTL DOUBLE-BUFFERED IMAGE FILE READ LOOP NEWPIX: .QSET #QUEUE,#3 ; ADD THREE ELEMENTS TO I/O QUEUE .CSISPC #IMFILE,#DEFEXT ; PICK UP INPUT FILE SPECIFICATION TST (SP)+ ; BUMP STACK POINTER UP ONE - NO SWITCH RFRESH: .LOOKUP #AREA0,#0,#IMFIL1 CLR BLK ; SET TO BEGINNING OF FILE MOV #377,R1 ; START AT TOP OF IMAGE VIEWING WINDOW MOV #7777,R2 ; SET ALL BIT PLANE MASK BITS TST (R5)+ ; POINT TO BUFFER ADDRESS MOV (R5)+,R4 ; PICK UP BUFFER POINTER ADD #6,R4 ; BUMP UP THREE WORD LOCATIONS MOV R4,BUFF1 ; AND SAVE FOR FUTURE REFERENCE ADD #4102.,R4 ; OFFSET TO SECOND BUFFER MOV R4,BUFF2 ; AND SAVE IT FOR FUTURE REFERENCE MOV @(R5)+,R3 ; PICK UP CONTROL/STATUS CODE BIS #52,R3 ; AND FOLD IN RASTER WRITE CLEARING V-BITS .READ #AREA0,#0,BUFF1,#2048.,BLK ; READ A BUFFER FULL FILLB: .WAIT #0 ; WAIT FOR COMPLETION OF READ ADD #10,BLK ; ADVANCE TO NEXT BLOCK .READ #AREA0,#0,BUFF2,#2048.,BLK ; READ A BUFFER FULL MOV BUFF1,R4 ; POINT TO BUFFER #1 JSR PC,SHOW ; DISPLAY THIS BLOCK .WAIT #0 ; WAIT FOR COMPLETION OF PREVIOS READ REQUEST ADD #10,BLK ; ADVANCE TO NEXT BLOCK .READ #AREA0,#0,BUFF1,#2048.,BLK ; READ NEXT BUFFER FULL MOV BUFF2,R4 ; POINT TO BUFFER #2 JSR PC,SHOW ; AND DISPLAY THAT BLOCK BR FILLB .PAGE .SBTTL DISPLAY EIGHT LINES OF INTERLEAVED IMAGE DATA SHOW: MOV #10,R5 ; INITIALIZE BLOCK COUNTER SHOW1: MOV R3,-(R4) ; SET UP CONTROL/STATUS CODE, MOV R2,-(R4) ; BIT-PLANE MASK, MOV R1,-(R4) ; AND RASTER NUMBER .WRITW #AREA1,#16,R4,#256.,#0 ; AND SEND TO DISPLAY SYSTEM 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: ADD #518.,R4 ; ADVANCE BUFFER POINTER TO NEXT RECORD DEC R5 ; ACCOUNT FOR DISPLAYED RASTER BNE SHOW1 ; AND GO SHOW ANOTHER IF MORE IN THIS BLOCK RTS PC DONE: .CLOSE #0 ; CLOSE THE DISK CHANNEL TST (SP)+ ; BUMP THE STACK POINTER UP ONE RTS PC .PAGE .SBTTL POINTERS,BUFFERS,CONSTANTS,ETC. BLK: .WORD 0 ; BLOCK COUNTER FOR DISK ACCESS IMFILE: .BLKW 17 ; SPACE FOR OUTPUT FILE SPECIFICATION IMFIL1: .BLKW 30 ; SPACE FOR INPUT FILE SPECIFICATION DEFEXT: .RAD50 /PIC/ ; DEFAULT IMAGE FILE SPECIFICATION .WORD 0,0,0 AREA0: .BLKW 6 AREA1: .BLKW 6 QUEUE: .BLKW 7*3 ; SPACE FOR EXTRA I/O QUEUE ELEMENTS BUFF1: .BLKW 1 ; SPACE FOR BUFFER #1 POINTER BUFF2: .BLKW 1 ; SPACE FOR BUFFER #2 POINTER .END