GO TO 1280 C C C SET WINDOW C 1240 ACCEPT "DISPLAY WINDOW ", IWIDELTA IW = -IDELTA/2 + IW TO TO 1280 C C NEW ADDITION FOR TED--USE SIDE KEYBOARD 1250 CALL INPUT(I) C C INPUT WILL SET 1 TO 0 IF IT IS NOT 0-6;ELSE IT WILL BUMP IT BY 1 IF(I.NE.0) GO TO 28 TYPE "INVALID INPUT" GO TO 1250 C 28 GO TO (30,2,35,1240,200,31,32,33,34), I C C 0 INPUT, CHANGE THE VALUES 30 TYPE "THE VALUE TO CHANGE THE WINDOW WIDTH IS", WIDTH ACCEPT "CHANGE IT TO ", WIDTH TYPE "THE VALUE TO MOVE THE WINDOW IS", CENTER ACCEPT "CHANGE IT TO ",CENTER GO TO 1250 C C INPUT WAS 1--MAKE WINDOW SMALLER 31 IDEL TA=IDELTA-WIDTH IW = IW+WIDTH/2 GO TO 1280 C C INPUT WAS 2--MAKE WINDOW WIDER 32 IDELTA=IDELTA+WIDTH IW = IW-WIDTH/2 GO TO 1280 C C INPUT WAS 3--RAISE THE WINDOW 33 IW = IW+CENTER GO TO 1280 C C INPUT WAS 4--LOWER THE WINDOW 34 IW = IW - CENTER GO TO 1280 C C C INPUT WAS 6--ERASE 35 CALL DERS GO TO 1250 C COMPUTE TRANSFORM ARRAY VALUES C 1280 IF (IW.LE.-1000.OR.IW.GE.1000) GO TO 1250 JW=IW+IDELTA LENGTH = IABS(IDELTA) +1 IF(LENGTH .GT.TDIM) GO TO 1250 RANGE = .EQ. 0,0) GO TO 1250 RNG = 127./RANGE IF (JW.LT.IW) GO TO 1310 DO 1300 I = 1.LENGTH T(1) = FLOAT (1-1)*RNG 1388 CONTINUE GO TO 1350 1310 LI = LENGTH+1 DO 1320 1 = 1.LENGTH T(L 1-1) = FLOAT(1-1)* RNG 1320 CONTINUE C C SET UP FOR LOOP C 1350 MN = MIN0 (IW, JW) MX = MAX0 (IW, JW) CALL DSPLY (MN, MX, T, NSLCE) C C PUT IN DESCRIPTIVE INFORMATION C CALL DAN ('SYNTEX SYS68", 12,0,0,24) CALL DAN (IHEAD (45), 9,0,0,0) CALL DAN (' ',1,0,63,0) CALL DAN (IHEAD (25),20,0,70,0) CALL DAN (' ',1,0,220,0) CALL DAN (IHEAD (45),1,287,0) CALL DAN (IHEND (44),3,0,294,0) CALL DAN ('SLICE OF ', 14,0,0,12) CALL DAN (IHEAD(7),2,0,42,12) CALL DAN (IHEAD(51),2,1,84,12) CALL DAN (' / / ',8,0,0,232) CALL DAN (IHEAD (1),2,0,0,232) CALL DAN (IHEAD (2),2,0,21,232) CALL DAN (IHEAD (3),2,0,42,232) CALL DAN ('CM;KY',12,0,231,232) CALL DAN (IHEAD (52),3,1,252,232) CALL DAN (IHEAD (54),3,0,280,232) CALL DAN (IHEAD (4),2,0,0,244) CALL DAN (': ',4,0,14,244) CALL DAN (IHEAD (5),2,0,21,244) CALL DAN (IHEAD (9),40,0,42,244) C C DISPLAY THE GRAY SCALE IX = 279 IWD x 12 IH = 12 DO 1680 J - 1.16 A = 16-J IHTEN = A*B IY = (J-1) * 12 + 32 CALL DSQOINJEN, IX, IY, KWD, IH) ILVL = (IDELTA) * A/15.+1W CALL CNVBA (ILVL, 1WIN(1)) CALL DAN(IWIN(1),4,0,291,IY) 1680 CONTINUE GO TO 1250 C C RDOS ERRORS COME HERE 100 TYPE "RDOS EFFOR", IER STOP C C DPERATOR INPUT END 200 CALL RESET STOP END 0001 DSPLY 01 DSPLY.SR 02 FORTRAN CALLABLE ROUTINE TO DISPLAY THE DRTA IN C4ARRAY.SC TO THE 03 RAMTEK B SYSTEM USING MULTITASKING IN ASSEMBLY LANGUAGE 04 05 CALLING SEOUENCE 06 CALL DSPLY(MR,MX,T,NSLCE) 07 MN = MINUMUM VALUE 08 MX = MAXIMUM VALUE 09 T = TRAHSFDRM ARRAY 10 NSLCE = SLICE NUMBER 11 12 .TIN DSPLY 13 .ENT DSPLY 14 .EXTD .@PYL,. FRET 15 .EXTN DS4 16 .EXTN .TASK,. XMIW,. XMT,.REC,.KILL 17 .NREL 18 19 20 ;FORTRAN STACK DISPLACEMENTS 21 177611 MN = - 167 22 177612 MN = - 166 23 177613 T =MX + 1 24 177614 NSLCE = T + 1 25 000004 FS. = NSLCE - MN + 1 26 27 00000' 000004 FS. ;FORTRAN STACK FRAME SIZE 28 00001' 000001SDSPLY : JSR 0.CPYL ;PUSH THE STACK 29 00002' 030584 LDA 2,BFPT ;BUFFER FOR THE DATA TO D84 30 00003' 021613 LDA 0,T,3 ;GET TRANSFORM ARRAY ADDRESS 31 00004' 041001 STA 0,1,2 ;INTO SECOND LOCATION 32 00005' 023611 LDA 0,@MM,3 ;GET MINUMU@@ VALUE 33 00006' 041002 STA 0,2,2 34 00007' 023612 LDA 0,@MX,3 ;MAXIMUM VALUE 35 00010' 041003 STA 0,3,2 ;INTO THE BUFFER 36 00011' 023614 LDA 0,@NSLCE,3 ;SLICE NUM@ER 37 00012' 100400 NEG 0,0 ;SUBTRACT 1 38 00013' 100000 COM 0,0 39 00014' 105300 MOVS 0,1 ;;*256 IN RC1 40 00015' 103120 ADDZL 0,0 ;*4 IN AC0 41 00016' 103100 ADDL 0,0 ;*16 IN AC0 42 00017' 123000 ADD 1,0 ;*272 IN AC0 43 00020' 040467 STA A,STRT ;START OF THE SLICE 44 00021' 102400 SETUP : SUB 0.0 45 00022' 040470 STA 0.DNE ;CLEAR THE TASK DONE SWITCH 46 00023' 040459 STA 0,BLK ;SET THE SUBBLOCK * TO 0 47 00024' 041005 STA 0,5,2 ;ZERD OUT Y START 48 00025' 020467 LDA 0,M32 49 00026' 041004 STA 0,4,2 ;STARTING X TO -32 50 00027' 028466 LDA 0,C16 51 00030' 040455 STA 0,CNT ;SET LOOP COUNTER TO 16 52 ;START THE TASK WHICH CALLS D@4 53 00031' 102520 SUBZL 0.0 ;PRIORITY OF 1 54 00032' 024467 LDR 1.SDG4 ;STARTING ADDRESS 55 00033' 077777 .TASK 56 00034' 004446 JSR ERR 57 00035' 034465 LDA 3,DTPT ;POINTER TO THE BUFFER POINTERS 58 00036' 021400 LDA 0.0,3 ;GET THE NEXT POINTER 59 00037' 040463 STA 0,DTPT ;SAVE IT 0002 DSPLY 01 00048'021401 LDA B,1,3 ;;GET THE ADDRESS OF THE DATA BLOCK 02 00041'030462 LDA 2,OFSTB ;GET OFFSET TASLE ADDRESS 03 00042'024446 LDA 1,BLK ;BLOCK POINTER 04 00043'133000 ADD 1,2 ;FORM AN ENTRY 05 00044'025000 LDA 1,0.2 ;CONTENTS 06 00045'030442 LDA 2,STRT ;START OF THE SLICE 07 00046'147000 ADD 2,1 ;ADD THEM--NOW HAVE LOGICAL BLOCK NUMBER 08 00047'030456 LDA 2.LFT16 ;16 IN THE LEFT BYTE 09 00050'006817 .SYSTM 10 00051'005488 .RDB 0 ;READ THE DATA 11 00052'004430 JSR ERR 12 @PDRTE THE X AND Y ADDRESSES 13 00253'230433 LDR 2,BFPT ;RETREIVE POINTER TO THE DATA 14 00054'041000 STA 0,0,2 ;STURE THE DATA POINTER 15 00055'021004 LDA 0,4,2 ;GET THE X ADDRESS 16 00056'024441 LDA 1,064 ;THCREMENT IT 8Y 64 17 00057'123000 ADD 1,0 18 00000'034440 LDA 3,C288 ;SEE IF IT IS FAR RIGHT 19 00061'116414 SUB* 0,3,SZR ;IF SO, IT WILL BE 288.