10 START; D A F T VERSION 6.05 15 20 ;COPYRIGHT 1973 25 ;DIGITAL EQUIPMENT CORPORATION 30 ;MAYNARD, MASS. 01754 35 ; 40 ;THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE 45 ;ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION 50 ;OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT 55 ;AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC. 60 ; 65 ;THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT 70 ;NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT 75 ;BY DIGITAL EQUIPMENT CORPORATION. 80 ; 85 ;DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF 90 ;ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. 95 ; 100 ;COMPILATION INSTRUCTIONS: 105 ; .RUN COMP,DAFTA,DAFTB 110 ; .SAVE DAFT 115 ; .RUN DAFT 120 ; 125 RECORD 130 TRICK, 2A1 135 RECORD INREC 140 I, 510A1 145 RECORD 150 TRICK2, 2A1 155 RECORD COMMAND 160 COM, 128A1 165 RECORD 170 QUOTE, A1 175 , A1,'?' ;OVERFLOW PROTECTION 180 RECORD 185 TRICK4, A1 190 RECORD TR4 195 , A1 200 RECORD 205 NAME, A6,'/NONE/' 210 UNIT, D2,00 215 LEFT, D3 220 RIGHT, D3 225 NUMBR, D15 230 LFT, D3 235 RT, D3 240 RECNO, D5 245 RECORD 250 TRICK3, A1,'*' 255 RECORD 260 D3, D3 265 RECORD,X 270 HUNS, D1 275 TENS, D1 280 UNITS, D1 285 RECORD,X 290 , D1 295 D2, D2 300 RECORD INFO 305 , A7,'RECORD ' 310 RECNUM, D6 315 , A9,' OF FILE ' 320 RECNAM, A6,'/NONE/' 325 , A18,', RECORD LENGTH=' 330 RECLEN, D3,510 335 , A11,' CHARACTERS' 340 RECORD 345 K, D2 350 KBD, D1,7 355 TTY, D1,8 360 LPT, D1,6 365 LENG, D3,001 370 LINCOUNT,D2 375 LETTR, A1 380 CHAR, A1 385 INFLG, D1 ;1 MEANS INPUT RECORD HAS BEEN INITED 390 OUTFLG, D1 ;1 MEANS OUTPUT FILE IS OPEN 395 OUTKNT, D6 ;NO. OF RECORDS OUTPUT 400 GRID, D1 ;1 MEANS DISPLAY GRID 405 KEYLOW, D3,001 ;CURRENT LOWER LIMIT OF KEY 410 KEYHI, D3,510 ;CURRENT UPPER LIMIT OF KEY 415 KYHI, D3,509 ;RESTRICTED UPPER LIMIT 420 FLAG, D1 ;1 MEANS NO DIGITS FOUND 425 IN, D1,1 430 OUT, D1,2 435 SYS, D1,3 440 GRIDLEN,D3,050 445 SCAN, D3,001 450 LOW, D3,001 455 HIGH, D3,130 460 DIF, D3 465 UPFLAG, D1 ;1 MEANS RECORD IS BEING UPDATE 470 SYSFLG, D1 475 DEVICE, D2,02 480 OLDLEN, D3,-001 ;OLD RECORD LENGTH 485 PLUS, D1 ;1 MEANS WRITE BEFORE EACH READ 490 RECORD 495 DATA, A100 500 RECORD,X 505 NDATA, D100 510 RECORD 515 GRIDA, A50,' 1 2 3 4 5' 520 , A50,' 6 7 8 9 0' 525 , A50,' 1 2 3 4 5' 530 , A50,' 6 7 8 9 0' 535 , A32,' 1 2 3 ' 540 RECORD 545 GRIDB, A50,'12345678901234567890123456789012345678901234567890' 550 , A50,'12345678901234567890123456789012345678901234567890' 555 , A50,'12345678901234567890123456789012345678901234567890' 560 RECORD EOFMSG 565 , A28,'END OF INPUT FILE AT RECORD ' 570 EOFREC, D6 575 RECORD FOUNDM 580 , A21,'DATA FOUND IN RECORD ' 585 FNOM, D5 590 RECORD QOUT 595 , A13,'OUTPUT FILE: ' 600 OUTNAM, A6,'/NONE/' 605 RECORD QOUTU 610 , A6,'UNIT: ' 615 OUTUN, D2 620 RECORD QKEY 625 , A5,'KEY=<' 630 KEYL, D3,001 ;PERMANENT LOWER LIMIT OF KEY 635 , A1,',' 640 KEYH, D3,509 ;PERMANENT UPPER LIMIT OF KEY 645 , A1,'>' 650 RECORD QIN 655 , A12,'INPUT FILE: ' 660 RICN, A6 665 , A4 670 STATUS, A4 675 RECORD QINU 680 , A6,'UNIT: ' 685 INUNIT, D2 690 RECORD GBUFF 695 PAD, A1 700 GBUF, A132 705 PROC 3 ; (DAFT) DUMP AND FIX TECHNIQUE 710 LINCOUNT=55 715 TR4=" ' 720 QUOTE=TRICK4(3) 725 GO TO EOJ 730 START, PLUS= 735 SCAN=1 ;INITIALIZE SCAN 740 IF(SYSFLG .EQ. 1)GO TO SYSINP 745 DISPLAY (0,0,TRICK3) 750 ONERROR X 755 XMIT(KBD,COMMAND,EXIT) ;READ COMMAND FROM KEYBOARD 760 TERM, COM(129-2*#TRICK2(4)) = ';' 765 CALL FLOW 770 K = #COM(SCAN)-33 ;GET FIRST LETTER 775 IF (K .EQ. -5) GO TO START 780 CALL PASS ;GO TO NEXT ARGUMENT 785 GOTO (ADV,BACK,CHANGE,DISPLAY,EXIT,FINI,GOTO,HELP,INPUT,X,KEY,LIST,X), K 790 GOTO(X,OUTPUT,PUT,QUERY,REWIND,SEARCH,TYPE,UPDATE,VERSION,WRITE,XINF), K-13 795 X, XMIT(TTY,"BAD COMMAND.') 800 GOTO START 805 810 INPUT, IF (INFLG .NE. 0) CALL INFINI 815 CALL LABEL 820 INIT(IN,INPUT,NAME,UNIT) 825 RECNAM=NAME 830 INUNIT=UNIT 835 STATUS='OPEN' 840 UPFLAG= 845 INP2, RECNUM=0 850 RECLEN=510 855 INFLG=1 860 GOTO READ 865 INFINI, FINI(IN) 870 RETURN 875 880 OUTPUT, IF (OUTFLG.NE.0) GOTO OUT2ERR 885 CALL LABEL 890 INIT(OUT,OUTPUT,NAME,UNIT) 895 OUTNAM=NAME 900 OUTUN=UNIT 905 OUTFLG=1 910 OUTKNT= 915 GOTO START 920 OUT2ERR,XMIT(TTY,"OUTPUT FILE ALREADY OPEN') 925 GOTO START 930 935 UPDATE, IF (OUTFLG .NE. 0) GOTO OUT2ERR 940 IF (INFLG .NE. 0) CALL INFINI 945 CALL LABEL 950 INIT(IN,UPDATE,NAME,UNIT) 955 UPFLAG=1 ;NOTE SAID FACT 960 OUTFLG=1 965 OUTKNT=0 970 INUNIT=UNIT 975 OUTUN=UNIT 980 STATUS='UPDT' 985 RECNAM=NAME 990 OUTNAM=NAME 995 GOTO INP2 1000 READ, CALL REED ;READ NEXT INPUT RECORD 1005 GOTO START 1010 REED, IF (INFLG .NE. 1) GOTO NOIN 1015 IF (RECNUM .EQ. 0) GOTO RD2 1020 IF (PLUS .GT. 0) CALL WRIT 1025 RD2, IF (UPFLAG .NE. 0) GOTO READUP 1030 XMIT(IN,INREC,EOF) 1035 RD3, RECNUM=RECNUM+1 1040 GETLEN, RECLEN=(4096-64*#TRICK(3)-#TRICK(4))*2 1045 OLDLEN=RECLEN 1050 RETURN 1055 NOIN, XMIT(TTY,"NO INPUT FILE.') 1060 GOTO START 1065 READUP, RECNUM=RECNUM+1 1070 RDUP, ON ERROR ILLREC 1075 READ(IN,INREC(1,RECLEN+2),RECNUM) 1080 GOTO GETLEN 1085 EOF, EOFREC=RECNUM 1090 XMIT(TTY,EOFMSG) 1095 INFLG= 1100 STATUS='THRU' 1105 GOTO START 1110 ILLREC, XMIT(TTY,"ILLEGAL RECORD - CLOSING FILE') 1115 GOTO FINI 1120 1125 WRIT, IF (OUTFLG .NE. 1) GOTO NOUT 1130 IF (UPFLAG .NE. 0) GOTO WRITUP 1135 IF (RECLEN .EQ. 0) GOTO NOIN 1140 XMIT(OUT,INREC(1,RECLEN+2)) 1145 OUTKNT=OUTKNT+1 1150 RETURN 1155 NOUT, XMIT(TTY,"NO OUTPUT FILE') 1160 GOTO START 1165 WRITUP, WRITE(IN,INREC(1,RECLEN+2),RECNUM) 1170 RETURN 1175 1180 FLOW, IF (COM(SCAN) .NE. ' ') RETURN 1185 SCAN=SCAN+1 1190 GOTO FLOW