0010 REM"MBFSHL.ATR: A TAPE READER & WRITER 0020 BEGIN 0200 INPUT (0,ERR=200)'CS',"COLUMBIA UNIVERISITY KERMIT TAPE READER AND WRITE 0200:R",'LF',"(R)ead,(W)rite? ",'CI',X$; IF CTL>1 GOTO 9000 0210 ON INT((POS(X$="RrWw")+1)/2) GOTO 200,800,600 0599 REM"WRITE A TAPE 0600 INPUT"WRITE A TAPE TO SEND TO COLUMBIA UNIVERSITY",'LF',"ENTER FILE NAME 0600: ",IFILE$;IF CTL>1 CLOSE(3,IND=9);GOTO 9000 0610 CLOSE(4);OPEN(4,ERR=600)IFILE$ 0615 FID4$=FID(4); IF ASC(FID4$(10))=4 CLOSE(4);LISTPROGRAM IFILE$,"TEMP";OPE 0615:N(4)"TEMP" ELSE IF ASC(FID4$(10))>1 GOTO 600 0620 CLOSE(3);OPEN(3)"R0" 0625 IFILE=IFILE+1 0630 IF IFILE=1 CLOSE(3);OPEN(3,SEQ=0)"R0";DIM OUT$(80);OUT$(1)="VOL1KERMIT"; 0630:WRITERECORD(3,TBL=9950)OUT$;CLOSE(3);OPEN(3)"R0" 0640 DIM OUT$(80);OUT$(1)="HDR1",OUT$(5)=IFILE$,OUT$(22)="KERMIT0001"+STR(IFI 0640:LE:"0000")+"000100 88010 88010 000000" 0650 WRITERECORD(3,TBL=9950)OUT$;CLOSE(3);OPEN(3)"R0" 0660 OUT$(1)="HDR2D0819200300",OUT$(50)="00" 0670 WRITERECORD(3,TBL=9950)OUT$;CLOSE(3);OPEN(3)"R0" 0680 DIM OUT$(8192),OUT0$(0) 0690 READ(4,END=720)R$ 0700 A=LEN(R$);IF LEN(OUT0$)+4+A>8192 WRITERECORD(3,TBL=9950)OUT0$;OUT0$="" F 0700:I; OUT0$=OUT0$+STR(A+4:"0000")+R$;GOTO 690 0720 IF OUT0$>"" WRITERECORD(3,TBL=9950)OUT0$ 0730 OUT0$="" 0740 DIM OUT$(80);OUT$(1)="EOF1"+IFILE$,OUT$(22)="KERMIT0001"+STR(IFILE:"0000 0740:")+"000100 88010 88010 000000";CLOSE(3);OPEN(3)"R0";WRITERECORD(3,TBL=99 0740:50)OUT$ 0750 OUT$(1)="EOF2D0819200300";CLOSE(3);OPEN(3)"R0";WRITERECORD(3,TBL=9950)OU 0750:T$ 0760 PRINT "END OF FILE ",IFILE$,"..",IFILE 0770 GOTO 600 0799 REM"READ FROM TAPE 0800 INPUT "READ COLUMBIA UNIVERSITY TAPE",'LF',"ENTER STARTING SEQUENCE # ", 0800:SEQ0;IF CTL>1 GOTO 9000 0805 INPUT "ENTER OUTPUT DEVICE/FILE ",OFILE$;IF OFILE$>"" CLOSE(1);OPEN(1)OF 0805:ILE$;LOCK(1,ERR=806) ELSE GOTO 800 0810 CLOSE(3);FLAGP$="";OPEN(3,SEQ=SEQ0)"R0" 0820 DIM R$(8192);READRECORD(3,END=900,TBL=9960)R$ 0825 FLAGP$="FOUND" 0829 IF R$(1,4)="VOL1" PRINT (1)R$ 0830 IF POS(R$(1,4)="VOL1HDR1HDR2EOF1EOF2",4)>0 PRINT R$;IF R$(1,4)<>"HDR1" G 0830:OTO 820 ELSE B$=R$,FLAG$="",OP1$="";PRINT SEQ0,;INPUT "..CR TO CONTINUE, 0830: CTL III=HARDCOPY IT, CTL II TO SKIP ",'CI',*;L=0;IF CTL=2 OP1$="NEXT" E 0830:LSE IF CTL=3 FLAG$="PRINT";PRINT(1)R$; FI; GOTO 820 0840 IF OP0$>"" IF POS(OP0$=B$)<>5 GOTO 900 0850 IF OP1$="NEXT" GOTO 900 0860 A=NUM(R$(1,4)),A$=R$(1,A);PRINT A$;IF FLAG$="PRINT" PRINT (1)A$(5) 0870 R$=R$(A+1) 0880 L=L+1;IF L>20 IF FLAG$="" INPUT "CR TO CONTINUE,CTL II TO SKIP,CTL III T 0880:O HARDOPY IT ",'CI',*;L=0;IF CTL=2 OP1$="NEXT";GOTO 900 ELSE IF CTL=3 IF 0880: FLAG$="" FLAG$="PRINT";CLOSE(3);OPEN(3,SEQ=SEQ0)"R0";GOTO 820 0890 IF LEN(R$)>3 GOTO 860 0895 GOTO 820 0900 IF ERR=2 IF FLAGP$="" GOTO 950 0901 IF ERR=5 RETRY ELSE IF ERR<>2 ESCAPE 0905 SEQ0=SEQ0+1,FLAGP$="" 0910 CLOSE(3) 0920 OPEN(3,ERR=950)"R0" 0930 GOTO 820 0950 PRINT "END OF TAPE" 0960 GOTO 800 9949 REM CONVERSION TABLE: B4 ASCII TO STANDARD ASCII 9950 TABLE 7F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F 9950:202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243 9950:4445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F6061626364656667 9950:68696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F 9959 REM CONVERSION TABLE: STANDARD ASCII TO B4 ASCII 9960 TABLE 7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F 9960:A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3 9960:C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7 9960:E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF 16000 END