.TITLE DISPLA ; * * * ID-2000 OR 5000 SOFTWARE MODULE * * * ; PROVIDES A FORTRAN-CALLABLE INTERFACE TO THE ID-2000/5000 DEVICE HANDLER. ; CALLING CONVENTIONS: ; (1) ANNOTATION OR INTENSITY TRANSFORMATION TABLE TRANSFERS ; CALL DISPLA (IXADDR, IBUFFR, IWDCNT) ; IXADDR = X-ADDRESS ; IBUFFR = BUFFER ADDRESS ; IWDCNT = NUMBER OF WORDS TO TRANSFER: + TO WRITE, - TO READ ; (2) IMAGE REFRESH MEMORY TRANSFERS ; CALL DISPLA (IXADDR, IBUFFR, IWDCNT, ICSREG, IBPMSK, IYADDR) ; IXADDR, IBUFFR, IWDCNT IDENTICAL TO (1) EXCEPT THAT IWDCNT = 0 ; HAS THE SPECIAL FUNCTION OF LOADING THE ID-2000/5000 CONTROL- ; STATUS REGISTER WITH THE VALUE OF ICSREG WITHOUT ANY ; FURTHER ACTION. ; ICSREG = DESIRED CONTROL/STATUS CONTENTS ; (GO BIT (0) NOT REQUIRED - READBACK CODE NOT REQUIRED FOR READ) ; IBPMSK = BIT-PLANE MASK ; IYADDR = Y-ADDRESS ; NOTE: FOR TRANSFERS OF TYPE 2, THREE EXTRA WORDS MUST BE ALLOCATED ; IN FRONT OF THE BUFFER FOR THE Y-ADDRESS, BIT-PLANE MASK, ; AND CONTROL/STATUS RESPECTIVELY. .PAGE ; ALL NEW CODE: 13 MAY 77 ; MODIFICATIONS TO: 27 JULY 77 ; COMMENTS CLARIFIED: 13 NOVEMBER 78 ; PROGRAMMER: KEN DINWIDDIE .MCALL ..V2..,.REGDEF,.FETCH,.LOOKUP,.WRITW,.READW,.EXIT DZSIZE =420 ; SIZE OF DZ HANDLER FOR ID-2000 DISPLAY (WORDS) .GLOBL DISPLA ..V2.. .REGDEF .PAGE DISPLA: MOV (R5)+,R0 ; PICK UP ARGUMENT COUNT CLR IOMODE ; SET WRITE MODE MOV @(R5)+,R4 ; PICK UP X-ADDRESS MOV (R5)+,R2 ; BUFFER ADDRESS TO R2 MOV @(R5)+,R3 ; WORD COUNT TO R3 BPL ARGCHK ; IF WRITE OPERATION CONFIRMED DEC IOMODE ; FLAG A READ OPEARATION COM R3 INC R3 ; AND MAKE WORD COUNT POSITIVE ARGCHK: CMP #3,R0 ; ANNOTATION OR ITT TRANSFER ? BEQ SETUP ; IF SO, GO SET UP HANDLER MOV @(R5)+,-(R2) ; SET UP CONTROL/STATUS @ BUFFER - 2 MOV @(R5)+,-(R2) ; BIT-PLANE MASK @ BUFFER - 4 MOV @(R5)+,-(R2) ; AND Y-ADDRESS @ BUFFER - 6 SETUP: TST DZRES ; DZ HANDLER ALREADY RESIDENT ? BNE TSTMOD ; YES, PROCEED .FETCH #DZSPAC,#DZNAME ; FETCH THE DZ HANDLER .LOOKUP #AREA,#16,#DZNAME ; HOOK TO CHANNEL 14 DEC DZRES ; AND SHOW HANDLER RESIDENT TSTMOD: TST IOMODE ; DETERMINE OPERATION TYPE BNE READ ; IF READ, GO DO IT .WRITW #AREA,#16,R2,R3,R4 ; ISSUE WRITE REQUEST TO DISPLAY RTS PC READ: .READW #AREA,#16,R2,R3,R4 ; ISSUE READ REQUEST TO DISPLAY BCS QUIT ; READ ERROR, GIVE UP RTS PC QUIT: .EXIT ; SO SORRY, GIVE UP. .PAGE IOMODE: .WORD 0 ; I/O MODE FLAG DZRES: .WORD 0 ; HANDLER RESIDENT FLAG DZNAME: .RAD50 /DZ / ; HANDLER NAME AREA: .BLKW 6 DZSPAC: .BLKW DZSIZE ; SPACE FOR HANDLER LOAD .END