.TITLE WRID5M ; * * * ID-5500 SOFTWARE MODULE * * * ; PERFORMS A DOUBLE-BUFFERED READ OF A SELECTED INTERLEAVED 512*512*8 BIT ; IMAGE FILE, THEN WRITES IT TO AN ID-5500 IMAGE DISPLAY SYSTEM. ; THE SINGLE CALLING ARGUMENT PASSES THE POINTER TO THE DATA BUFFERS. ; ALL NEW CODE: 2 MAY 78 ; MODIFIED TO INCLUDE SUPPLIED CSR BITS: 4 NOVEMBER 78 ; PROGRAMMER: KEN DINWIDDIE .MCALL ..V2..,.REGDEF,.CSISPC,.LOOKUP,.QSET,.READ,.WAIT,.CLOSE ..V2.. .REGDEF .GLOBL WRID5M ; ID-5500 REGISTER DEFINITIONS: XREG = 166000 YREG = 166002 BPMR = 166004 CSR = 166006 DREG = 166010 .PAGE .SBTTL DOUBLE-BUFFERED READ LOOP WRID5M: .QSET #QUEUE,#3 ; ADD 3 ELEMENTS TO I/O QUEUE .CSISPC #IMFILE,#DEFEXT ; PICK UP INPUT FILE NAME TST (SP)+ ; NO SWITCHES - BUMP UP STACK POINTER .LOOKUP #AREA,#0,#IMFIL1 CLR BLK ; SET TO FILE START TST (R5)+ ; POINT TO BUFFER ADDRESS MOV (R5)+,BUFF1 ; PICK UP BUFFER POINTER MOV @(R5)+,R3 ; PICK UP DESIRED CSR BITS BIS #53,R3 ; OR IN RASTER WRITE WITH GO BIT MOV BUFF1,BUFF2 ADD #4096.,BUFF2 ; OFFSET TO SECOND BUFFER MOV #377,@#BPMR ; ENABLE LOWER 8 BITS OF BIT PLANE MASK MOV #777,R2 ; START AT TOP OF MEMORY (IES) .READ #AREA,#0,BUFF1,#2048.,BLK ; READ A BUFFER FULL FILLB: .WAIT #0 ; WAIT FOR READ COMPLETION ADD #10,BLK ; ADVANCE TO NEXT BLOCK .READ #AREA,#0,BUFF2,#2048.,BLK ; READ A BUFFER FULL MOV BUFF1,R1 ; POINT TO BUFFER # 1 JSR PC,SHOW ; DISPLAY BUFFER # 1 .WAIT #0 ; WAIT FOR READ COMPLETION ADD #10,BLK ; ADVANCE TO NEXT BLOCK .READ #AREA,#0,BUFF1,#2048.,BLK ; READ A BUFFER FULL MOV BUFF2,R1 ; POINT TO BUFFER # 2 JSR PC,SHOW ; DISPLAY BUFFER # 2 BR FILLB .PAGE .SBTTL WRITE 8 INTERLEAVED LINES TO ID-5500 MEMORY SHOW: MOV #10,R5 ; INITIALIZE BLOCK COUNTER MOV #DREG,R0 ; INITIALIZE FOR SINGLE-INSTRUCTION OPERATION SHOW1: CLR @#XREG ; INITIALIZE X REGISTER TO LINE BUFFER START .REPT 512. MOVB (R1)+,(R0) ; FILL LINE BUFFER FROM DATA BUFFER .ENDR MOV R2,@#YREG ; SET ROW NUMBER MOV R3,@#CSR ; ENABLE RASTER TRANSFER WAIT: TSTB @#CSR ; WAIT FOR READY TO SHOW BPL WAIT TST R2 ; LAST ROW TO SHOW ? BEQ DONE ; QUIT IF SO SUB #200,R2 ; DROP DOWN 128 ROWS BPL SHOW3 ; SKIP BIASING STEP IF STILL POSITIVE ADD #777,R2 ; MOVE BACK NEAR IMAGE TOP IF BELOW BOTTOM SHOW3: DEC R5 ; ACCOUNT FOR THIS ROW BEQ SHOW5 ; GO RETURN IF EIGHT LINES OUT JMP SHOW1 ; GO GET THE NEXT LINE IF MORE TO DO SHOW5: RTS PC DONE: TST (SP)+ ; BUMP STACK POINTER UP ONE .CLOSE #0 ; CLOSE DISK FILE RTS PC ; AND RETURN TO CALLING PROGRAM .PAGE .SBTTL BUFFERS, POINTERS, VARIABLES, ETC. BLK: .WORD 0 ; DISK TRANSFER BLOCK NUMBER AREA: .BLKW 6 ; SPACE FOR REQUEST BLOCK BUFF1: .WORD 0 ; POINTER TO BUFFER # 1 BUFF2: .WORD 0 ; POINTER TO BUFFER # 2 DEFEXT: .RAD50 /PIC/ ; DEFAULT IMAGE FILE EXTENSION .WORD 0,0,0 IMFILE: .BLKW 17 ; SPACE FOR OUTPUT FILE SPECS IMFIL1: .BLKW 30 ; SPACE FOR INPUT FILE SPECIFICATION QUEUE: .BLKW 7*3 ; SPACE FOR 3 MORE I/O QUEUE ELEMENTS .END